2009-02-19 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
2
3         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
4         delegate. Fixes #477396.
5
6 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
7
8         * reflection.c (create_custom_attr): Get rid of alloca.
9
10 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
11
12         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
13           Adding exception handling for all CCW calls.
14
15         Code is contributed under MIT/X11 license.
16
17 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
18
19         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
20
21         * marshal.c (emit_marshal_boolean): Add null checks to the new 
22         native->managed marshalling code. Fixes #476247.
23
24 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
25
26         * class.c (mono_class_get_vtable_entry): Move the addition of
27         static rgctx invoke wrappers for vtable methods here, this simplifies
28         a lot of code and causes fewer rgctx wrappers to be created.
29
30         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
31         name of the statistics to begin with an uppercase.
32
33 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
34
35         * reflection.c: Revert previous change as it breaks the build.
36         
37 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
38
39         * verify.c: Properly handle SZARRAY element type.
40
41         Fixes #474271.
42
43 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
44
45         * reflection.c (mono_image_create_method_token): Correctly encode
46         MethodDef MemberRefParent token.
47
48         Fixes #472845.
49
50 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
51
52         * image.c (mono_image_close): Delete the critical section before
53         freeing the memory holding it.
54
55 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
56
57         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
58         Fixes #476257.
59
60 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
61
62         * pedump.c (main): Call mono_marshal_init so pedump
63         doesn't crash.
64
65 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
66
67         * loader.c (method_from_memberref): Properly fix #474271 and
68         don't break the runtime bad.
69
70 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
71
72         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
73         (mono_domain_alloc0): Ditto.
74
75 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * loader.c (method_from_memberref): Don't abort if the array
78         method is not found. A regular loader failure is more informative
79         and correct.
80
81         Fixes #474271.
82
83 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
84
85         *loader.c: Guard MonoImage::method_cache/methodref_cache
86         using the image lock instead of the loader lock.
87
88         * metadata.h: Add comments about which fields are protected by
89         the image lock.
90
91 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
92
93         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
94
95         * generic-sharing.c (mono_method_construct_object_context): Remove the
96         wrapper_type == NONE assert, it is not needed.
97
98 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
99
100         * reflection.c (clear_cached_object): New helper function.
101         (mono_method_clear_object): New function to clear the cached reflection
102         objects for a dynamic method.
103
104         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
105         Partly fixes # 463323.
106         
107 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * class.c:
110         * loader.c:
111         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
112
113 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
114
115         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
116         take the image lock instead of the loader lock.
117
118         * metadata-internals.h: Export new functions.
119
120 2009-02-12  Miguel de Icaza  <miguel@novell.com>
121
122         * domain.c (app_config_parse): Remove another use of stat that is
123         not necessary as g_file_get_contents already does the presence
124         check. 
125
126 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
127
128         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
129
130         * marshal.c: Move the bstr handling code to cominterop.c.
131
132         * marshal.c: Remove some COM interop code missed previously.
133
134 2009-02-12  Miguel de Icaza  <miguel@novell.com>
135
136         More Paolo patches from the Wii port:
137         
138         * security.c: Remove ves_icall_System_Environment_get_UserName
139         from here.
140
141         * icall.c: And put ves_icall_System_Environment_get_UserName
142         here. 
143
144         * appdomain.c (mono_set_private_bin_path_from_config): Remove
145         redundant call to stat that was only used to test for the file
146         existence.   Patch from Paolo.
147
148         * gc.c (run_finalize): If COM is disabled, do not link in
149         mono_marshal_free_ccw.
150
151         * generic-sharing.c: Use alloca.h here as well.
152
153 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
154
155         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
156
157 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
158
159         * cominterop.c cominterop.h: New files.
160
161         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
162         function/typedefs which are needed by cominterop.c global.
163
164 2009-02-12  Mark Probst  <mark.probst@gmail.com>
165
166         * generic-sharing.c: Don't take the loader lock to guard image
167         mempool allocs.
168
169 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
170
171         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
172         called without the loader lock which is required to guard MonoImage:tokens.
173
174 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
175
176         * class.c:
177         * metadata.c:
178         * method-builder.c:
179         * marshal.c:
180         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
181
182 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
183
184         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
185         Rework the code to use regular mono_image_alloc/0.
186
187         * loader.c: Rework the code to use regular mono_image_alloc/0.
188
189         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
190
191 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
192
193         * object-internals.h : Fixing a typo in the 
194           MonoReflectionComVisibleAttribute struct.
195
196         * marshal.c (cominterop_com_visible): Check the implemented 
197           interfaces for ComImport.
198
199         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
200           assume that bools should be treated as VARIANTBOOLs.
201
202         * marshal.c (emit_marshal_boolean): Adding cases for 
203           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
204
205         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
206           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
207
208         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
209           should be treated as VARIANTBOOLs.    
210
211         Code is contributed under MIT/X11 license.
212
213 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
214
215         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
216         allocation with the image lock.
217
218 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
219
220         This patch is the last of a series to remove explicit reference of MonoImage::mempool
221         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
222
223         * object.c: Add mono_string_to_utf8_image.
224
225         * object-internals.h: Export mono_string_to_utf8_image.
226
227         * reflection.c: Rework all explicit references to the the image mempool to go thought
228         the mono_image_alloc set of functions.
229
230 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
231
232         This patch is the third of a series to remove explicit reference of MonoImage::mempool
233         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
234         and generics-sharing.c.
235
236         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
237         as first argument. Note that this function remains broken as it doesn't perform locking around the
238         mempool allocation.
239
240         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
241
242         * image.c: Add g_slist_append_image.
243
244         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
245         the supplied image for allocation. Move code into mono_metadata_field_info_full.
246
247         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
248         Fix all related code to do the same.
249
250         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
251
252         * metadata-internals.h: Fix the signatures.
253
254 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
255
256         This patch is the second of a series to remove explicit reference of MonoImage::mempool
257         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
258         and similar to work using MonoImage.
259
260         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
261         MonoMemPool.
262
263         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
264
265         * class.c (mono_metadata_signature_deep_dup): Same.
266
267         * class.c (inflate_generic_type): Same.
268
269         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
270
271         * metadata.c (mono_metadata_signature_dup_full): Same.
272
273         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
274         mono_metadata_signature_dup_full.
275
276         * metadata.c (mono_metadata_type_dup): Same.
277
278         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
279
280         * reflection.c: Same.
281
282         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
283
284         * metadata-internals.h: Fix the signatures.
285
286         * class-internals.h: Same.
287
288 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
289
290         This patch is the first of a series to remove explicit reference of MonoImage::mempool
291         and use mono_image_alloc set of functions instead. 
292
293         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
294         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
295         of a MonoMemPool.
296
297         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
298
299         * class.c (g_list_prepend_mempool): Removed.
300
301         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
302
303         * image.c: Add g_list_prepend_image.
304
305         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
306
307         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
308
309
310 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
311
312         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
313         mono_image_unlock.
314
315         * image.c (mono_image_init): Init the lock field.
316  
317         * image.c (mono_image_init): Cleanup the lock field.
318
319         * image.c: Add mono_image_(un)lock functions.
320
321 2009-02-11  Mark Probst  <mark.probst@gmail.com>
322
323         * class.c, class-internals.h: mono_method_get_context_general()
324         combines the functionality of mono_method_get_context() and
325         mini_method_get_context().
326
327         * generic-sharing.c, domain-internals.h:
328         mono_method_construct_object_context() and
329         mono_domain_lookup_shared_generic() moved from mini.
330
331         * icall.c (ves_icall_InternalInvoke): Handle the case where the
332         method doesn't have the correct instantiation because it's shared
333         generic code.  Fixes #473999.
334
335 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
336
337         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
338
339         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
340         
341 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
342
343         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
344
345         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
346
347         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
348         and recheck the cache for dups after it.
349
350         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
351
352         Fixes one of the deadlocks found in #473150.
353
354 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
355
356         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
357           For Win32, add additional break conditions for accept.
358
359         Code is contributed under MIT/X11 license.
360
361 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
362
363         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
364         lazily initialize the native wrapper cache.
365         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
366         cache, since they are different from the normal wrappers.
367
368         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
369
370         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
371         AOT compiled native wrappers.
372
373 2009-02-09  Geoff Norton  <gnorton@novell.com>
374
375         * appdomain.h:
376         * security-core-clr.c: Allow enabling core-clr from the embedding
377         API.
378
379 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
380
381         * socket-io.c: when requesting all the local ips, if there are no
382         interfaces up and running, MS returns 127.0.0.1.
383
384 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
385
386         * mono-perfcounters-def.h: processor time is an inverse time.
387         Fixes bug #468625.
388
389 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
390
391         * socket-io.c: an empty host name returns the list of local IPs.
392         Fixes bug #386637 part 1/2.
393
394 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
395
396         * verify.c (mono_class_interface_implements_interface): Call
397         mono_class_setup_interfaces ().
398         (merge_stacks): Ditto.
399
400 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
401
402         * class.c (mono_class_setup_interfaces): New function to lazily initalize
403         klass->interfaces.
404         (mono_generic_class_get_class): Don't initalize klass->interfaces.
405         (mono_generic_class_get_class): Ditto.
406
407 2009-02-06  U-QUACK\miguel  <miguel@quack>
408
409         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
410         they live in security.c
411
412         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
413         another bit from Paolo's code.
414
415 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
416
417         * object.c (build_imt_slots): Add a small optimization to avoid inflating
418         methods which will be discarded by add_imt_builder_entry ().
419
420         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
421         need to be boxed.
422
423         * loader.c: Add a statistics for the size of the memberref signature cache.
424         
425         * loader.c (find_cached_memberref_sig): New helper function.
426         (cache_memberref_sig): Ditto.
427
428         * loader.c: Cache the result of parsing memberref signatures, since otherwise
429         they will be parsed again for every generic instantiation, leading to unbounded
430         memory growth.
431
432 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
433
434         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
435         parameters of generic methods.
436
437         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
438         after the original method is copied to the inflated method.
439         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
440
441         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
442         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
443
444         * class.c metadata.c: Update after the changes above.
445
446 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
447
448         * metadata-verify.c: Simplified error handling and added
449         section table validation.
450
451 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
452
453         * class-internals.h (MonoClassExt): New structure containing rarely used
454         fields of MonoClass.
455         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
456         through a new 'ext' field.
457
458         * class.c (mono_class_alloc_ext): New helper function to allocate 
459         class->ext.
460
461         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
462
463 2009-02-05  Mark Probst  <mark.probst@gmail.com>
464
465         * object.c (mono_object_get_virtual_method): Properly inflate
466         generic methods.  Fixes #472692.
467
468 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
469
470         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
471         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
472         for the parent type, the created type must be ready to be used on a generic
473         instantiation.
474         We fill this_arg/byval_arg if the parent is a generic instance to make sure
475         we won't have duplicated entries in generic_inst_cache.
476
477         Fixes #469553.
478
479 2009-02-05  Miguel De Icaza  <miguel@novell.com>
480
481         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
482         replace with plain BSD per the comments on the bug MONO77637.
483
484 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
485
486         * class.c (mono_class_get_generic_class): New accessor function.
487         (mono_class_get_generic_container): Ditto.
488
489         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
490         fields, similar to the ones in MonoMethod.
491
492         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
493         (mono_class_create_from_typedef): Set klass->is_generic if needed.
494
495         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
496         
497         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
498         the same information as element_class->byval_arg.
499
500         * class.c reflection.c: Remove references to class->byval_arg.
501
502         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
503         klass->enum_basetype directly.
504
505         * verify.c metadata.c object.c icall.c reflection.c: Use 
506         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
507         directly.
508
509 2009-02-04  Miguel de Icaza  <miguel@novell.com>
510
511         * icall-def.h: Remove internal calls for sockets when
512         DISABLE_SOCKET is defined, file system writing features when the
513         OS only support reading and not writing data and Policy support if
514         the Policy is disabled.
515         
516         * image.c (do_mono_image_open): Apply Paolo's patches for using
517         mono_file_map_ APIs here.
518
519         * assembly.c: Add support for platforms to avoid prefix
520         auto-detection. 
521
522 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
523
524         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
525         warning.
526
527         * class.c (mono_class_inflate_generic_class): New helper function.
528
529         * class.c: Use mono_class_inflate_generic_class in a few places. Add
530         statistics for inflated methods/classes.
531
532         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
533
534         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
535         the call is made from Delegate.CreateDelegate () for the invoke method of
536         a delegate.
537
538         * loader.c: Add a statistics for the memory occupied by inflated signatures.
539
540         * metadata.c (mono_metadata_signature_size): New helper function.
541
542         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
543         generic instances.
544
545         * metadata.c (inflated_method_in_image): Avoid calling 
546         mono_method_signature () if the method does not already have a signature.
547
548 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
549
550         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
551         valuetype is compatible with target type, check by inheritance as a
552         VT is not really compatible with System.ValueType, for example.
553
554         * verify.c (do_invoke_method): Improve error message.
555
556         * verify.c (do_box_value): If boxing a nullable, use the type argument
557         on stack instead.
558
559         * verify.c (do_newobj): Improve error message.  
560
561         Fixes #469549.
562
563 2009-02-03  Miguel de Icaza  <miguel@novell.com>
564
565         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
566
567 2009-02-03  Mark Probst  <mark.probst@gmail.com>
568
569         * generic-sharing.c: Don't hold domain lock when calling
570         instantiate_other_info().  Fixes #471958.
571
572         * domain-internals.h, loader.c: Describe locking policy of domain
573         lock vs loader lock.
574
575 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
576
577         * verify.c (mono_delegate_signature_equal): Make it possible to check
578         first-arg-bound delegates to static method.
579
580         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
581         static methods with the first arg bound.
582
583         Fixes #469529.
584
585 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
586
587         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
588         errors.
589
590         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
591         under strict mode. Any type, when boxed can be seen as a reference type.
592
593         Fixes #469528.
594
595 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * object.h: The lower bound of an array is a signed integer value.
598         Introduce mono_array_lower_bound_t typedef. It should be used instead of
599         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
600
601         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
602         calculate the upper bound.
603         
604         Fixes #471252.
605
606 2009-02-02  Miguel de Icaza  <miguel@novell.com>
607
608         From Paolo's work, refactored, cleared up:
609         
610         * threadpool.c, icall.c: ifdef code that requires a working socket
611         stack.
612
613         * metadata.c (mono_metadata_field_info): Do not attempt to return
614         a value from a function declared as void.
615
616         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
617         from the console stack.
618
619         * assembly.c: use strrchr instead of rindex.
620
621         * class.c, object.c, marshal.c, icall.c, reflection.c: include
622         alloca.h on systems that have it.
623
624         * environment.c: Avoid code that uses stuff from
625         HAVE_SYS_UTSNAME_H
626         
627         * appdomain.c: Include sys/time.h.
628
629         * console-io.c: include sys/ioctl.h if it is available.
630
631 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
632
633         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
634
635         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
636         the method builder.
637
638         * marshal.c: Set mb->skip_visibility instead of setting it on the method
639         after it was created and cached, as the later is not thread safe.
640         
641 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
642
643         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
644         called while the debugging module is not initialized. Fixes #471669.
645
646 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
649
650         Fixes #471255.
651
652 2009-02-02  Mark Probst  <mark.probst@gmail.com>
653
654         * generic-sharing.c (lookup_or_register_other_info): Make sure the
655         loader lock is not taken while the templates lock is held.  Fixes
656         #471089.
657
658 2009-02-02  Mark Probst  <mark.probst@gmail.com>
659
660         * metadata.c (type_in_image): Added a check to fix a monodis
661         crash.
662
663 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
664
665         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
666         nullable arguments.
667
668         * object.c (mono_runtime_invoke_array): Ditto.
669         
670         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
671         freeing wrappers of dynamic methods.
672
673         * loader.c (mono_free_method): Call it. Fixes #463323.
674         
675         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
676         methods taking vtype/byref arguments, to fix yet another bug caused by
677         the sharing of runtime invoke wrappers. Partly fixes #471259.
678
679 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
680
681         * debug-mono-symfile.c (check_line): Return NULL instead of returning
682         <first file in file table>:1 when the IL offset does not have an associated
683         line number.
684
685 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
686
687         * mono-debug.c (mono_debug_lookup_locals): New function to return local
688         variable info for a method.
689
690         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
691         
692 2009-01-30  Jb Evain  <jbevain@novell.com>
693
694         * pedump.c: reuse code from monodis to make sure pedump honors
695         MONO_PATH, which is needed to verify net_2_1 assemblies.
696
697 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
698
699         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
700         there is no line number info.
701
702 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
703
704         Avoid some MonoType allocations
705         * reflection.c (mono_reflection_initialize_generic_parameter):
706         Reuse MonoType from param->pklass rather than allocating one.
707         (mono_dynamic_image_free): Update to changes.
708
709 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
710
711         Rearrange some code to improve consistency
712         * reflection.c (mono_reflection_setup_generic_class): Move body ...
713         (mono_reflection_initialize_generic_parameter): ... here.
714
715 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
716
717         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
718         with type constraints as an experiment.
719
720         * boehm-gc.c (on_gc_notification): Update mono_stats.
721
722 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
723
724         Avoid some allocations
725         * class-internals.h (_MonoGenericInst::type_argv): Convert from
726         pointer to tail array to avoid extra allocation.
727         * metadata.c (free_generic_inst): Update to changes.
728         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
729         on-stack struct.
730
731 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
732
733         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
734         return TRUE if the two type objects are the same.
735
736 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
737
738         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
739         (mono_class_native_size): Use klass->marshal_info->min_align instead of
740         klass->min_align, since klass->min_align contains the managed alignment,
741         while the native alignment can be different, like for longs on x86.
742         Fixes #469135.
743
744         * class-internals.h (MonoMarshalType): Add a min_align field.
745
746 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
747
748         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
749         the 1.0 format.
750
751 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
752
753         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
754         some comments about the usage of the used_regs field.
755
756         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
757         Fixes #469217.
758
759 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
760
761         * appdomain.c: return NULL instead of throwing FileNotFoundException
762         when LoadAssembly() fails.
763
764 2009-01-23  Mark Probst  <mark.probst@gmail.com>
765
766         * metadata.c (mono_metadata_generic_param_equal): Only compare the
767         image if the owner is NULL.  Fixes the AOT failures.
768
769 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
770
771         * metadata.c (mono_metadata_load_generic_params): Initialize the 
772         MonoGenericParam structure using memset so the image field is initialized
773         as well.
774
775 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
776
777         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
778         a plain store.
779
780 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
781
782         * class.c (mono_class_setup_vtable_general): In the generic instance
783         optimization, set method->slot for abstract virtual methods. Fixes part of
784         #467834.
785
786 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
787
788         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
789         which signals that the unloading has started but all appdomain services must
790         remain operational.
791
792         * appdomain.c (mono_domain_unload): The initial state for unloading now
793         is unloading_start and we switch to unloading after the managed call to
794         AppDomain::DomainUnload has finished.
795
796         The new unloading state has to be created because managed code in the
797         DomainUnload event can depend on things like the threadpool still working.
798         The domain must remain fully functional while the event executes.
799
800         This shown as an issue due to Process::WaitForExit, which waits for
801         async reads of stdout and stderr to complete. Since those are processed
802         in the threadpool the code deadlocks because the DomainUnload callback 
803         waits for the async read finished event, which should have been set by a
804         threadpool job but has been discarded due to the domain been in unload
805         state.
806
807 2009-01-21  Mark Probst  <mark.probst@gmail.com>
808
809         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
810         image must match.
811
812 2009-01-21  Mark Probst  <mark.probst@gmail.com>
813
814         * reflection.c (resolve_object): For fields, inflate the class and
815         then get the field in the inflated class.
816
817 2009-01-20  Mark Probst  <mark.probst@gmail.com>
818
819         * object-internals.h (struct _MonoException): Added a comment
820         explaining the new use of trace_ips.
821
822 2009-01-20  Mark Probst  <mark.probst@gmail.com>
823
824         * generic-sharing.c (inflate_other_data): Inflate array methods
825         correctly.
826
827         * loader.c, class-internals.h: Rename search_in_array_class() to
828         mono_method_search_in_array_class() and make it non-static.
829
830 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
831
832         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
833         Hopefully fixes #458168.
834
835 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
836
837         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
838         as it is performed elsewhere.
839
840         Code is contributed under MIT/X11 license
841
842 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
843
844         * mono-perfcounters-def.h: Add counters for asp.net requests total and
845         requests queued.
846         * object.c (mono_raise_exception): Increment the exceptions total
847         counter when an exception is thrown.
848         * class-internals.h: Add a location for storing the total number of
849         asp.net requests served.
850         * mono-perfcounters.c: Implement update support for asp.net counters
851         from the class libraries. Implement read support for asp.net counters
852         and exceptions total counter.
853
854 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
855
856         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
857         accessing klass->methods. Fixes #467385.
858
859 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
860
861         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
862         for byval arguments without an [Out] attribute. Fixes #467212.
863
864         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
865         Fix compilation under android.
866         
867         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
868         processed, scan them directly after they are copied, to achieve better locality
869         and cache usage.
870
871         * socket-io.c: Applied patch from Koushik Dutta
872         (koush@koushikdutta.com). Disable IPV6 when running under android.
873
874 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
875
876         * icall.c (ves_icall_InternalExecute): Add write barriers.
877
878         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
879         the GC code.
880
881         * sgen-gc.c: Implement write barriers in IL code.
882
883 2009-01-17  Geoff Norton  <gnorton@novell.com>
884
885         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
886
887 2009-01-17  Geoff Norton  <gnorton@novell.com>
888
889         * image.c: When unloading the image->references table, there can be gaps
890         in it.  Ensure that we iterate every entry to avoid leaking assembly references
891         when unloading an appdomain.
892
893 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
894
895         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
896         speed up ptr-in-nursery checks.
897
898         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
899         threads_lock () to prevent deadlocks.
900
901         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
902         does not need to be scanned during minor collections, since writes to it
903         must use write barriers.
904
905 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * metadata-verify.c: Add pe nt header verification.
908         
909 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
910
911         * gc.c: Fix a few warnings when using SGEN.
912
913 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
914
915         * metadata-verify.c: Add pe optional header verification.
916
917 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
918
919         * sgen-gc.c: Add support for user defined marker functions, used by
920         MonoGHashTable to avoid registering a GC root for every hash node.
921
922 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
923
924         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
925         non-pinned roots into separate hashes to avoid having to traverse them
926         in functions which are only interested in one kind.
927
928 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
929
930         * metadata-verify.c: Add pe header machine field verification.
931         
932 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * metadata-verify.c: Add pe header size verification.
935
936 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
937
938         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
939         using the GC, they don't contain references.
940
941         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
942
943 2009-01-13  Geoff Norton  <gnorton@novell.com>
944
945         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
946         AppDomains created on the native side can be cleaned up on the native side.
947
948 2009-01-13  Geoff Norton  <gnorton@novell.com>
949
950         * appdomain.c: Ensure that we call mono_context_init for the embedding api
951         as well as the managed api.
952
953 2009-01-13  Geoff Norton  <gnorton@novell.com>
954
955         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
956         with a MonoAppDomain initialized against it.
957
958 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
959
960         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
961         
962         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
963
964         * marshal.c: Avoid setting the exception clauses after a method has been entered 
965         into the wrapper caches. Fixes #465700.
966
967         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
968         method builder.
969         (mono_mb_create_method): Set the clauses from the method builder.
970
971 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
972
973         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
974         Patch from Makoto Kishimoto.
975
976 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
977
978         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
979         encoding them as ROOT_DESC_COMPLEX.
980         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
981
982 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
983
984         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
985         no longer point to the nursery.
986
987         * sgen-gc.c: Add a few comments/FIXMEs.
988         
989         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
990
991         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
992         initialization of the various _method variables thread safe. Fixes
993         #465377.
994
995 2009-01-12  Mark Probst  <mark.probst@gmail.com>
996
997         * domain.c, domain-internals.h: Remove the shared_generics_hash
998         and its lookup functions.
999
1000 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
1001
1002         * socket-io.c:  Fixing the MSVC build. 
1003
1004         Code is contributed under MIT/X11 license.
1005
1006 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
1007
1008         * metadata-verify.c: Add pe header watermark verification.
1009
1010 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
1011
1012         * metadata-verify.c: Add lfanew verification.
1013
1014 2009-01-12  Jb Evain  <jbevain@novell.com>
1015
1016         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
1017         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
1018
1019 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
1020
1021         * socket-io.c: Fix the build.
1022
1023         * environment.c: Fix an #ifdef.
1024
1025 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * threadpool.c (async_invoke_thread): Handle the wait function returning
1028         WAIT_IO_COMPLETION as well.
1029         (async_invoke_io_thread): Ditto.
1030
1031 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
1032
1033         * threads.c: Fixing the Windows build.
1034
1035         Code is contributed under MIT/X11 license.
1036
1037 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1038  
1039         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
1040         interrupt a wait.
1041         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
1042         the thread to wait again.
1043
1044 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
1045
1046         * metadata-verify.c: Initial skeleton of the metadata verifier.
1047
1048         * pedump.c: Add support for the metadata verifier.
1049
1050         * verify-internal.h: Export the whole assembly metadata verifier function.
1051
1052 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
1053
1054         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
1055
1056 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
1057
1058         * Makefile.am: Upgrade dtrace-prelink.sh location.
1059
1060 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
1061
1062         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
1063         well. Otherwise the shutdown deadlock that happens on unix will can happen
1064         as well.
1065         If the main thread code finishes too fast it's possible that the finalizer
1066         thread won't have executed yet, won't record itself as the finalizer thread
1067         and the shutdown sequence will wait on it forever.
1068
1069 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
1070
1071         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
1072         with MSVC.
1073
1074 2009-01-08  Miguel de Icaza  <miguel@novell.com>
1075
1076         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
1077         Robert Jordan for pointing this out.
1078
1079 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
1080
1081         * icall.c
1082         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
1083         ves_icall_System_IO_DriveInfo_GetDriveType.
1084
1085 2009-01-07  Miguel de Icaza  <miguel@novell.com>
1086
1087         * icall.c: Wrap calls to mono_strtod in CriticalSection
1088         invocations when using eglib, to work around #464316.
1089
1090 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
1091
1092         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
1093         return value of GetCurrentDirectory to never access unitialized memory.
1094
1095 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
1098         return value of GetCurrentDirectory and expand the buffer if needed.
1099
1100         Fixes #459094.
1101
1102 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
1103
1104         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
1105           Adding a call to mono_init_com_types.
1106
1107         Code is contributed under MIT/X11 license.
1108
1109 2009-01-07  Geoff Norton  <gnorton@novell.com>
1110
1111         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
1112         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
1113         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
1114         be the value of the ip buffer.
1115
1116 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
1119         interfaces_packed here.
1120
1121         Fixes part of #463294.
1122
1123 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
1126
1127         Fixes part of #463294.
1128
1129 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
1130
1131         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
1132         is a boxed complex as well.
1133
1134         Fixes part of #463294.
1135
1136 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
1137
1138         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
1139         control if a methodspec should be created for the generic method definition from external assemblies.
1140         Caching of methodspec is done using the handleref hash table.
1141
1142         Fixes #462592.
1143
1144 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
1145
1146         * loader.c (find_method): When searching the interfaces of a class
1147         check the transitive closure of implemented interfaces.
1148
1149         Fixes #463303.
1150
1151 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
1152
1153         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
1154         
1155 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
1158         interfaces calculation to fill_valuetype_array_derived_types.
1159
1160         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
1161         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
1162         for example.
1163
1164         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
1165         interfaces for valuetypes if needed.    
1166
1167         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
1168         for their basetype as well. Types are array expanded if rank is > 0.
1169
1170         Fixes #400716.
1171
1172 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
1173
1174         * socket-io.h : Changing the signature of
1175           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
1176           the blocking state.
1177
1178         * icall-def.h :  Changing the signature of
1179           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
1180
1181         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
1182           For Windows only.  Avoid blocking when calling accept by
1183           querying for a connection via select.  The loop also queries
1184           the thread state every 1000 micro seconds for the thread
1185           stop state.  This will avoid the process hanging on shutdown
1186           when using a TcpChannel that is never connected to.
1187
1188         Code is contributed under MIT/X11 license.
1189
1190 2008-12-30  Marek Safar  <marek.safar@gmail.com>
1191
1192         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
1193
1194 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
1195
1196         * class.c (get_implicit_generic_array_interfaces): Extract common
1197         code to a helper function making it a lot easier on the eyes.
1198
1199 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
1200
1201         * class.c (get_implicit_generic_array_interfaces): If the internal
1202         enumerator is an interface inflate System.Object instead of itself.
1203
1204         Fixes #461261.
1205
1206 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
1207
1208         * object.c (mono_runtime_invoke_array): Don't assert with
1209         byref nullable types.
1210
1211         * marshal.c (mono_marshal_get_runtime_invoke): To handle
1212         byref nullables we unbox the object and store it on the
1213         stack. 
1214         We can't use the boxed object since it is the T of Nullable<T>
1215         and the boxed representation of a nullable it's underlying type
1216         or null.
1217         We could cheat and create a boxed nullable and use the same
1218         machinery of other byref VTs but this feels like a hack and
1219         using the stack has the bonus of reducing heap pressure.
1220
1221         Fixes #461941.
1222
1223 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
1224
1225         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
1226         return value.
1227
1228         Fixes #461867.
1229
1230 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
1231
1232         * icall-def.h : Adding an internal call definition for 
1233           System.Environment.internalBroadcastSettingChange.
1234
1235         * icall.c : Adding a Windows only implementation to broadcast a 
1236           WM_SETTINGCHANGE when an environment variable has changed.
1237
1238         Code is contributed under MIT/X11 license.
1239
1240 2008-12-19  Mark Probst  <mark.probst@gmail.com>
1241
1242         * class.c, class-internals.h: Made
1243         mono_class_has_parent_and_ignore_generics() non-static.
1244
1245 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
1246
1247         * image.c: deal with the mmap failing when loading an image.
1248
1249 2008-12-17  Geoff Norton  <gnorton@novell.com>
1250
1251         * threadpool.c: Ensure that the io_queue_lock is initialized
1252         in all circumstances, as we always attempt to cleanup against it.
1253
1254 2008-12-17  Miguel de Icaza  <miguel@novell.com>
1255
1256         * icall.c (ves_icall_System_Environment_get_Platform): For
1257         compatibility reasons for existing client code we will keep
1258         returning 4 for a while.   
1259
1260         For how long will depend on the documentation being updated, and
1261         for us to give client code a chance to be updated.
1262
1263         This reverts the original decison on #433108 since we did not
1264         catch roughly 33 instances of the broken code in our own source
1265         code base, we did not catch failures on the buildbots, and QA did
1266         not bring this as a problem.
1267
1268         Only today I found some customer's code breaking due to our own
1269         class libraries not being fully updated and tracked it down to
1270         this change.  I am reverting it because if we could not even get
1271         our story straight in our own code base, how can we hope that our
1272         end user code be fixed?
1273
1274         As of this morning, our Wiki page that documents how to detect
1275         Unix had not been fixed.    
1276
1277 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
1280
1281         * class.c (mono_class_get_fields): Handle loading errors.
1282
1283 2008-12-12 Mark Mason <mmason@upwardaccess.com>
1284
1285         * metadata.c (mono_type_stack_size_internal): If SIZEOF_REGISTER > SIZEOF_VOID_P then use SIZEOF_REGISTER as the size and alignment of the stack slots.
1286         
1287 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1288
1289         * mono-perfcounters.c: avoid warning.
1290
1291 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
1292
1293         * reflection.c (ensure_runtime_vtable): Work on generic instances and
1294         make sure all interfaces have MonoClass::interface_id set.
1295
1296         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
1297         method table is property set.
1298
1299 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
1300
1301         * class.c: New function mono_class_setup_interface_id that setup
1302         MonoClass::interface_id if needed.
1303
1304         * class-internals.h: Export new function.
1305
1306 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
1307
1308         * class.c: Add code to sanity check the vtable after setup_vtable_general
1309         has done it's work.
1310
1311 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1312
1313         * icall.c: make Assembly.GetExecutingAssembly work properly when
1314         reflection is used to invoke the method.
1315         Bug #321781 fixed.
1316
1317 2008-12-11  Mark Probst  <mark.probst@gmail.com>
1318
1319         * metadata/generic-sharing.c: Look for constraints in all type
1320         arguments, not just the first one.
1321
1322 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1323
1324         * appdomain.c: return the correct CodeBase for an Assembly instance
1325         that was loaded from the shadow-copy directories.
1326         Bug #458190 fixed.
1327
1328 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
1329
1330         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
1331
1332         * sgen-gc.c (check_object): New debugging helper function.
1333
1334         * object.c: Fix calls to mono_value_copy_array ().
1335
1336 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * class.c (mono_class_setup_fields): If working on an inflated class
1339         first check if the generic definition did init with success.
1340
1341         Fixes #445361.
1342
1343 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         pedump.c (main): Fix a warning.
1346
1347 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
1348
1349         * object-internals.h : Adding a definition for 
1350           MonoReflectionComVisibleAttribute.
1351
1352         * marshal.c (cominterop_com_visible) :  Method added to check the 
1353           ComVisible attribute of a class.
1354
1355         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
1356           cominterop_raise_hr_exception added to consolidate common code 
1357           to raise hr exceptions.
1358
1359         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
1360           if a managed class should support IDispatch.
1361
1362         * marshal.c 
1363           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
1364           Added additional checks for managed object when getting 
1365           an IDispatch interface.
1366
1367         Code is contributed under MIT/X11 license.
1368
1369 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
1370
1371         pedump.c (main): Handle mono_get_method () returning NULL. 
1372
1373 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1374
1375         * marshal.h: Fix a warning.
1376
1377 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
1378
1379         * marshal.c : Adding cominterop_release_all_rcws to release all
1380           runtime callable wrappers held by the runtime.
1381
1382         * marshal.h : Adding declaration for cominterop_release_all_rcws.
1383           
1384         Code is contributed under MIT/X11 license.
1385
1386 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * metadata.c (mono_image_alloc_lock): New helper function.
1389         (mono_image_alloc0_lock): Ditto.
1390
1391         * metadata.c: Use the alloc_lock () helper functions for allocating
1392         memory from the image mempool.
1393
1394 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
1395
1396         * class.c (mono_class_from_generic_parameter): Document it's
1397         locking behavior. Fix double checked locking here, we stored in
1398         param->pklass a partially initialized MonoClass and no membar was used.
1399
1400 2008-12-05  Marek Habersack  <mhabersack@novell.com>
1401
1402         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
1403         (3) functions are present in the C library use them to do the
1404         job. If they are absent, make sure that the sum of int_part and
1405         dec_part is rounded before returning. This is necessary due to the
1406         division of dec_part by the power of 10 before the final addition
1407         is performed - if the result is not rounded in some cases it will
1408         yield invalid results.
1409
1410 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
1411
1412         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
1413         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
1414         instruction instead of a pointer constant.
1415
1416 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * loader.c (mono_method_get_header): Do most of the work outside the
1419         loader lock, to avoid assembly load hook deadlocks.
1420
1421         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
1422         (mono_metadata_parse_type_full): Ditto.
1423
1424 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
1425
1426         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
1427         Make the stack depth fixed. Ensure proper argument passing to the backtrace
1428         funtions. Finally, use a lock to produce well ordered output.
1429
1430         The lock looks silly, as all calls to the corlib mempool should be guarded
1431         with the loader lock, but for some reason this fact doesn't help. 
1432
1433         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
1434
1435 2008-12-02  Mark Probst  <mark.probst@gmail.com>
1436
1437         * socket-io.c: 64 bit big-endian fixes.
1438
1439 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1440
1441         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
1442         targets that require strict compatibility between the types.
1443
1444         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
1445         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
1446         Kill the strict argument and create a new one valuetype_must_be_boxed.
1447
1448         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
1449         state that all valuetypes must be boxed.
1450
1451         Fixes #448560.
1452
1453 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
1454
1455         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
1456         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
1457
1458         Contributed under MIT/X11 license.
1459
1460 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
1461
1462         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
1463         the inflate_generic_type machinery should handle it.
1464
1465         This avoids a crash when the field's flags is zero and it's type is
1466         a primitive.
1467         What happens is that mono_metadata_parse_type_full will see that opt_attrs
1468         is zero and will return one of the cached built-in primitive types. Since
1469         those types live in read-only memory, the code that copies it crashes.  
1470
1471 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1472
1473         * object.c: Don't put function descriptors into generalized IMT
1474         thunks.
1475
1476 2008-11-28  Mark Probst  <mark.probst@gmail.com>
1477
1478         * class.c: Enable generic code sharing on PPC64.
1479
1480 2008-11-27  Mark Probst  <mark.probst@gmail.com>
1481
1482         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
1483         from mini/mini.c.
1484
1485         * generic-sharing.c: Allocate the method template slists from the
1486         image mempool so it doesn't leak.
1487
1488 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
1489
1490         * class.c (generic_array_methods): Release the linked list.
1491
1492 2008-11-27  Mark Probst  <mark.probst@gmail.com>
1493
1494         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
1495         invocation to g_utf16_to_utf8().
1496
1497 2008-11-26  Mark Probst  <mark.probst@gmail.com>
1498
1499         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
1500         arguments on big endian archs.
1501
1502 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1503
1504         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
1505         the type name (test added in corlib).
1506
1507 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1508
1509         * pedump.c: initialize perf. counters. Fixes a segv.
1510
1511 2008-11-25  Martin Baulig  <martin@ximian.com>
1512
1513         * mono-debug-debugger.c
1514         (mono_debugger_runtime_invoke): Return the exception object if an
1515         exception was thrown.  Visual Studio displays the exception object
1516         in the locals window.
1517
1518 2008-11-24  Mark Probst  <mark.probst@gmail.com>
1519
1520         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
1521         ftnptr.
1522
1523 2008-11-24  Mark Probst  <mark.probst@gmail.com>
1524
1525         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
1526         MONO_TYPE_U are sizeof (gpointer), too.
1527
1528 2008-11-24  Mark Probst  <mark.probst@gmail.com>
1529
1530         * marshal.c (mono_type_native_stack_size): Fixed size and
1531         alignment for reference types.
1532
1533 2008-11-23  Mark Probst  <mark.probst@gmail.com>
1534
1535         * class.c (mono_class_generic_sharing_enabled): Disable generic
1536         code sharing for PPC64.
1537
1538 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
1539
1540         * icall.c (mono_method_get_equivalent_method): Make sure
1541         method->klass->methods is inited before looping over it.
1542
1543 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1544
1545         * object.c: when calling ExecuteAssembly in a newly created domain,
1546         the configuration file and application base are already set up.
1547         Bug #446353 take 2 fixed.
1548
1549 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
1552         Fixes #444715. Fix a warning.
1553
1554 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
1555
1556         * appdomain.c: write the full path of the assembly to the .ini file
1557         created when "shadow-copying"
1558         Bug #446353 fixed.
1559
1560 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
1563         if signature==FALSE.
1564
1565 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
1566
1567         * marshal.h : Fix the cygwin build.
1568            marshal.c:12442: undefined reference to `_IID_IMarshal'
1569           
1570         Code is contributed under MIT/X11 license.
1571
1572 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
1573
1574         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
1575           free threaded marshaler when QueryInterface is called on a COM callable
1576           wrapper requesting the IMarshal interface.
1577           
1578         Code is contributed under MIT/X11 license.
1579
1580 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
1581
1582         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
1583
1584         * reflection.c (mono_type_get_object): Special case the very common
1585         void type.
1586
1587         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
1588         hold typeof(void).
1589
1590 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
1591
1592         * process.h : Adding method declaration for
1593           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
1594           
1595         * process.c : Adding implementation for
1596           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
1597           
1598         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
1599           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
1600
1601         Code is contributed under MIT/X11 license.
1602
1603 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * appdomain.c (unload_thread_main): Clean up threadpool by
1606         calling mono_thread_pool_remove_domain_jobs.
1607
1608         * domain-internals.h (struct _MonoDomain): Add new fields to
1609         help coordinate the cleanup of the threadpool.
1610
1611         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
1612         that cleans up the threadpool of all jobs associated with an appdomain.
1613         It does that by cleaning up the queues and making sure all active
1614         threads are accounted.
1615
1616         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
1617         unloaded or in the process of. Take this is such way that there is
1618         no race condition between another thread starting the unload and the
1619         current thread acknowledging it.
1620
1621         * threadpool.c (async_invoke_thread): Same.
1622
1623         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
1624         firing the new thread.
1625
1626         * threadpool.c (start_tpthread): Same.
1627
1628         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
1629
1630         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
1631
1632 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
1633
1634         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
1635         Add support for DuplicateHandle.
1636         
1637         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
1638         Add support for DuplicateHandle.
1639         
1640         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
1641         Add support for DuplicateHandle.
1642
1643         Code is contributed under MIT/X11 license.
1644
1645 2008-11-06  Mark Probst  <mark.probst@gmail.com>
1646
1647         * class-internals.h: Make min_align into a whole byte.
1648
1649         * class.c: Set min_align for SIMD types to 16.
1650
1651 2008-11-05  Geoff Norton  <gnorton@novell.com>
1652
1653         * attach.c: Default the attacher to enabled for all cases including
1654         embedded.
1655
1656 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
1657
1658         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
1659         change r117650.
1660
1661 2008-11-04  Mark Probst  <mark.probst@gmail.com>
1662
1663         * monitor.c, monitor.h: New function for querying offsets of
1664         members of MonoThreadsSync.
1665
1666 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
1669         to speed up this function and to avoid the boundless memory growth caused by
1670         the signature_dup () calls.
1671
1672 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
1673
1674         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
1675         wrapper.
1676
1677         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
1678         by 1 bit.
1679
1680         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
1681
1682 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1683
1684         * appdomain.c:
1685         * domain-internals.h: made mono_set_private_bin_path_from_config()
1686         "internal".
1687         * object.c: call the above function after setting the configuration
1688         file path for the root domain.
1689         Fixes bug #314478.
1690
1691 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1692
1693         * assembly.c: when the assembly is loaded from an absolute path, end
1694         basedir with a directory separator.
1695         Bug #440781 fixed.
1696
1697 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1698
1699         * monitor.c (mono_monitor_get_fast_enter_method): If
1700         CompareExchange is not available, don't create the fastpath
1701         instead of asserting.  (The method is missing in the 1.1 profile.)
1702
1703 2008-10-30  Mark Probst  <mark.probst@gmail.com>
1704
1705         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
1706
1707         * monitor.c, monitor.h: Code for generating Monitor.Enter and
1708         Monitor.Exit IL fastpaths.
1709
1710 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1711
1712         * class.c (mono_class_create_from_typedef): Added Vector2ul.
1713
1714 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
1715
1716         * class.c (mono_class_create_from_typedef): Added Vector2l.
1717
1718 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
1719
1720         * class.c (mono_class_create_from_typedef): Added Vector2d.
1721
1722 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1723
1724         * appdomain.c: translate \ into / for cache_path.
1725         * domain-internals.h: new mono_is_shadow_copy_enabled().
1726         * icall.c: (fill_reflection_assembly_name) do the same path
1727         manipulations that get_code_base does.
1728         (get_code_base) use mono_is_shadow_copy_enabled.
1729
1730 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1731
1732         * appdomain.c: shadow-copied assemblies go to CachePath +
1733         ApplicationName when both are set. DynamicBase has nothing to do with
1734         shadow copies.
1735         Bug #406877 fixed.
1736
1737 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
1740         STANDALONESIG table.
1741
1742         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
1743         standalone signatures.
1744
1745         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
1746         comparison code: instead of comparing the signatures using a custom
1747         equals function, transform them to a common signature and compare that. This
1748         works better with AOT.
1749
1750 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
1753
1754         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
1755         call for generic instances.
1756         (mono_class_setup_properties): Call setup_properties () before accessing
1757         gklass->properties.
1758
1759         * class.c (mono_class_get_virtual_methods): New helper function to iterate
1760         over the virtual methods of a class using metadata if possible, avoiding the
1761         creation of MonoMethod's for non-virtual methods.
1762         
1763         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
1764         get_virtual_methods () to iterate over the virtual methods of classes.
1765
1766 2008-10-25  Martin Baulig  <martin@ximian.com>
1767
1768         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
1769
1770 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1771
1772         * class.c (mono_class_create_from_typedef): Added Vector4i.
1773
1774 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1775
1776         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
1777         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
1778         special-casing applies to eliminate the call completely.
1779
1780 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1781
1782         * class.c (mono_class_create_from_typedef): Added Vector8s.
1783
1784 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1785
1786         * class.c (mono_class_create_from_typedef): Added Vector16sb.
1787
1788 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1789
1790         * icall.c: get rid of annoying warning.
1791
1792 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1793
1794         * threadpool.c: in 1.x, if you change the background status of the
1795         threadpool thread, it's not reset.
1796         Remove unnecessary calls to SetState.
1797
1798 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1799
1800         * threadpool.c: asynchronously create a set of idle threads upon first
1801         use of the threadpool. SetMinThreads will now start the appropriate
1802         number of idle threads if they are not already running. The default is
1803         1 threadpool thread per CPU. Increased the maximum number of threads
1804         per CPU to 10.
1805
1806 2008-10-22  Martin Baulig  <martin@ximian.com>
1807
1808         Revert r116521 from Zoltan, it breaks the debugger:
1809
1810         * class.c (mono_class_get_virtual_methods): New helper function to iterate
1811         over the virtual methods of a class using metadata if possible, avoiding the
1812         creation of MonoMethod's for non-virtual methods.
1813         
1814         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
1815         get_virtual_methods () to iterate over the virtual methods of classes.
1816
1817 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1818
1819         * threads.c: when creating a threadpool thread, set its state to
1820         'background'.
1821         * threadpool.c: reset the background state of a threadpool thread
1822         after finishing each work item
1823         Bug #437888 fixed.
1824
1825 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
1828         
1829         * class.c (mono_class_setup_vtable_general): Add an optimized version for
1830         generic instances which works by inflating the methods in the container
1831         class's vtable.
1832
1833         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
1834         variant which doesn't make a copy if no inflation was done.
1835         (mono_class_setup_fields): Use it.
1836
1837         * metadata.c (mono_metadata_get_shared_type): New helper function to
1838         return a shared instance of a given MonoType.
1839
1840         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
1841         a copy of most non-generic types.
1842
1843 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
1844
1845         * threadpool.c: remove one more GetSystemInfo () call.
1846
1847 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
1848
1849         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
1850         use the code in mono-proclib.h to get processor information.
1851
1852 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1853
1854         * appdomain.c: fixed the logic that determines whether assemblies in a
1855         directory are "shadow-copied" or not. Bug #433483 fixed.
1856
1857 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
1858
1859         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
1860         warning.
1861
1862 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
1865         returning a vtype.
1866
1867         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
1868         reflection.c: Use mono_field_get_name () for accessing a field's name.
1869
1870         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
1871         class.c
1872
1873         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
1874         field.
1875
1876         * loader.c (find_method_in_class): Reenable the metadata optimization by
1877         not using it for generic instances.
1878
1879         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
1880         data/def_type fields from MonoClassField into a separate structure.
1881         (struct MonoClassField): Remove data/def_type fields.
1882         (struct _MonoClass): Add a 'field_def_values' array to store the default
1883         values/RVA for fields.
1884
1885         * class.c reflection.c: Update after the changes.
1886         
1887         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
1888         for accessing field->data.
1889
1890         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
1891
1892         * loader.c (find_method_in_class): Revert the last change for now as
1893         it breaks Mono.C5 unit tests.
1894
1895         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
1896         'field_generic_types' and 'field_objects' which contain the information
1897         previously stored in MonoInflatedField.
1898         (MonoInflatedField): Delete.
1899         (struct _MonoClassField): Delete 'generic_info' field.
1900
1901         * reflection.c: Store the information which was previously in 
1902         field->generic_info in MonoDynamicGenericClass instead.
1903
1904         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
1905         MonoClassField changes.
1906
1907 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
1908
1909         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
1910         store the value inside the data array of the MonoMethodWrapper.
1911         This saves memory, is faster and fixes the lifetime issues (methods
1912         were never removed from the hash previously). May also fix bug#436996.
1913
1914 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
1917         generic instances, compute the type from the generic definition instead of
1918         looking in field->generic_info.
1919
1920         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
1921         for inflated fields, the only user was get_fieldref_token () which no
1922         longer needs it.
1923
1924         * class.c (mono_class_init): Revert the last change as it seems to cause
1925         crashes.
1926
1927         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
1928         bytes on 64 bit platforms.
1929
1930         * object.c (mono_class_create_runtime_vtable): Fix a warning.
1931         
1932         * object.c (mono_class_create_runtime_vtable): Don't initalize
1933         field->data/field->def_type here, it is done lazily by 
1934         mono_class_get_field_default_value ().
1935
1936         * icall.c (ves_icall_get_enum_info): Call 
1937         mono_class_get_field_default_value () instead of directly accessing
1938         field->data and field->def_type.
1939
1940         * object.c (get_default_field_value): Ditto.
1941
1942         * class.c (mono_field_get_data): Ditto.
1943         
1944         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
1945         call for generic instances.
1946
1947         * loader.c (find_method_in_class): If klass != from_class, then inflate
1948         the method with the context of from_class, since the caller assumes this.
1949
1950 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
1953         for accessing method->slot.
1954
1955 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
1956
1957         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
1958
1959 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * class.c (mono_method_get_vtable_index): Use
1962         mono_method_get_vtable_slot () for accessing method->slot.
1963
1964         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
1965         accessing klass->methods.
1966
1967         * class.c (mono_method_get_vtable_slot): New helper function.
1968         (mono_class_get_vtable_entry): Ditto.
1969         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
1970         accessing method->slot.
1971
1972         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
1973         method to get_inflated_method ().
1974
1975         * class.c (mono_class_get_inflated_method): New helper method to obtain
1976         a method of an inflated class without calling setup_methods ().
1977         (mono_class_get_cctor): Use get_inflated_method.
1978
1979         * generic-sharing.c (mono_class_get_method_generic): Ditto.
1980         
1981         * marshal.c image.c: Lazily create all the marshal caches.
1982
1983         * image.c (mono_image_init): Move initialization of runtime_invoke
1984         caches to marshal.c.
1985
1986         * marshal.c (get_cache): New helper function to lazily initialize a 
1987         wrapper cache.
1988         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
1989
1990         * debug-helpers.c (mono_method_full_name): Include generic arguments.
1991
1992 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
1993
1994         * loader.c: fixed check for interface type.
1995
1996 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
1997
1998         * appdomain.c: check for NULL setup before it's referenced.
1999
2000 p
2001 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2002
2003         * class.c: remove the unused old vtable setup code.
2004
2005 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2006
2007         * class.c: don't depend on interface order in
2008         setup_interface_offsets (bug #435777).
2009         * reflection.c: sort the InterfaceImpl table (patch from
2010         Jb Evain  <jbevain@novell.com>).
2011
2012 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
2013
2014         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
2015         the low level assemblies lock.
2016
2017 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
2018
2019         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
2020         object.c, reflection.c, socket-io.c, threads.c: introduced
2021         mono_framework_version () to return the major framewrok version,
2022         changed the code that was using more complex patterns to use it.
2023         Return the correct value for PlatformID for OSX.
2024
2025 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
2026
2027         * icall-def.h, process.h, process.c: added an icall to get info about
2028         processes using mono-proclib.
2029
2030 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
2031
2032         * mono-perfcounters.c: use the mono-proclib functions to
2033         access process information.
2034
2035 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2036
2037         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
2038         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
2039         reflection.c: remove rawbuffer usage: mmap support is more sanely
2040         provided by utils/mono-mmap.
2041
2042 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
2043
2044         * gc.c: use posix semaphores when possible so that
2045         mono_gc_finalize_notify() is signal safe.
2046
2047 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
2050         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
2051         be #ifdef-ed out, the linker will remove the rest.
2052
2053         * marshal.c: Implement DISABLE_COM.
2054
2055         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
2056
2057 2008-10-11  Miguel de Icaza  <miguel@novell.com>
2058
2059         * locales.c (string_invariant_compare_char): Optimization: do not
2060         call g_unichar_type unless we actually need the information.
2061
2062 2008-10-10  Mark Probst  <mark.probst@gmail.com>
2063
2064         * object.c, class-internals.h: Also create remoting trampolines
2065         for generic methods.  Pass the domain to the remoting trampoline
2066         creation function, too.
2067
2068 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
2071
2072 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2073
2074         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
2075         Vector4ui.
2076
2077 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2078
2079         * assembly.c:
2080         * locales.c: remove the use of g_strdown. Fixes bug #322313.
2081
2082 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
2083
2084         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
2085         for the least possible amount of time (extending the fix in r113458).
2086
2087 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
2088
2089         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
2090
2091 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
2092
2093         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
2094         as possible simd intrinsic types.
2095         Optimized the test to check for the common prefix first.
2096
2097 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
2098
2099         * class.c: back out part of a broken optimization committed on
2100         May 23th (bug #433908).
2101
2102 2008-10-09  Mark Probst  <mark.probst@gmail.com>
2103
2104         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
2105         Win32.  Should fix #432388 for most cases until we have the new
2106         profiler on Win32.
2107
2108 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
2111         instead of using inst->id so the hash is stable for AOT.
2112
2113 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2114
2115         * appdomain.c:
2116         * icall.c: create a .ini file for shadow-copied assemblies that
2117         contains the location of the original assembly. Use this to return the
2118         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
2119         Also fix the number of '/' for windows when returning the CodeBase.
2120         Fixes bug #430920.
2121
2122 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
2123
2124         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
2125
2126         Code is contributed under MIT/X11 license.
2127
2128 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
2129
2130         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
2131           if if the class vtable needs initialized.
2132
2133         Code is contributed under MIT/X11 license.
2134
2135 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
2136
2137         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
2138           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
2139           STRING->BSTR, and CLASS->INTERFACE.
2140
2141         Code is contributed under MIT/X11 license.
2142
2143 2008-10-07  Marek Habersack  <mhabersack@novell.com>
2144
2145         * sysmath.h: changed the declaration of the
2146         ves_icall_System_Math_Round2 icall by adding an extra
2147         away_from_zero parameter.
2148
2149         * sysmath.c (ves_icall_System_Math_Round2): added support for
2150         away from zero rounding. The icall now takes an extra boolean
2151         parameter to signal that away from zero operation is requested.
2152
2153 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
2156         the delegate klass so it can work with full-aot.
2157         (mono_marshal_get_delegate_end_invoke): Ditto.
2158         (mono_marshal_get_delegate_invoke): Ditto.
2159
2160 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
2161
2162         * gc.c, attach.h, attach.c: remove a bad pattern:
2163         add_finalizer_callback () is not implemented correctly, it can't
2164         without adding more overhead to the finalizer loop and it's not
2165         even needed, since we know exactly what we need to call, so there is
2166         no need to do so through an expensive function pointer.
2167
2168 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
2171         for the no-gc case.
2172         * attach.c (mono_attach_init): Remove the #ifdef.
2173
2174 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
2175
2176         * attach.c (mono_attach_init): Don't use
2177         mono_gc_add_finalizer_thread_callback when compiling without GC.
2178         Fixes #432306.
2179         
2180         Code is contributed under MIT/X11 license.
2181
2182 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
2183
2184         * class.c (mono_class_create_from_typedef): Remove the 
2185         #ifndef DISABLE_SIMD stuff.
2186
2187 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * class-internals.h (MonoClass): Added simd_type bit field.
2190
2191         * class.c (mono_class_create_from_typedef): Check if type is a simd
2192         intrinsic.
2193
2194 2008-10-03  Mark Probst  <mark.probst@gmail.com>
2195
2196         * object.c (mono_method_add_generic_virtual_invocation): Only add
2197         instantiations to the thunk whose count is at least as large as
2198         the threshold.
2199
2200 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2201
2202         * icall.c: changed the Type of the exception thrown when trying to
2203         invoke a constructor on an abstract class. Part of the fix for bug
2204         #324185.
2205
2206 2008-10-02  Mark Probst  <mark.probst@gmail.com>
2207
2208         * class.c, class-internals.h (mono_method_get_vtable_index): New
2209         function which returns the index into the vtable and properly
2210         handles inflated virtual generic methods.
2211
2212 2008-10-01  Mark Probst  <mark.probst@gmail.com>
2213
2214         * object.c, domain.c, object-internals.h, domain-internals.h:
2215         Generalize IMT thunk machinery to also handle thunks for virtual
2216         generic method invokes.  When a virtual generic method is invoked
2217         more than a number of times we insert it into the thunk so that it
2218         can be called without lookup in unmanaged code.
2219
2220         * generic-sharing.c, class-internals.h: Fetching a
2221         MonoGenericInst* for a method from an (M)RGCTX.
2222
2223 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * marshal.c (emit_marshal_string): Applied a variant of a patch by
2226         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
2227         marshalling. Fixes #431304.
2228
2229 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
2230
2231         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
2232           handle when ref is specified without In or Out.
2233
2234         Code is contributed under MIT/X11 license.
2235
2236 2008-09-30  Mark Probst  <mark.probst@gmail.com>
2237
2238         * loader.c (mono_get_method_constrained): Don't expand method with
2239         the class's context, because it's already a method of that class.
2240
2241 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
2242
2243         * attach.c : should be correct build fix.
2244
2245 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * attach.c: Fix the previous change.
2248
2249 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
2250
2251         * attach.c : quick w32 build fix.
2252
2253 2008-09-27  Miguel de Icaza  <miguel@novell.com>
2254
2255         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
2256         crashes MonoDevelop: #430455.
2257
2258 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * domain-internals.h (struct _MonoDomain): Move most fields used only by
2261         the JIT do MonoJitDomainInfo in ../mini/mini.h.
2262
2263         * domain.c: Remove initialization/cleanup of the removed fields.
2264
2265 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2266
2267         * class.c (mono_class_generic_sharing_enabled): Enable generic
2268         code sharing for PPC.
2269
2270 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
2271
2272         * attach.c : Fixing the Windows builds.
2273
2274         Code is contributed under MIT/X11 license.
2275
2276 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
2279         the default generic sharing mode to 'all'.
2280
2281 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2282
2283         * generic-sharing.c, class-internals.h: New function for checking
2284         whether a method needs a static RGCTX invoke wrapper.  A few
2285         funtions moved from mini/generic-sharing.c.
2286
2287         * icall.c: New function used.
2288
2289 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2290
2291         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
2292         Static RGCTX invoke wrapping applies to value type methods, too.
2293
2294         * class.c (mono_class_setup_vtable_general): In generic-shared
2295         value types, wrap methods with a static RGCTX invoke wrapper.
2296
2297 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2298
2299         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
2300         osx build.
2301
2302 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2303
2304         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
2305         register a callback which is called when the finalizer thread is woken
2306         up.
2307         (finalizer_thread): Call the callback if it exists.
2308
2309         * attach.h attach.c: New files, implementing the attach mechanism.
2310
2311         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
2312         
2313         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
2314         by the previous change.
2315
2316 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
2317
2318         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
2319         loader.c, marshal.c, metadata-internals.h, metadata.c,
2320         method-builder.c, object.c, reflection.c: introduced specific functions
2321         to allocate from the domain and image mempools and cleaned up most of
2322         the code to use them (still missing a few in reflection.c).
2323         Keep the loader bytes counter updated.
2324
2325 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
2326
2327         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
2328         loader-related counters.
2329
2330 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
2331
2332         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
2333         added more MS-compatible counters.
2334
2335 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * class.c (mono_class_setup_fields): Call setup_fields before accessing
2338         class->blittable. Fixes #428217.
2339
2340 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * reflection.c (mono_image_get_field_on_inst_token): Call 
2343         field_encode_signature () since that handles custom modifiers too.
2344         Fixes #424663.
2345
2346 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
2347
2348         * reflection.c (add_custom_modifiers): New helper function to merge custom
2349         modifiers stored in objects to a MonoType.
2350         (fieldref_encode_signature): Encode custom modifiers.
2351         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
2352         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
2353
2354 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
2355
2356         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
2357         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
2358         64-bit IL only images because imports are not resolved for IL only images.
2359         Special thanks to Bill Holmes for finding this bug and testing the patch.
2360         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
2361
2362         Contributed under MIT/X11 license.
2363
2364 2008-09-19  Miguel de Icaza  <miguel@novell.com>
2365
2366         * mono-config.c (dllmap_start): Add support for the bits keyword
2367         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
2368
2369 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2370
2371         * reflection.c (inflate_mono_method): When the class the method is
2372         to be inflated for is itself not inflated, just return the method.
2373
2374 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
2375
2376         * mono-perfcounters.c: use more user friendly process instance names.
2377
2378 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
2379
2380         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
2381           handle "[in] ref" and "[in][out] ref" cases.
2382
2383         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
2384           to mono_mb_create_method.  This was causing problems calling native to
2385           managed passing Variants by value.
2386
2387         Code is contributed under MIT/X11 license.
2388
2389 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * class.c (can_access_internals): Call mono_assembly_load_friends ()
2392         before accessing the friend_assembly_names field.
2393
2394         * assembly.c (mono_assembly_load_friends): Make this callable multiple
2395         times.
2396         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
2397         called lazily when it is needed.
2398
2399         * metadata-internals.h (struct _MonoAssembly): Add 
2400         'friend_assembly_names_inited' flag.
2401
2402 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
2403
2404         * mono-perfcounters-def.h: fix the types of a few counters.
2405         * mono-perfcounters.c: implemented the instance names getter
2406         and a few bugfixes.
2407
2408 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
2409
2410         * culture-info-table.h : regenerated.
2411
2412 2008-09-17  Robert Jordan  <robertj@gmx.net>
2413
2414         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
2415         context bound objects. Fixes #415577.
2416
2417         Code is contributed under MIT/X11 license.
2418
2419 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
2420
2421         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
2422         implementation (bug #423582).
2423
2424 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
2425
2426         * object.c (mono_object_get_virtual_method): Handle the case method->slot
2427         is not set. Fixes #426309.
2428
2429 2008-09-16  Jb Evain  <jbevain@novell.com>
2430
2431         * class.c (mono_class_from_name): fix the exported type look up
2432         when the type is defined in a referenced assembly.
2433
2434 2008-09-16  Jb Evain  <jbevain@novell.com>
2435
2436         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
2437         increment the next index counter on each iteration to make that work
2438         for more than one type forwarder. Unmanaged part to fix #422929.
2439
2440 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2441
2442         * object-internals.h: enum ComInterfaceType in
2443         MonoInterfaceTypeAttribute is guint32, not guint16.
2444
2445 2008-09-12  Mark Probst  <mark.probst@gmail.com>
2446
2447         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
2448         writing code.
2449
2450 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2451
2452         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
2453         not gboolean.
2454
2455 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2456
2457         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
2458         Endianness fixes for MonoSymbolFileOffsetTable.
2459
2460 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
2461
2462         * process.c (complete_path) : Removing quotes from the 
2463           input path.  The glib file routines do not handle file paths
2464           that have quotes around them.
2465
2466         Code is contributed under MIT/X11 license.
2467
2468 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
2469
2470         * socket-io.h : Adding a comment to provide locations where 
2471           changes to MonoSocketAsyncResult need to be synced.
2472
2473         Code is contributed under MIT/X11 license.
2474
2475 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
2478         parameters as well. Fixes #425001.
2479
2480 2008-09-08  Miguel de Icaza  <miguel@novell.com>
2481
2482         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
2483         windows build.
2484
2485 2008-09-07  Miguel de Icaza  <miguel@novell.com>
2486
2487         * console-io.c: Add support for tracking the window size if it
2488         changes.
2489
2490         The setup is very simple: the TtySetup function will now return a
2491         pointer to a location in memory that tracks the current console
2492         size.  The managed code checks its current value every time its
2493         queried against the last value set, and updates accordingly.
2494
2495         With this setup we can work with multiple consoles, and we do not
2496         require to poke into managed code from a signal handler.
2497
2498         Additionally, the environment for COLUMNS and LINES is now handled
2499         in unmanaged code.
2500
2501         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
2502
2503 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2504
2505         * marshal.c (mono_type_native_stack_size): Treat
2506         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
2507
2508 2008-09-04  Jb Evain  <jbevain@novell.com>
2509
2510         * class.c (mono_class_is_assignable_from): fix assignability of nullables
2511         to nullables.
2512
2513 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
2514
2515         * verify.c (verify_type_compatibility_full): Revert change
2516         to allow converting a native int to unmanaged pointer be verifiable
2517         under non-strict mode.
2518         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
2519
2520         * verify.c: Added some TODOs.
2521
2522 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
2523
2524         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
2525           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
2526           Changed to use GlobalAlloc for the memory returned on Windows platforms.
2527
2528         Code is contributed under MIT/X11 license.
2529
2530 2008-09-02  Jb Evain  <jbevain@novell.com>
2531
2532         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
2533
2534 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         reflection.c (typebuilder_setup_fields): Handle classes with
2537         explicit size.
2538
2539 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
2540
2541         class.c (mono_class_setup_events): Add memory barrier due to
2542         double checked locking.
2543         
2544         class.c (mono_class_setup_properties): Same.
2545
2546 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2547
2548         * class.c (mono_class_is_assignable_from): Fix the build.
2549         
2550         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
2551         before accessing klass->interface_bitmap. Fixes #421744.
2552
2553 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2554
2555         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
2556         the runtime into no-exec mode, useful when running the AOT compiler.
2557
2558         * appdomain.c gc.c object.c: Avoid executing managed code when running
2559         in no-exec mode.
2560         
2561         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
2562
2563         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
2564         special case when the mono_assembly_loaded () returns NULL because the 
2565         search hook is not installed.
2566
2567 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
2570         crashes in bstr marshalling on linux.
2571
2572 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
2575         with more than one parameter.
2576
2577 2008-08-24  Miguel de Icaza  <miguel@novell.com>
2578
2579         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
2580         start/stop flow control as well when turning off ICANON (allows
2581         C-s and C-q to be read by Console.ReadKey).
2582
2583 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2584
2585         * class.c (mono_class_init): Move the initialization of nested classes
2586         into mono_class_get_nested_types (). Fixes #418433.
2587
2588         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
2589         flag.
2590
2591         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
2592         iterating tough the nested classes of a class.
2593
2594 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
2597         on arm.
2598
2599 2008-08-22  Miguel de Icaza  <miguel@novell.com>
2600
2601         * console-io.c (sigcont_handler): Support signal chaining for
2602         SIGCONT.
2603
2604         (console_set_signal_handlers): Use best practices with sigaction,
2605         clear the structure before using it. 
2606
2607 2008-08-22  Robert Jordan  <robertj@gmx.net>
2608
2609         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
2610         Fix the Windows build.
2611
2612 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2613
2614         * class.c (mono_class_generic_sharing_enabled): Make the default
2615         sharing mode 'corlib'.
2616
2617 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * console-io.c (console_set_signal_handlers): Fix a warning.
2620
2621         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
2622         method normally, the JIT will take care of avoiding recursion.
2623
2624 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2625
2626         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
2627
2628         Code is contributed under MIT/X11 license.
2629
2630 2008-08-20  Miguel de Icaza  <miguel@novell.com>
2631
2632         * console-io.c (sigcont_handler): We need to restore the entire
2633         termios state, not only the original settings, as things like echo
2634         can be controlled after this (Booish exposes this issue with its
2635         own ReadLine implementation).
2636
2637         Additionally, we need to set the terminal back into keypad_xmit
2638         mode.
2639         
2640         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
2641         string as a paramter as well.   Otherwise we get different
2642         keyboard sequences.
2643
2644 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2645
2646         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
2647         delegates with byref out parameter passing. Fixes #351520.
2648
2649         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
2650         a generic context.
2651         (mono_type_get_desc): Add the type arguments for GENERICINST.
2652         (mono_method_full_name): Stringify the class name using mono_type_full_name
2653         so it picks up generic arguments.
2654
2655 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
2656
2657         * console-io.c: Removed debug output.
2658
2659 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
2660
2661         reflection.c (mono_reflection_create_runtime_class): Alloc
2662         the nested classes linked list using the dynamic image mempool.
2663         Fixes leak in corlib compilation.
2664
2665 2008-08-19  Miguel de Icaza  <miguel@novell.com>
2666
2667         * console-io.c: Fix incredibly annoying behavior on the console
2668         after resuming execution after control-z.   This affected every
2669         console application.
2670
2671 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
2672
2673         * mempool-internals.h: Header for mono private mempool functions. The first
2674         two function are for allocating glib linked lists using pools.
2675
2676         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
2677
2678         * Makefile.am: Added mempool-internals.h.
2679
2680 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
2683         (mono_domain_free): Ditto.
2684
2685         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
2686         be used by the JIT to store its domain-specific information, instead of putting
2687         it directly into MonoDomain.
2688
2689         * domain.c (mono_install_create_domain_hook): New helper function to install
2690         a hook which initializes domain->runtime_info.
2691
2692         * domain.c (mono_install_free_domain_hook): Ditto.
2693         
2694 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
2695
2696         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
2697         asserting if the ares parameter is null.
2698
2699         * mono-perfcounters.c: Fix warnings.
2700
2701         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
2702         is not needed, don't check for interruptions either.
2703         (mono_marshal_get_delegate_end_invoke): Ditto.
2704
2705 2008-08-15  Marek Habersack  <mhabersack@novell.com>
2706
2707         * mono-perfcounters.c (predef_readonly_counter): added support for
2708         reading the ASP.NET Requests Queued counter from another process.
2709
2710 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
2713         MonoImage to simplify the AOT code.
2714
2715 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
2718         marshalling. Fixes #416078.
2719
2720 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
2721         
2722         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
2723         it is set, looking up the icall address is deferred to the JIT, since 
2724         in embedded scenarios, the icall might not be registered in the runtime
2725         doing the AOT compilation. Backported from the 2.0 branch.
2726
2727 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
2730         Fixes #415621.
2731
2732 2008-08-05  Marek Habersack  <mhabersack@novell.com>
2733
2734         * Makefile.am: added support for cross-compilation.
2735
2736 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
2737
2738         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
2739
2740 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
2741
2742         * mono-perfcounters.c: jitted methods and jitted bytes counters.
2743
2744 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
2745
2746         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
2747         mono-perfcounters.c: performance counters implementation.
2748
2749 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
2752         to gpointer, letting the AOT code decide what to store in it.
2753
2754 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
2755
2756         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
2757           mono_class_setup_methods if the methods are not initialized.
2758
2759         Code is contributed under MIT/X11 license.
2760
2761 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
2762
2763         * verify.c: Remove some debug code I commited by accident.
2764
2765         * verify.c (mono_method_is_valid_in_context): Change the return value
2766         to make possible to distinguish between invalid and unverifiable.
2767
2768         * verify.c (verifier_load_method): Don't return NULL for unverifiable
2769         methods.
2770
2771 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
2772
2773         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
2774         constraints. Fixes regression in gtest-253.
2775
2776 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
2777
2778         * verify.c (mono_verifier_verify_class): Don't allow generic types
2779         with explicit layout.
2780
2781         * verify.c (mono_method_verify): Check locals and argument types.
2782
2783 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
2786         wait if the thread is in StopRequested state.
2787
2788         * class.c (mono_class_from_name): Refactor the module searching code into
2789         a separate function so it can be reused in the AOT case too.
2790
2791 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
2792
2793         * verify.c (mono_type_is_valid_in_context): Improve the error message.
2794         Check both the type and it's generic type definition for loader errors.
2795         
2796         * verify.c (mono_method_is_valid_in_context): Don't generate another
2797         error when a type errors occur, this leads to the wrong exception been
2798         thrown.
2799
2800 2008-07-28  Dick Porter  <dick@ximian.com>
2801
2802         * icall-def.h
2803         * process.c
2804         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
2805         New internal calls to duplicate and close a process handle.
2806
2807 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
2808
2809         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
2810
2811 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
2814
2815 2008-07-27  Robert Jordan  <robertj@gmx.net>
2816
2817         * class.c (mono_class_init): Don't compute class.has_finalize for
2818         valuetypes. Fixes #412477.
2819
2820 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
2821
2822         * verify.c: Implement constraint equivalence checking.
2823         This is required when a generic parameter is used as
2824         argument to a constrained one.
2825
2826         Fixes #410637.
2827
2828 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
2829
2830         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
2831
2832         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
2833
2834         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
2835         synch with managed object layout.
2836
2837 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
2838
2839         * verify.c (do_branch_op): Handle valuetypes and generic
2840         arguments properly.
2841
2842         * verify.c (do_cmp_op): Same.
2843
2844         Fixes #410383.
2845
2846 2008-07-24  Mark Probst  <mark.probst@gmail.com>
2847
2848         * generic-sharing.c: Fix memory leaks.
2849
2850         * class.c, class-internals.h: Make
2851         mono_class_inflate_generic_type_with_mempool() non-static.
2852
2853 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
2854
2855         * pedump.c (dump_verify_info): Dump full class name.
2856
2857 2008-07-24  Mark Probst  <mark.probst@gmail.com>
2858
2859         * generic-sharing.c: Removed some old code that didn't do anything.
2860
2861 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
2862         * profiler.c: Added runtime_initialized_event,
2863         mono_profiler_install_runtime_initialized and
2864         mono_profiler_runtime_initialized. This new hook tells the profiler
2865         when the runtime is sufficiently initialized to be able to call
2866         mono_thread_attach on the root appdomain.
2867         * profiler.h, profiler-private.h: Likewise.
2868
2869 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
2870
2871         * verify.c (do_cast): Do boxing for generic arguments as well.
2872
2873         * class.c (is_nesting_type): Drop generic instantiations before
2874         checking for nesting.
2875
2876         * class.c (can_access_instantiation): Allow access to generic
2877         arguments.
2878
2879 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
2880
2881         * verify.c (verify_class_for_overlapping_reference_fields):
2882         On some cases, the field size might be zero, guard against that.
2883         Fix the explicit layout check to work as expected.
2884
2885 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
2888         mono_thread_resume () during shutdown, since the thread we want to abort
2889         might be suspended.
2890
2891 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
2892
2893         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
2894         warning.
2895
2896         * debug-mono-symfile.c: Fix a warning.
2897
2898         * mono-perfcounters.c (get_cpu_times): Fix a warning.
2899
2900         * object.c (mono_class_vtable): Check if exception_type is set, and return
2901         NULL as defined by the function comments.
2902
2903 2008-07-22  Mark Probst  <mark.probst@gmail.com>
2904
2905         * mempool.c: Use malloc for every single mempool allocation if the
2906         configure option is set.  This makes it easier to track mempool
2907         allocations with tools like Valgrind.
2908
2909 2008-07-22  Jb Evain  <jbevain@novell.com>
2910
2911         * reflection.c (create_dynamic_mono_image): emit the same
2912         metadata version that SL2 does when creating a SL2 image.
2913
2914 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
2915
2916         * icall-def.h:
2917         * icall.c: New icall System.Enum:get_hashcode. This function
2918         avoids the overhead of boxing the enum to the underlying type.
2919
2920 2008-07-21  Mark Probst  <mark.probst@gmail.com>
2921
2922         * reflection.c (mono_method_get_object): Don't let static RGCTX
2923         invoke wrappers get into MonoReflectionMethods.
2924
2925 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
2926
2927         * object-internals.h:
2928         * object.c: New mono_runtime_class_init_full function
2929         that makes throwing the exception optinal.
2930
2931         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
2932         for the case where the exception object is supplied.
2933
2934 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
2935
2936         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
2937         old ld versions.
2938
2939         Contributed under MIT/X11 license.
2940
2941 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * string-icalls.c (ves_icall_System_String_InternalSplit):
2944         Optimize array allocation by caching the MonoClass of the
2945         array type.
2946
2947         * icall.c (ves_icall_Type_GetMethodsByName): Same.
2948
2949         * reflection.c (mono_param_get_objects): Same.
2950
2951 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
2952
2953         * icall-def.h:
2954         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
2955         It inflates the given type using the class context.
2956
2957 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2958
2959         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
2960         the vtable if it already exists.
2961
2962         * object-internals.h: Add mono_class_try_get_vtable as part of the
2963         internal API.
2964
2965         * reflection.c (mono_type_get_object): Use the MonoObject from the
2966         vtable when possible. Reduces locking contention on reflection heavy
2967         code.
2968
2969 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
2972         g_bit_nth_msf () since that macro is not implemented in eglib.
2973
2974 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
2977         on platforms which do not support it.
2978
2979 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
2982
2983 2008-07-11  Martin Baulig  <martin@ximian.com>
2984
2985         * mono-debug-debugger.h
2986         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
2987
2988         * mono-debug-debugger.c
2989         (_mono_debugger_interruption_request): New global volatile variable.
2990         (mono_debugger_check_interruption): New public function.
2991
2992         * threads.c
2993         (mono_thread_current_check_pending_interrupt): Call
2994         mono_debugger_check_interruption().
2995         (mono_thread_interruption_checkpoint_request): Likewise.
2996
2997 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
2998
2999         * verify.c: Add more type checks for loaded types. Verify the result
3000         handle from ldtoken.
3001
3002 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
3003
3004         * loader.c (field_from_memberref): Don't crash if the field
3005         wasn't found.
3006
3007 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * verify.c: Verify if type and method instantiations
3010         don't have invalid VAR or MVAR arguments.
3011
3012 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
3013
3014         * verify.c: Fix double free of function pointer list.
3015
3016 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
3017
3018         * object.c (mono_string_to_utf8): Comment the new code as it
3019         breaks under eglib.
3020
3021 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
3022
3023         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
3024
3025 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3026
3027         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
3028           is not throw too many times.
3029
3030         Code is contributed under MIT/X11 license.
3031
3032 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3033
3034         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
3035         debugging is turned off.
3036
3037 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
3040
3041 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3042
3043         * class-internals.h, class.c: Added new generic sharing option:
3044         Share only stuff in System.Collections.Generic, which is now the
3045         default.
3046
3047 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3048
3049         * generic-sharing.c, class-internals.h: New function for getting a
3050         generic method in a generic class given the corresponding method
3051         for a different instantiation of the class.  Partly refactored
3052         from mini-trampolines.c.
3053
3054         * class.c: Make sure generic methods have a class_inst if they are
3055         part of a generic class.
3056
3057         * metadata.c (mono_type_stack_size_internal): Handle type
3058         variables.
3059
3060 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3061
3062         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
3063         Signifies whether information on the this/vtable/mrgctx variable
3064         is available.
3065
3066 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3067
3068         * object.c, object-internals.h, icall.c: New function
3069         mono_delegate_ctor_with_method(), which does the same as
3070         mono_delegate_ctor(), but takes an explicit method argument
3071         instead of taking the method from the jit info.
3072
3073         * marshal.c: When creating a delegate with an inflated method take
3074         the "this" argument as the target class for the castclass.
3075
3076 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3077
3078         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
3079         mono_jit_info_table_find() to perform very badly in some cases.
3080
3081 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
3082
3083         * icall.c (type_from_typename): Handle 'string'.
3084
3085         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
3086         wrappers into the wrapper_hash, since the key is not a MonoMethod.
3087
3088 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
3091
3092         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
3093         number of available managed allocator types.
3094
3095         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
3096         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
3097
3098 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
3101         which is a low level lock protecting just the 'jit_code_hash' hash table.
3102
3103         * domain.c: Initialize+cleanup jit_code_hash_lock.
3104         
3105 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
3106
3107         * coree.c (mono_load_coree): Set coree_module_handle global variable only
3108         after initialization.
3109
3110         * coree.h: Make MonoFixupExe internal.
3111
3112         Contributed under MIT/X11 license.
3113
3114 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
3115
3116         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
3117         because that is platform independent. Check NumberOfRvaAndSizes in PE32
3118         as well.
3119         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
3120         image being loaded is a CLI image and _CorValidateImage gets called.
3121
3122         * coree.h: Add MonoLoadImage.
3123
3124         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
3125         instead of LoadLibrary.
3126
3127         Contributed under MIT/X11 license.
3128
3129 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
3130
3131         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
3132         for any primitive type.
3133
3134 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
3135
3136         * object.c (mono_array_new_specific): Optimize this and the other allocation
3137         functions a bit.
3138         
3139         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
3140         domains too if mono_dont_free_domains is set.
3141
3142         * domain-internals.h (mono_dont_free_domains): New internal option controlling
3143         whenever to free appdomain data after it has been unloaded.
3144
3145         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
3146         
3147 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
3150         (mono_method_get_equivalent_method): Fix a warning.
3151
3152         * object.c (mono_message_init): Avoid looking up array types for each call.
3153
3154 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
3155
3156         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
3157         call.
3158
3159         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
3160         even more.
3161
3162         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
3163         each iteration.
3164
3165         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
3166         fields of an enum.
3167
3168 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
3169
3170         * object.c (mono_value_box): Fix boxing of nullables.
3171
3172 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
3173
3174         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
3175         mono_module_handle that is defined by the linker; no initialization required.
3176         * coree.h: Remove mono_module_handle, add __ImageBase, update
3177         mono_image_open_from_module_handle.
3178         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
3179         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
3180         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
3181         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
3182         to 4 GB away from image base address. IA64 version is not tested but was very
3183         easy to implement and should work if we ever need it.
3184         * domain.c (mono_init_internal): Avoid system error message boxes.
3185         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
3186         with has_entry_point. Handle do_mono_image_load fauilre correctly.
3187         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
3188         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
3189         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
3190
3191         Contributed under MIT/X11 license.
3192
3193 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3194
3195         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
3196         as part of the private mono API.
3197         
3198         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
3199         Do proper argument checking for methods that belong to generic classes.
3200         Do proper type resolution for GMFH/2.
3201         Fixes #377324.
3202         
3203 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3204
3205         * verify.c (do_switch): Fix a memory corruption bug with
3206         the jump index is out of bound.
3207
3208 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3209
3210         * verify.c: Disable debug code.
3211
3212 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
3213
3214         * reflection.c (mono_image_get_methodbuilder_token): Use
3215         mono_image_get_methodspec_token_for_generic_method_definition
3216         instead of mono_image_get_memberref_token. We cache more memberef
3217         entries now.
3218
3219 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3220
3221         * verify.c: Inflate exception clause types.
3222         Fixes #402606.
3223         
3224 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3225
3226         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
3227         name.
3228
3229         * reflection.c (mono_image_get_ctorbuilder_token): Same.
3230
3231         * reflection.c (mono_image_create_method_token): Same.
3232
3233 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
3234
3235         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
3236         It does the same as mono_image_get_methodref_token but works on
3237         MethodBuilder.
3238
3239         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
3240         and always generate a methodspec. This follows the old behavior and fixes
3241         the regressions in System.Core. 
3242
3243 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
3246         don't event mono_class_get () succeeds. Fixes #402182.
3247
3248 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * metadata-internals.h: Added MonoDynamicImage::methodspec
3251         hashtable to store methodspec tokens created for MethodBuilders.
3252
3253         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
3254         MethodBuilders as open instantiations if a methodspec was requested.
3255
3256         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
3257
3258         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
3259
3260         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
3261
3262         Fixes bug #349190.
3263
3264 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
3265
3266         * loader.c (method_from_methodspec): Avoid crashing if the
3267         method lookup fails.
3268
3269 2008-06-20  Dick Porter  <dick@ximian.com>
3270
3271         * socket-io.c (get_socket_assembly): Cope with Moonlight network
3272         classes being in a different assembly.  Fixes bug 399184.
3273
3274 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * loader.c (mono_loader_init): Make this callable multiple times.
3277         (mono_dllmap_insert): Call mono_loader_init () so this works even before
3278         the runtime is initialized. Fixes #401755.
3279
3280 2008-06-19  Dick Porter  <dick@ximian.com>
3281
3282         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
3283         Fixes bug 349688.
3284
3285 2008-06-19  Dick Porter  <dick@ximian.com>
3286
3287         * socket-io.c:
3288         * icall-def.h: Implement Socket generic Send() and Receive()
3289         methods.  Fixes bug 395168.
3290
3291 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
3292
3293         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
3294
3295         Contributed under MIT/X11 license.
3296
3297 2008-06-18  Martin Baulig  <martin@ximian.com>
3298
3299         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
3300         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
3301         set to 80.0.  The debugger <-> runtime interface is now frozen as
3302         well.   
3303
3304         * mono-debug.c
3305         (mono_debug_debugger_version): Bump to 4.
3306
3307 2008-06-18  Martin Baulig  <martin@ximian.com>
3308
3309         * debug-mono-symfile.c
3310         (load_symfile): Don't check the minor version.
3311
3312         * debug-mono-symfile.h: Bump the version number to 50.0.
3313
3314 2008-06-18  Martin Baulig  <martin@ximian.com>
3315
3316         * debug-mono-symfile.c
3317         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
3318         minimum required version.
3319
3320 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * reflection.c (mono_custom_attrs_from_property): Fix support for
3323         retriveving cattrs of dynamic inflated generic types.
3324
3325         * reflection.c (mono_custom_attrs_from_event): Same.
3326
3327         * reflection.c (mono_custom_attrs_from_field): Same;
3328
3329         * reflection.c (typebuilder_setup_events): Same cattrs of events.
3330
3331         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
3332         Moved to metadata.c.
3333
3334         * metadata.c: New functions to retrive the equivalent field, event
3335         of property from the generic type definition.
3336
3337         * metadata-internals.h: Added new functions from metadata.c.
3338
3339 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
3340
3341         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
3342         to cached in a mempool is used.
3343
3344         * metadata.c (free_generic_class): In some situations field generic_info type
3345         is not properly dup'ed and leads to double free'ing.
3346
3347         Fixes #400643.
3348
3349 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3350
3351         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
3352         this arguments (will be needed later for generic methods).
3353         Collect stats.
3354
3355 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3356
3357         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
3358         Create a static RGCTX invoke wrapper for methods which require it.
3359
3360 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3361
3362         * object.c, class-internals.h: New function for checking whether
3363         an individual field is special static.
3364
3365 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
3366
3367         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
3368         linear search since the table is sorted.
3369
3370         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
3371         Fixes #324180.
3372
3373 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
3376         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
3377
3378         * gc.c (mono_domain_finalize): Allow an infinite timeout.
3379
3380         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
3381         
3382         * threads.c (mono_thread_request_interruption): Get rid of locking, use
3383         InterlockedCompareExchange to query and modify 
3384         thread->interruption_requested.
3385
3386         * object-internals.h (struct _MonoThread): Change interruption_requested
3387         to a gint32 so it can be modified by atomic operations. Add 
3388         'critical_region_level' from the managed side, change small_id to a guint32,
3389         add new set of 'unused' fields.
3390
3391         * appdomain.c: Bump corlib version.
3392
3393 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * class.c (mono_class_from_name): Search modules as well. Fixes
3396         #322332.
3397
3398 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3399
3400         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
3401         templates.  Templates are generalized with an additional type_argc
3402         argument.  RGCTX templates have type_argc==0, MRGCTX templates
3403         have type_argc>0.
3404
3405         * domain-internals.h, domain.c: New hash table for looking up
3406         MRGCTXs.
3407
3408         * metadata.c, metadata-internals.h: Rename hash and equal
3409         functions for MonoGenericInst's and make them public.
3410
3411         * class-internals.h: New data structures for the MRGCTX.  Macros
3412         for distinguishing slots in the RGCTX and the MRGCTX.
3413
3414 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3415
3416         * object.c (mono_method_get_imt_slot): Put the same methods of
3417         different instantiations of the same generic interface in the same
3418         IMT slots, to make generic sharing simpler.
3419
3420 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
3421
3422         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
3423
3424         * metadata.c (mono_metadata_field_info_with_mempool): Added.
3425         This function works just like mono_metadata_field_info, but
3426         accept a mempool as argument to be used allocating memory.
3427
3428         * marshal.c (mono_marshal_load_type_info): Use new function
3429         to load marshal data into image mempool.
3430
3431 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
3432
3433         * class.c (mono_class_inflate_generic_type_with_mempool):
3434         This function allows to inflate a generic type using
3435         a mempool.
3436
3437         * class.c (inflate_generic_type): Take a mempool as argument
3438         and use it to do type dup'ing.
3439
3440         * class.c (mono_class_setup_fields): Field type for generic
3441         generic classes are allocated from the image mempool.
3442
3443         * metadata.c (free_generic_class): Inflated field type is
3444         now allocated in the image mempool.
3445
3446 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
3447
3448         * threads.c (thread_cleanup): Free MonoThread::name.
3449
3450 2008-06-12  Marek Habersack  <mhabersack@novell.com>
3451
3452         * appdomain.c (ensure_directory_exists): avoid unnecessary
3453         mkdir(2) calls when the shadow directory already exists.
3454         (mono_make_shadow_copy): copy also satellite assemblies from the
3455         private bin directories.
3456
3457 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
3460         
3461         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
3462         a page boundary. Fixes #396219.
3463
3464 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3465
3466         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
3467         due to double-checked locking.
3468
3469 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3470
3471         * assembly.c (build_assembly_name): Release memory on failure.
3472
3473         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
3474
3475 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3476
3477         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
3478         memory on failure.
3479
3480 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3481
3482         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
3483         memory on failure.
3484
3485 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3486
3487         * loader.c (field_from_memberref): Check if field signature type is equal
3488         to the non-inflated type of the field. Fixes #398980.
3489
3490 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
3491
3492         * assembly.c (mono_assembly_load_from_full): Call 
3493         mono_assembly_load_friends () outside the assemblies lock, since it can
3494         acquire the loader lock. Fixes #323696.
3495
3496         * reflection.c (resolve_object): Inflate the inst with the context for
3497         FieldOnTypeBuilderInst. Fixes #399010.
3498
3499 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3500
3501         * reflection.c (mono_image_get_field_on_inst_token): Don't
3502         inflate the field to encode it's signature. If it's a
3503         VAR or MVAR it should stay that way in the signature.
3504         Fixes #399047.
3505
3506 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * reflection.c (resolve_object): Release memory of inflated types.
3509
3510 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3511
3512         * loader.c (mono_method_get_signature_full): Remove assert about
3513         loading a methodspec to a generic method. We have such methods, such as
3514         System.Threading.Interlocked::CompareExchange<T>.
3515         This assert was removed since it crashes the verifier when it checks
3516         methods calling CompareExchange<T>.
3517
3518 2008-06-10  Marek Safar  <marek.safar@gmail.com>
3519
3520         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
3521         of Type array and not MonoType.
3522
3523 2008-06-10  Marek Habersack  <mhabersack@novell.com>
3524
3525         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
3526         <lupus@ximian.com>
3527
3528 2008-06-10  Martin Baulig  <martin@ximian.com>
3529
3530         * debug-mono-symfile.h
3531         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
3532         changes to the file format, but we were generating incorrect
3533         source file indices in the line number table due to a bug, which
3534         made backtraces report an incorrect source file.
3535
3536 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
3537
3538         * mono-debug.c: Moved mono_debug_free_method_jit_info from
3539         mini/debug-mini.c to here.
3540
3541         * mono-debug.c (il_offset_from_address): Free memory from find_method.
3542
3543         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
3544         use it to release structs returned by mono_debug_find_method.
3545
3546 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
3549         since it needs to set method->slot for all interface methods.
3550
3551 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3552
3553         * class-internals.h: Forgot to add.
3554
3555 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3556
3557         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
3558
3559         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
3560         Lookup the custom attributes from property_hash.
3561
3562         * reflection.c (mono_save_custom_attrs): Save the custom attributes
3563         in property_hash. Allocate all data using the image mempool.
3564
3565         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
3566         for dynamic_custom_attrs to checks if the image is dynamic.
3567
3568 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
3569
3570         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
3571         assemblies array.
3572         
3573         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
3574         runtime functions while holding the domain assemblies lock.
3575
3576 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3577
3578         * verify.c: Reapplied the last bit of the reverted changes.
3579
3580 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
3581
3582         * verify.c: Reapplied more of the reverted changes.
3583
3584 2008-06-09  Martin Baulig  <martin@ximian.com>
3585
3586         * debug-mono-symfile.c (load_symfile): Check the major version
3587         first; if it's wrong, don't print the minor version in the error message.
3588
3589 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
3592         lock instead of the domain lock to avoid deadlocks, since the thread might
3593         already hold the loader lock.
3594
3595         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
3596         (mono_thread_attach): Ditto.
3597
3598         * monitor.c: Use a TLS variable for holding the current thread id instead
3599         of calling pthread_self ().
3600         (mono_monitor_init_tls): New internal function to initialize the TLS
3601         variable.
3602         (mono_monitor_try_enter_internal): Put the owner == id check after the
3603         owner == 0 check.
3604
3605         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
3606         missed optimizations when using gcc-4.3.
3607
3608 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
3609
3610         * reflection.c (mono_dynamic_image_free): Free the memory
3611         used by MonoGenericParam in MonoDynamicImage::gen_param.
3612
3613         * reflection.c (mono_reflection_setup_generic_class): Allocate
3614         container from mempool.
3615
3616         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
3617         container from mempool.
3618
3619 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
3620
3621         * threads.c (mono_set_pending_exception): New internal function to set the
3622         pending exception of the current thread.
3623         (mono_thread_get_and_clear_pending_exception): Check for 
3624         thread->pending_exception as well.
3625
3626         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
3627
3628         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
3629         it can trigger a collection.
3630
3631 2008-06-06  Martin Baulig  <martin@ximian.com>
3632
3633         Merged the `debugger-kahalo' branch.
3634
3635         * mono-debug.h
3636         (MONO_DEBUGGER_VERSION): Bumped to 72.
3637
3638         * debug-mono-symfile.h
3639         (MonoSymbolFileMethodIndexEntry): Removed.
3640         (MonoSymbolFileMethodEntry): New public typedef.
3641         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
3642         (MonoSymbolFileSourceEntry): Remove everything except `index' and
3643         `data_offset'.
3644         (MonoSymbolFileMethodEntry): Removed.
3645         (MonoSymbolFileLexicalBlockEntry): Removed.
3646         (MonoSymbolFileLineNumberEntry): Removed.
3647         (MonoDebugLexicalBlockEntry): Removed.
3648         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
3649         removed `num_il_offsets' and `il_offsets'.
3650         (MonoSymbolFile): Replace `version' with `major_version' and
3651         `minor_version'.
3652         (MONO_SYMBOL_FILE_VERSION): Replace with
3653         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
3654         `MONO_SYMBOL_FILE_MINOR_VERSION'.
3655
3656         * debug-mono-symfile.c
3657         (mono_debug_symfile_lookup_location): Add support for the new line
3658         number table format.
3659
3660 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
3661
3662         * metadata.c (free_generic_class): Release the inflated
3663         MonoClass of dynamic generic classes if it's not a generic
3664         type definition.
3665
3666 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
3667
3668         * verify.c: Reapplied more of the reverted changes.
3669
3670 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
3671
3672         * reflection.c (lookup_custom_attr): Clean the cached flag or
3673         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
3674         for SRE types.
3675
3676 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
3677
3678         * verify.c: Reapplied a small part of the reverted changes.
3679
3680 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
3681
3682         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3683
3684         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
3685         previously in managed code.
3686         (mono_monitor_exit): Ditto.
3687         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
3688
3689         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
3690         the managed definition.
3691
3692 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
3693
3694         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
3695
3696 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
3697
3698         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
3699         
3700         * monitor.c: Add some micro optimizations.
3701
3702         * icall.c (type_from_typename): Handle 'bool'.
3703
3704 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
3705
3706         * verify.c: Implement constructor verification per P III 1.8.1.4.
3707         Fixes #396716.
3708
3709 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
3712         holding the assemblies lock here too.
3713
3714 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3715
3716         * verify.c: Kill stack_top function.
3717
3718 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * verify.c: Kill stack_get function.
3721
3722 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3723
3724         * verify.c (mono_method_verify): Last change broke the build. Fixed.
3725
3726 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
3729         more reliable.
3730
3731         * verify.c (mono_method_verify): Inflate params and locals to avoid
3732         mismatch when checking for compatibility.
3733
3734 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
3735
3736         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
3737         Length prefix should be size in bytes. Fix bug #339530.
3738         
3739         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
3740         Length prefix should be size in bytes. Fix bug #339530.
3741
3742         Code is contributed under MIT/X11 license.
3743
3744 2008-06-05  Bill Holmes <billholmes54@gmail.com>
3745
3746         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
3747
3748         Contributed under MIT/X11 license.
3749
3750 2008-06-05  Martin Baulig  <martin@ximian.com>
3751
3752         * mono-debug-debugger.c
3753         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
3754
3755 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
3758         while holding the assemblies lock to prevent deadlocks. Handle the case
3759         where the search hook returns NULL but the assembly was still loaded.
3760         Fixes #323696.
3761
3762         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
3763         modify domain state.
3764
3765 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
3766
3767         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
3768         * Makefile.am (pedump_LDADD): Post-process object files and
3769         add dtrace-generated object file, if necessary.
3770
3771         Code is contributed under MIT/X11 license.
3772
3773 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
3774
3775         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
3776
3777 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
3778
3779         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
3780
3781 2008-06-04  Mark Probst  <mark.probst@gmail.com>
3782
3783         * threads.c: Try to free everything from the delayed free table
3784         when shutting down threads, and set the variable to NULL after the
3785         table is freed so that calling
3786         mono_thread_hazardous_try_free_all() when shutting down the root
3787         domain doesn't crash.
3788
3789 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
3790
3791         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
3792         the caller if resulting type was inflated.
3793
3794         * class.c (mono_class_create_from_typespec): Free the MonoType if it
3795         was inflated.
3796
3797         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
3798
3799
3800 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
3803         class library tests.
3804
3805         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
3806         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
3807         #396989.
3808
3809 2008-06-04  Mark Probst  <mark.probst@gmail.com>
3810
3811         * domain.c, domain-internals.h: The JIT infos are now freed by the
3812         JIT info table code.  They are freed immediately if there only a
3813         single JIT info table in circulation.  If there is more, the free
3814         is delayed via a queue.
3815
3816         * threads.c, threads-types.h: New hazard pointer function for
3817         freeing all freeable delayed items in one sitting.
3818
3819 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3820
3821         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
3822
3823         * reflection.c (typebuilder_setup_properties): Same.
3824
3825         * reflection.c (typebuilder_setup_events): Same.
3826
3827 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3828
3829         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
3830         and use it for allocating memory.
3831
3832         * reflection.c (mono_marshal_spec_from_builder): Same.
3833
3834         * reflection.c: Change code to use new signatures.
3835
3836         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
3837
3838 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * decimal.c (rescale128): Put back one line which was accidently commented
3841         out.
3842         
3843         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
3844         to cause crashes.
3845
3846 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3847
3848         * reflection.c (mono_reflection_generic_class_initialize): Name must
3849         be always malloc'ed so we can free it later on. Do this for field, property
3850         and event.
3851
3852         * metadata.c (free_generic_class): Free field, property and event names.
3853
3854 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3855
3856         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
3857         instead of g_memdup.
3858
3859         * reflection.c (typebuilder_setup_fields): Same.
3860
3861 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * decimal.c (rescale128): Optimize this function a bit more.
3864
3865 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3866
3867         * metadata.c (free_generic_class): Release some memory from
3868         SRE generic classes.
3869
3870 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
3871
3872         * reflection.c (mono_image_get_generic_field_token): No reference
3873         to name is kept, free it.
3874
3875         * reflection.c (mono_reflection_generic_class_initialize): Free
3876         more memory of the inflated field.
3877
3878 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
3881         code.
3882
3883 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
3884
3885         * reflection.c (mono_dynamic_image_free): Release memory used by
3886         MonoDynamicImage::array_methods elements.
3887
3888         * reflection.c (assembly_add_win32_resources): Release memory after
3889         encoding.
3890
3891 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * decimal.c (log2_32): Use an optimized version for this function too.
3894         
3895         * decimal.c (log2_64): Fix this on 32 bit machines.
3896
3897 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
3898
3899         * class.c (mono_dup_array_type): Implement allocation using a mempool.
3900
3901         * class.c (mono_metadata_signature_deep_dup): Same.
3902
3903         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
3904         a mempool.
3905
3906         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
3907
3908         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
3909
3910         * metadata-internals.h: Added mono_metadata_signature_dup_full.
3911
3912         * class-internals.h: Update signatures to take a MonoMemPool.
3913
3914 2008-06-02  Dick Porter  <dick@ximian.com>
3915
3916         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
3917         * icall-def.h: Add
3918         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
3919         FormatMessage API to get the error text.  Fixes bug 321827.
3920
3921 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
3922
3923         * decimal.c: Add some micro optimizations to make decimal operations faster.
3924
3925 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
3926
3927         * reflection.c (method_encode_clauses): Take a mempool
3928         as parameter and use it to allocate the clause array.
3929
3930         * reflection.c (mono_image_get_field_on_inst_token): Free
3931         the inflated type after encoding it.
3932
3933         * reflection.c (mono_dynamic_image_free): Free each element
3934         of MonoDynamicImage::gen_params.
3935
3936         * reflection.c (reflection_methodbuilder_to_mono_method):
3937         Allocate the generic param array from the mempool.
3938         Allocate signature params from the mempool.
3939
3940         * reflection.c (mono_reflection_generic_class_initialize):
3941         Free inflated fields after been used.
3942
3943 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
3944
3945         * icall.c: Reapply the memory leak fixes as they no
3946         longer make mono crash.
3947
3948 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
3949
3950         * reflection.c (mono_type_get_object): Don't store the suplied
3951         MonoType with type_hash. A caller which pass a type that
3952         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
3953         might end with a pointer to freed memory.
3954         The solution is to use byval_arg or this_arg from the associated
3955         MonoClass of the supplied type.
3956
3957 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * icall.c: Revert the rest of the last change as it breaks the build too.
3960
3961 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3962
3963         * icall.c: Revert a leak fix as it's breaking the build.
3964
3965 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3966
3967         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
3968
3969 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3970
3971         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
3972
3973 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
3974
3975         * icall.c: Fix some memory leaks.
3976
3977 2008-05-29  Dick Porter  <dick@ximian.com>
3978
3979         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
3980         async socket operations from the pending list when a socket
3981         closes.  Leaving it until the threadpool services the event
3982         exposes a race condition when a socket descriptor is reused.
3983         Fixes bug 377589.
3984
3985 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3986
3987         * object.c: Fix negative index check for array alocation.
3988
3989 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3990
3991         * icall.c, marshal.c: Delegate wrappers should skip visibility.
3992         This check is performed by the verifier for IL created delegates
3993         and by Delegate::CreateDelegate for programatically created ones.
3994         Fixes #372406.
3995
3996 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
3997
3998         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
3999         Fix code to use mono_array_size_t instead of int.
4000
4001         Based on patch by Luis F. Ortiz.
4002         Contributed under X11 license.
4003         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4004
4005 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
4006
4007         * icall.c: Added ves_icall_System_Array_GetLongLength and
4008         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
4009         arrays.
4010
4011         * icall.h: Export both new functions.
4012
4013         Based on patch by Luis F. Ortiz.
4014         Contributed under X11 license.
4015         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4016
4017 2008-05-28  Martin Baulig  <martin@ximian.com>
4018
4019         The debugger now requires exactly r103463.
4020
4021         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
4022         This version is not supported by the debugger, wait for 72.
4023
4024 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
4025
4026         * object.h: Changed array related functions to use
4027         mono_array_size_t instead of guint32. Forgot to commit this file.
4028
4029         Patch by Luis F. Ortiz.
4030         Contributed under X11 license.
4031         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4032
4033
4034 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
4035
4036         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
4037         don't define it. Use the number literal instead.
4038
4039 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
4040
4041         * icall.c: Changed array related functions to use
4042         mono_array_size_t instead of guint32.
4043
4044         * icall.c (ves_icall_System_Array_GetLength): Check for length
4045         overflow under MONO_BIG_ARRAYS.
4046
4047         Based on patch by Luis F. Ortiz.
4048         Contributed under X11 license.
4049         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4050
4051 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
4052
4053         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
4054
4055         Based on patch by Luis F. Ortiz.
4056         Contributed under X11 license.
4057         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4058
4059 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
4060
4061         * object.c, object.h: Changed array related functions to use
4062         mono_array_size_t instead of guint32.
4063
4064         Patch by Luis F. Ortiz.
4065         Contributed under X11 license.
4066         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4067
4068 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
4069
4070         * object.h: Introduced mono_array_size_t typedef. This must be used
4071         in all places an array length is expected. This is 64bits wide if
4072         MONO_BIG_ARRAYS is enabled.
4073
4074         Patch by Luis F. Ortiz.
4075         Contributed under X11 license.
4076         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
4077
4078 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * security-manager.c class.c: Set the class exception info by calling
4081         mono_class_set_failure ().
4082
4083         * class.c (mono_class_get_exception_data): New accessor function.
4084         (mono_class_set_failure): Store exception_data in the property hash.
4085
4086         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
4087         the struct as a property.
4088
4089         * loader.c (mono_get_method_full): Store the lookup result for method
4090         tokens in method_cache, the others in methodref_cache to decrease the memory
4091         usage of hash tables.
4092
4093         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
4094         (mono_image_init): method_cache is lazy inited now.
4095
4096         * metadata-internals.h (struct _MonoImage): Change method_cache to
4097         a MonoValueHashTable, add a separate methodref_cache.
4098
4099 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
4100
4101         * number-formatter.h: Fix tables to avoid arithemtic overflow in
4102           Double.ToString as exposed by Bug #383531.
4103
4104 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * number-formatter.h: Make some tables static.
4107
4108         * class.c (mono_method_set_generic_container): New accessor function.
4109         (mono_method_get_generic_container): Ditto.
4110
4111         * class-internals.h (struct _MonoMethod): Remove rarely used 
4112         'generic_container' field, store it in the property hash instead. Add 
4113         'is_generic' boolean field instead.
4114
4115         * image.c (mono_image_init): Initialize property_hash.
4116         (mono_image_close): Destroy property_hash.
4117
4118         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
4119         hold rarely used fields of runtime structures belonging to this image.
4120
4121         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
4122         to get/set method->generic_container.
4123
4124         * loader.c (mono_get_method_from_token): Avoid loading the method header for
4125         generic methods.
4126
4127 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * class.c (mono_class_inflate_generic_method_full): Don't increase
4130         mono_stats.inflated_method_count for methods found in the cache.
4131
4132         * threads.c (mono_thread_request_interruption): Add a comment about 
4133         QueueUserAPC ().
4134
4135 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
4138         interface_offsets_packed table.
4139         
4140         * class.c (mono_class_init): Remove some dead code.
4141
4142         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
4143         mono_class_setup_vtable () when CAS is active to detect security problems.
4144
4145 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
4146
4147         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
4148
4149         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
4150         parameters as it's irrelevant for delegate checking.
4151
4152 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
4155
4156         * class.c (mono_class_init): Control the creation of a generic vtable using
4157         a global which is true by default, but set to false by the runtime startup code.
4158         
4159         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
4160         Disabled for now since it breaks the embedding API.
4161         Move the setup of class->methods for arrays to mono_class_setup_methods ().
4162         (mono_class_setup_methods): Add a memory barrier.
4163
4164         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
4165         when mono_class_init () doesn't compute the generic vtable.
4166         
4167 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4168         * profiler.c: Added mono_profiler_install_statistical_call_chain,
4169         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
4170         to support call chains (backtrace) in the stat profiler.
4171         * profiler.c, profiler-private.h: Likewise.
4172
4173 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4174
4175         * generic-sharing.c: Init generic class when a method of it is
4176         requested via a runtime generic context.
4177
4178 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
4181
4182         * reflection.c (mono_type_get_object): Add a FIXME.
4183
4184         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
4185
4186         * class.c (mono_class_get_method_by_index): New helper function, returning an
4187         entry in the class->methods array.
4188
4189 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4190
4191         * class.c (mono_class_init): Only do the array optimization for szarrays. 
4192         Avoid creating a generic vtable for generic instances as well.
4193         (mono_class_get_method_from_name_flags): Don't search in the metadata for
4194         generic instances.
4195
4196 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4197
4198         * loader.c (mono_get_method_constrained): Inflate the signature
4199         with class context. Fix #325283.
4200
4201 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * object.c (mono_class_create_runtime_vtable): Add a comment.
4204
4205         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
4206         where needed.
4207         (setup_interface_offsets): Handle the case when this is called twice for arrays.
4208         (mono_class_setup_vtable_general): Add an assert.
4209         (mono_class_init): Avoid creating a generic vtable for arrays.
4210
4211         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
4212         here, let mono_class_init () do that.
4213
4214         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
4215         interfaces in mscorlib.
4216
4217         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
4218         interfaces. Add some comments.
4219         (mono_class_init): Call mono_class_setup_methods () here since it is no
4220         longer called by mono_class_setup_vtable ().
4221
4222         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
4223         not set in class->vtable.
4224         (mono_class_create_runtime_vtable): Reenable the disabled code.
4225
4226         * object.c (mono_class_create_runtime_vtable): Disable the last change for
4227         now as it causes some test failures.
4228
4229         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
4230         if using the vtable trampoline. Also remove some strange code which put the
4231         generic methods themselves into the vtable slots. Remove the AOT init_vtable
4232         stuff as it is no longer needed.
4233
4234 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
4235
4236         * pedump.c: Give make --verify all option check code as well.
4237         Using --verify code won't check for metadata now.
4238
4239 2008-05-19  Martin Baulig  <martin@ximian.com>
4240
4241         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
4242
4243         * mono-debug.c
4244         (_mono_debug_using_mono_debugger): New global variable; it's set
4245         directly by the debugger, so mono_debug_using_mono_debugger() also
4246         works after attaching.
4247
4248 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
4249
4250         * object.c (mono_class_create_runtime_vtable): Use memory barriers
4251         as we do double checked locking on MonoClass::runtime_info and
4252         MonoClassRuntimeInfo::domain_vtables.
4253
4254 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * debug-helpers.c (print_field_value): Fix a warning.
4257
4258 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
4261         set in the AOT case.
4262
4263 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
4264
4265         * class.c (mono_class_setup_vtable_general): Use memory barriers
4266         as we do double checked locking on MonoClass::vtable.
4267
4268 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
4269
4270         * reflection.c (resolve_object): Inflate only if the generic context
4271         is not null. Fixes #389886.
4272
4273 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
4274
4275         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
4276         instead of g_free.
4277
4278         Code is contributed under MIT/X11 license.
4279
4280 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
4281
4282         * class.c: Revert unrelated change.
4283
4284 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
4285
4286         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
4287         a generic instantiation, use mono_class_from_mono_type instead of playing
4288         with MonoType directly.
4289
4290 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
4291
4292         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
4293         checks must ignore generic instantiations, so mono_class_has_parent is not
4294         suitable. Fixes #390128.
4295
4296 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
4297
4298         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
4299         it to avoid registering tokens during metadata generation. Fixes #390023.
4300
4301 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
4302
4303         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
4304         consistent.
4305
4306         Contributed under MIT/X11 license.
4307
4308 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
4309
4310         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
4311         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
4312         to fixup the EXE image.
4313         (mono_cleanup): Use mono_close_exe_image.
4314         (mono_close_exe_image): New function.
4315         * image.c: Include "marshal.h".
4316         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
4317         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
4318         counting when the image is loaded outside of mono_image_open_full. Set status
4319         based on GetLastError.
4320         * coree.c: Include required headers. Add init_from_coree.
4321         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
4322         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
4323         (_CorExeMain): Set init_from_coree.
4324         (CorExitProcess): Only call ExitProcess for now.
4325         (CorBindToRuntimeEx): New stub implementation.
4326         (CorBindToRuntime): New function.
4327         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
4328         (MonoFixupExe): ILONLY executables require no fixups.
4329         (mono_set_act_ctx): New function to set activation context.
4330         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
4331         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
4332         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
4333         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
4334         as MONO_INTERNAL.
4335         * domain-internals.h: Add mono_close_exe_image.
4336
4337         Contributed under MIT/X11 license.
4338
4339 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
4340
4341         * metadata.c (mono_metadata_compute_size): Correctly calculate field
4342         size for generic param and event tables. Fixes #388977.
4343
4344 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
4345
4346         * loader.c (mono_method_signature): Use memory barriers because of the double
4347         checked locking pattern.
4348
4349         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
4350         aborting or aborted as well. Fixes #376391.
4351         
4352         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
4353         existing runtime state in the Suspend handler during shutdown.
4354
4355 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
4358
4359         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
4360         which are starting up or shutting down.
4361
4362         * threads.c (mono_threads_set_shutting_down): Don't return a value since
4363         this function never returns if the runtime is already shutting down.
4364
4365         * icall.c (ves_icall_System_Environment_Exit): Update after 
4366         mono_threads_set_shutting_down () signature change.
4367         
4368 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
4369
4370         * class.c: Added can_access_instantiation to verify if the instantiation
4371         is visible. Fix access check for nested types as they returned TRUE
4372         before doing type and generic instantiation visibility checks.
4373
4374 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * reflection.c (mono_reflection_create_generic_class): The created type
4377         must have a different container from its TypeBuilder. Otherwise they
4378         will end sharing generic arguments, which is wrong.
4379
4380         Due to the sharing, making a generic instance of the created type using
4381         the TypeBuider generic arguments resulted in the generic type definition
4382         been returned, which is wrong as well.
4383
4384         As a bonus the code was leaking the type_params array. This memory should
4385         be allocated from the image mempool.
4386
4387         This fixes bug #354047.
4388
4389 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
4390
4391         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
4392         to here         as they are now used in assembly.c new code.
4393         Added a skipverification flag to MonoAssembly.
4394         New internal function mono_assembly_has_skip_verification.
4395
4396         * assembly.c: New function mono_assembly_has_skip_verification. It checks
4397         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
4398         part of #387274.
4399
4400 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4401
4402         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
4403         needed. Fixes #387034.
4404
4405         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
4406
4407 2008-05-06  Miguel de Icaza  <miguel@novell.com>
4408
4409         * assembly.c (mono_assembly_load_reference): Prevent crash while
4410         disassembling Silverlight 2.0 executables while we still do not
4411         have GACed libraries.
4412
4413 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * reflection.c: Special case generic type definitions as well. Fixes #383444.
4416
4417 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
4418
4419         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
4420         of the dynamic case. Fixes #387404.
4421
4422 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
4423
4424         *verify.c (mono_verifier_is_class_full_trust): If under
4425         verify_all and the verifier mode was not set, only
4426         gac and corlib types are fulltrust. This makes --verify-all
4427         usable to detect unverifiable code, which is the expected
4428         use case.
4429
4430 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * verify.h: Ops, commited the header with debug
4433         enabled.
4434
4435 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
4436
4437         * verify.c (merge_stack): Use the new value on unverifiable
4438         stack merges.
4439
4440         * verify.c (verify_type_compatibility_full): Comparison
4441         of nullable types can't use mono_class_is_assignable_from.
4442
4443         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
4444         that makes all verification errors be reported.
4445
4446         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
4447         mono_method_verify.
4448
4449 2008-05-05  Robert Jordan  <robertj@gmx.net>
4450
4451         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
4452         support for value types. See #386415.
4453
4454         * object.c: comments.
4455
4456         Code is contributed under MIT/X11 license.
4457
4458 2008-05-05  Martin Baulig  <martin@ximian.com>
4459
4460         * debug-mono-symfile.h
4461         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
4462         for old pre-terrania symbol files.
4463
4464 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4465
4466         * mono-config.c: Add ppc64 architecture.
4467
4468         Code is contributed under MIT/X11 license.
4469
4470 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4471
4472         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
4473           PPC64 uses function descriptors as well.
4474
4475         Code is contributed under MIT/X11 license.
4476
4477 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
4478
4479         * object.c (compute_class_bitmap): Ignore literal static fields.
4480
4481         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
4482         var has an invalid format.
4483         (describe_ptr): Add some sanity checks for the vtable.
4484         (add_nursery_frag): Clear unused nursery fragments.
4485         (major_collection): Clear all remaining nursery fragments.
4486
4487 2008-05-03  Robert Jordan  <robertj@gmx.net>
4488
4489         * image.c, metadata-internals.h: add thunk_invoke_cache.
4490
4491         * marshal.c, marshal.h: implement
4492         mono_marshal_get_thunk_invoke_wrapper ().
4493
4494         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
4495
4496         Code is contributed under MIT/X11 license.
4497
4498 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
4499
4500         * verify.c (do_leave): Empty the stack.
4501
4502 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
4503
4504         * class.c (mono_class_is_assignable_from): Variance
4505         doesn't work between reference and value types. For example,
4506         given type C<T+>, C<int32> is not assignable to C<object>.
4507         Break the argument checking loop on first error. 
4508
4509 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
4510
4511         * icall.c : base64_to_byte_array() needs some more strict
4512           check for sequence of '=' characters. Patch by Santa
4513           Marta (http://deee.g.hatena.ne.jp/santamarta).
4514
4515           Contributed under MIT/X11 license.
4516           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
4517
4518 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
4519
4520         * domain.c: Disable LoadLibrary support to fix Win32 build.
4521
4522         Code is contributed under MIT/X11 license.
4523
4524 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
4527         to help with cache behaviour.
4528
4529 2008-05-01  Miguel de Icaza  <miguel@novell.com>
4530
4531         * appdomain.c (mono_domain_from_appdomain): Add new accessor
4532         method. 
4533
4534 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
4537
4538 2008-05-01  Dick Porter  <dick@ximian.com>
4539
4540         * process.c (process_get_fileversion): Only pass 16 bits of
4541         language ID to VerLanguageName.  Fixes bug 381204.
4542
4543 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4544
4545         * verify.c (mono_method_verify): Fix the comparison
4546         operator for code bounds check.
4547
4548 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
4549
4550         * verify.c (mono_method_verify): Check the bounds of
4551         all access of the code array.
4552
4553 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
4554
4555         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
4556
4557 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
4558
4559         * image.c (mono_image_strong_name_position): Fix return value when the rva is
4560         not valid.
4561
4562 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4563
4564         * loader.c (mono_get_method_from_token, mono_method_signature): Add
4565         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
4566         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
4567         fixup main EXE images when using mono.exe for mixed-mode assembly support.
4568         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
4569         mono_runtime_load.
4570         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
4571         runtime initialization from metadata.
4572         * assembly.c: Remove obsolete ceGetModuleFileNameA.
4573         (mono_set_rootdir): Use mono_get_module_file_name.
4574         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
4575         handles.
4576         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
4577         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
4578         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
4579         MonoCLIImageInfo. Add support for module handles.
4580         (load_cli_header): Update mono_cli_rva_image_map signature.
4581         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
4582         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
4583         (mono_image_rva_map): Add support for module handles.
4584         (mono_image_ensure_section_idx): Add support for module handles.
4585         (mono_image_close): Add support for module handles.
4586         (do_load_header): Add support for module handles.
4587         (mono_image_open_from_module_handle): New function for internal use.
4588         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
4589         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
4590         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
4591         handles.
4592         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
4593         * image.h: Add mono_image_fixup_vtable.
4594         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
4595         support.
4596         * coree.h: New file.
4597         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
4598         unsupported native code.
4599         (mono_marshal_set_callconv_from_modopt): New function splitted from
4600         mono_marshal_get_managed_wrapper.
4601         (mono_marshal_get_managed_wrapper): Use
4602         mono_marshal_set_callconv_from_modopt.
4603         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
4604         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
4605         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
4606         that results in a deadlock when the runtime is loaded in _CorDllMain.
4607         * Makefile.am: Add coree.c and coree.h.
4608
4609         Contributed under MIT/X11 license.
4610
4611 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4612
4613         * generic-sharing.c: Search for type arguments in array element
4614         types as well.
4615
4616 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4617
4618         * class-internals.h, generic-sharing.c: New, small runtime generic context.
4619
4620         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
4621
4622         * object.c: Don't setup the RGCTX when the vtable is created,
4623         because we're setting it up lazily now.
4624
4625 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
4628         64 bit support.
4629
4630 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4631
4632         * verify.c (verify_class_for_overlapping_reference_fields): 
4633         If class is under fulltrust allow reference types to overllap
4634         if they have the same RVA.
4635
4636 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * pedump.c: Added new flag valid-only, that makes the verifier
4639         behaves just like --security=validil. It won't fail type load
4640         due to unverifiable restrictions.
4641
4642 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4643
4644         * class-internals.h (struct MonoMethod): Added a verification_success
4645         field to cache verifier executions. Reduced MonoMethod:slot size by
4646         one bit.
4647
4648 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
4651         instead of a 'vt' argument to save an indirection and to allow these to be used
4652         for valuetypes.
4653         (scan_vtype): New helper function to scan an area using a gc descriptor.
4654         (mono_gc_wbarrier_value_copy): Implement this.
4655         (handle_remset): Add support for REMSET_VTYPE.
4656         (find_in_remset_loc): Ditto.
4657         (mono_gc_base_init): Allow some debugging options to be controlled through the
4658         use of the MONO_GC_DEBUG env variable.
4659         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
4660         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
4661
4662 2008-04-23  Martin Baulig  <martin@ximian.com>
4663
4664         * domain.c (mono_domain_create): Move the call to
4665         mono_debug_domain_create() down, after allocating the domain id.
4666
4667 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
4668
4669         verify.c (verify_class_for_overlapping_reference_fields): Skip
4670         static fields while verifying for overlapping fields as they
4671         don't matter at all.
4672
4673 2008-04-23  Marek Habersack  <mhabersack@novell.com>
4674
4675         * domain-internals.h: added a declaration of
4676         mono_make_shadow_copy.
4677
4678         * assembly.c (mono_assembly_open_full): shadow copying of
4679         assemblies moved to here, so that all the assemblies within the
4680         application domain's private binary directories can be
4681         processed. Fixes bug #380546
4682
4683         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
4684         mono_make_shadow_copy and made non-static. The decision whether
4685         to shadow-copy an assembly is made based on its location - it's
4686         copied if it's in one of the private application domain binary
4687         directories and its different to the target file in the shadow
4688         directory. Fixes bug #380546
4689
4690 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4691
4692         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
4693
4694         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
4695         types.
4696
4697         * reflection.c (mono_image_create_token): Handle 
4698         Method/ConstructorOnTypeBuilderInst.
4699         (resolve_object): Ditto.
4700         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
4701         so it can be called from resolve_object. Also handle the case when the inflated
4702         class already has its methods setup.
4703
4704 2008-04-21  Martin Baulig  <martin@ximian.com>
4705
4706         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
4707
4708 2008-04-20  Geoff Norton  <gnorton@novell.com>
4709
4710         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
4711         pointer dereference.
4712
4713 2008-04-15  Marek Habersack  <mhabersack@novell.com>
4714
4715         * appdomain.c (try_load_from): if IOMAP is in effect, call the
4716         portability API to look up the assembly file. Fixes behavior in
4717         situations when the application has a bin/ directory, but the
4718         assembly search patch refers to Bin/ (and thus the requested file
4719         name is Bin/SomeLibrary.dll). Fixes bug #379888
4720
4721 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
4722
4723         verify.c (mono_type_is_generic_argument): Extracted this check
4724         from a dozen places to here.
4725
4726         verify.c: Fixed all issues related to boxing generic arguments
4727         and their constraints.
4728
4729 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
4730
4731         verify.c (mono_class_interface_implements_interface): Fix win32 build.
4732
4733 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4734
4735         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
4736         isn't finished yet. Fixes #363447.
4737
4738 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
4741         Fixes #346419.
4742
4743 2008-04-13  Jb Evain  <jbevain@novell.com>
4744
4745         * domain.c: update the 2.1 profile versions.
4746         Merged from the Moonlight 2 branch.
4747
4748 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
4751         mscorlibs for the non-refonly case as well.
4752
4753         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
4754         in mono_assembly_load_from_full (). Fixes #378924.
4755
4756 2008-04-11  Geoff Norton  <gnorton@novell.com>
4757
4758         * icall.c: The global extern environ doesn't exist on Mac.  We
4759         need to call NSGetEnviron instead.
4760
4761 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
4762
4763         verify.c: Add generic method constraint verification.
4764
4765 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
4766
4767         class.c (mono_class_inflate_generic_method_full): Add a long
4768         explanation to the is_mb_open hack. Remove the FIXME.
4769
4770 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
4771
4772         * verify.c (mono_method_verify): Mark all unknown opcodes
4773         as invalid. Mark jmp as unverifiable.
4774
4775 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
4776
4777         * verify.c: Add code to do type constraint verification on class instances.
4778
4779         * verify.c (mono_verifier_verify_class): Use the type constraint 
4780         verification code.
4781
4782 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
4783
4784         * class.c (mono_class_get_field_default_value): Don't pass cindex
4785         as hint to mono_metadata_get_constant_index. The local is not initialized
4786         and should contain garbage most of the time. This could only work
4787         with a lot of luck.
4788
4789 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
4790
4791         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
4792
4793 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
4794
4795         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
4796
4797         * class.c (mono_class_from_generic_parameter): Save the token of the
4798         generic param in MonoClass::sizes.generic_param_token.
4799
4800         * reflection.c (mono_custom_attrs_from_class): If the class type is
4801         VAR or MVAR retrieve the attributes of the generic param.
4802
4803 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         * class.c (mono_class_init): Do class verification if the verifier
4806         is enabled.
4807
4808 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4809
4810         * verify-internal.h: Added mono_verifier_verify_class.
4811
4812         * verify.c: Added mono_verifier_verify_class. It checks for
4813         classes with explicit layout that have overlapping reference fields.
4814
4815         * pedump.c: Init the verifier state prior to verification. Fixed
4816         command line arguments.
4817
4818 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
4819
4820         * Makefile.am: Added verify-internals.h, hopefully fix the build.
4821
4822 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4823
4824         * verify-internals.h: Fix a warning.
4825
4826 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4827
4828         * verify-internals.h: New header with the verifier configuration
4829         extracted from mini.c.
4830
4831         * verify.c: Implemented the new functions exported by verify-internals.h.
4832
4833 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
4834
4835         * verify.c: Add proper verification of ckfinite.
4836
4837 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4838
4839         * verify.c (do_conversion): Improved error message to something
4840         more meanfull.
4841
4842         * verify.c (check_is_valid_type_for_field_ops): Fix to work
4843         with primitive types.
4844
4845 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4846
4847         * verify.c: Added tail prefix checking. Marked icall
4848         as unverifible.
4849
4850 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
4851
4852         * verify.c: Fix the detection of branches to the middle
4853         of an instruction.
4854
4855 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
4856
4857         * verify.c: Implemented verification of volatile. and
4858         unaligned. prefix. Check if a type is valid after retrieving it.
4859
4860 2008-04-01  Dick Porter  <dick@ximian.com>
4861
4862         * process.c (process_get_fileversion): If there's no string block,
4863         set the file language to en_US.  Fixes the other new part of bug
4864         374600.
4865
4866 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * class.c: New functions mono_method_can_access_field_full and
4869         mono_method_can_access_method_full. They perform type visibility
4870         and type site check.
4871
4872         * class-internal.h: Added exported functions.
4873
4874         * verify.c: Use new functions to implement proper visibility checks.
4875
4876 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
4879
4880 2008-03-28  Dick Porter  <dick@ximian.com>
4881
4882         * process.c (process_get_fileversion): Use the first language ID
4883         we see, rather than insisting on an invariant language.  Fixes bug
4884         374600.
4885
4886 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
4887
4888         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
4889         the streams to fix reading of invalid memory later.
4890
4891         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
4892         to ease debugging.
4893
4894 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4895
4896         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
4897         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
4898
4899 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
4900         * threads.h: Added MonoThreadManageCallback type and
4901         mono_thread_set_manage_callback prototype
4902         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
4903         (used to store the mono_thread_manage callback).
4904         * threads.c: Added mono_thread_set_manage_callback, and handle
4905         "MonoThread->manage_callback" in build_wait_tids.
4906
4907 2008-03-26  Dick Porter  <dick@ximian.com>
4908
4909         * process.c (process_get_fileversion): Set FileVersionInfo strings
4910         to Empty when the resource doesn't have the particular info.
4911         Fixes bug 355717.
4912
4913 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
4914
4915         * verify.c (mono_method_verify): Proper prefix validation.
4916
4917 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4918
4919         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
4920         itself in a separate argument instead of throwing them. Fixes #373448.
4921
4922         * appdomain.c: Bump corlib version.
4923
4924 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
4925
4926         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
4927
4928 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
4929
4930         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
4931         version macros.
4932
4933 2008-03-20  Mark Probst  <mark.probst@gmail.com>
4934
4935         * generic-sharing.c, class-internals.h: Code for putting
4936         reflection types into the runtime generic context.
4937
4938 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
4939
4940         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
4941         Fixes #340662. 
4942
4943
4944 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
4945
4946         * verify.c (VerifyContext): Added instruction prefix data to the struct.
4947
4948         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
4949
4950         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
4951
4952         * verify.c (do_cast): Let the result value keep the boxed status.
4953
4954         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
4955
4956 2008-03-17  Jb Evain  <jbevain@novell.com>
4957
4958         * reflection.c: when running on a 2.0 runtime, emit
4959         unconditionally the #~ header version as 2.0, and the
4960         CLI header version as 2.5, for symmetry's sake with csc.
4961
4962 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * class.c: Remove the unused cache_interface_offsets stuff.
4965
4966         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
4967         profiler.c: Fix warnings.
4968
4969 2008-03-16  Mark Probst  <mark.probst@gmail.com>
4970
4971         * generic-sharing.c, class-internals.h: Support for putting
4972         methods into the runtime generic context.
4973
4974 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
4975
4976         * class.c (mono_class_setup_fields): Ignore calls made to this function for
4977         classes which are generic instances of not-yet finished typebuilders. Fixes
4978         #351172.
4979
4980         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
4981
4982 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
4985
4986         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
4987         field, replace it with a hash table in MonoDynamicImage.
4988
4989         * reflection.c (inflate_mono_method): Access the generic definition object from
4990         image->generic_def_objects instead of imethod->reflection_info.
4991
4992         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
4993
4994         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
4995         
4996         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
4997         function in reflection.c so it is easier to keep in sync with the dynamic image
4998         creation code.
4999
5000         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
5001         mono_image_close ().
5002
5003 2008-03-15  Mark Probst  <mark.probst@gmail.com>
5004
5005         * class.c (mono_class_generic_sharing_enabled): Disable generic
5006         sharing for all architectures except AMD64 and x86 to fix build.
5007
5008 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
5009
5010         * verify.c: Use the generic definition MonoGenericContext when available.
5011         Remove code for checking generics instance compatibility in favor of
5012         mono_class_is_assignable_from.
5013
5014 2008-03-14  Mark Probst  <mark.probst@gmail.com>
5015
5016         * marshal.c, marshal.h, metadata-internals.h, image.c,
5017         wrapper-types.h: New wrapper for invoking a shared static method
5018         without having to pass the runtime generic context argument.
5019
5020 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
5021
5022         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
5023
5024 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
5025
5026         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
5027         
5028         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
5029         create a token from a FieldOnTypeBuilderInst.
5030         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
5031         (resolve_object): Ditto.
5032
5033         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
5034         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
5035
5036 2008-03-14  Martin Baulig  <martin@ximian.com>
5037
5038         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
5039
5040         * debug-mono-symfile.h
5041         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
5042         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
5043
5044 2008-03-10  Martin Baulig  <martin@ximian.com>
5045
5046         * debug-mono-symfile.h
5047         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
5048         `lexical_block_table_offset'.
5049         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
5050         `lexical_blocks'.
5051         (MonoSymbolFile): Added `version'.
5052
5053         * mono-debug.h
5054         (MonoDebugLexicalBlockEntry): Removed.
5055         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
5056         `lexical_blocks'.
5057
5058         * mono-debug.c (mono_debug_add_method): Don't compute lexical
5059         blocks here; the debugger now does this internally.
5060
5061 2008-02-27  Martin Baulig  <martin@ximian.com>
5062
5063         * object.c (mono_runtime_exec_main): Call
5064         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
5065         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
5066
5067 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
5068
5069         * verify.c (verify_type_compatibility_full): Allow native int to be converted
5070         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
5071
5072 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
5075         ldftn with a virtual method.
5076
5077 2008-03-13  Geoff Norton  <gnorton@novell.com>
5078
5079         * decimal.c:  Only include memory.h if the platform has it.
5080
5081 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
5082
5083         * assembly.c, class.c, metadata-internals.h: make sure public key
5084         tokesns are compared in a case-insensitive way. Also, all
5085         the lookups in the GAC use a lowercase public key token
5086         (gaacutil already does the lowercasing on install). Fixes
5087         bug #369541.
5088
5089 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
5090
5091         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
5092         and return value.
5093
5094 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
5095
5096         * image.c: when someone loads a mscorlib from a file, return the
5097         currently loaded mscorlib (fixes bug #369253).
5098
5099 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
5100
5101         * class.c: handle types with no parents by forcing them to have
5102         System.Object as a parent and marking them as broken (this currently
5103         allows the first part of bug #369173 to work as well, likely because
5104         we don't check for typeload exceptions everywhere yet).
5105
5106 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
5107
5108         * class.c: more complete check that types belong to corlib
5109         (fixes second part of bug #369173).
5110
5111 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
5112
5113         * generic-sharing.c:  Including glib.h for the MSVC builds to define
5114           "inline" to "__inline" before including mono-membar.h.
5115           
5116         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
5117           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
5118           MSVC builds.
5119
5120         Contributed under MIT/X11 license.
5121
5122 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
5123
5124         * verify.c (do_invoke_method): Remove return type validation.
5125
5126         * verify.c (do_ret): Do return type validation at return site instead of
5127         call site.
5128
5129 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
5130
5131         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
5132
5133         * verify.c: Some todos cleaned and improved a few error messages.
5134
5135 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
5138
5139 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5140
5141         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
5142         system types correctly.
5143
5144         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
5145         function.
5146
5147 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5148
5149         * assembly.c (build_assembly_name): Fix a warning.
5150
5151 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5152
5153         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
5154         the called function takes an object type argument. Fixes storing or
5155         valuetypes across remoting as well as reducing memory usage.
5156         * image.c, metadata-internals.h: remove now unused ldfld_remote and
5157         stfld_remote wrapper caches.
5158
5159 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5160
5161         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
5162         is not found.
5163
5164         * reflection.c (mono_image_register_token): New helper function to save
5165         a token->object mapping.        
5166
5167         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
5168         managed code.
5169
5170         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
5171         one dimension arrays. Fixes #367670.
5172         (mono_reflection_get_type_internal): Ditto.
5173
5174 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
5175
5176         * marshal.c: mono_load_remote_field_new() always returns object.
5177         so use the proper signature (fixes bug #366445).
5178
5179 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5180         
5181         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
5182         add an 'inline_failure' flag instead.
5183
5184 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5185
5186         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
5187         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
5188         contains the location of "this", used for exception handling.
5189
5190 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5191
5192         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
5193         their size on all platforms for perf reasons.
5194
5195 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5196
5197         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
5198         object-internal.h
5199
5200         * object-internal.h: Same.
5201
5202 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5203
5204         * reflection.h: Fix the build I just broke.
5205
5206 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5207
5208         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
5209         Test if a token is valid, this remove explicit usage of 
5210         MonoDynamicImage::tokens from the verifier code.
5211
5212         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
5213
5214         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
5215         instead of direct access to MonoDynamicImage::tokens.
5216
5217 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5218
5219         * verify.c (token_bounds_check): Fix the build I just broke.
5220
5221 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
5222
5223         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
5224
5225         * verify.c (verifier_load_method): Fixed the errors message.
5226
5227         * verify.c (mono_method_verify): Fixed a debug message.
5228
5229 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
5230
5231         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
5232         mono-perfcounters.h, class-internals.h: support for predefined
5233         writable counters, query of categories and counters, bugfixes.
5234
5235 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
5236
5237         * verify.c (do_refanytype): Verify the refanytype opcode.
5238
5239         * verify.c (mono_method_verify): Use do_refanytype.
5240
5241 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
5242
5243         * verify.c (do_mkrefany): Verify the mkrefany opcode.
5244
5245         * verify.c (mono_method_verify): Use do_mkrefany.
5246
5247 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
5248
5249         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
5250         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
5251         implementation.
5252
5253 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5254
5255         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
5256         the type load exception.
5257
5258 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
5259
5260         * verify.c: Added a few FIXME for method signatures
5261
5262         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
5263         of mono_method_get_signature and get vararg call working. Removed unused
5264         checks for return value.
5265
5266         * verify.c (do_refanyval): Verify the refanyval opcode.
5267
5268         * verify.c (mono_method_verify): Implemented verification of arglist and
5269         use do_refanyval.
5270
5271 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5272
5273         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
5274         vtypes to marshal.c.
5275
5276         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
5277         it works for AOT as well.
5278
5279 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
5280
5281         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
5282         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
5283         the system time is adjusted.
5284
5285 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
5286
5287         * icall.c, icall-def.h: use the new time functions (fixes the
5288         non-monotonic behaviour of TickCount).
5289
5290 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
5293         it breaks the build.
5294         
5295         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
5296         cattr is not finished yet.
5297
5298 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
5299
5300         * verify.c: Proper token validation for field, method and type.
5301
5302 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
5303
5304         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
5305
5306         * loader.c (method_from_memberref): Generate type load error instead of method missing
5307         if the type is not found.
5308
5309 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
5312         some of the conversions caused the generation of a marshal directive exception.
5313
5314 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
5315
5316         verify.c: Report which exception should be thrown by the JIT.
5317         Added a lot of FIXME notes.
5318
5319 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5320
5321         * generic-sharing.c: Runtime generic context slots are not
5322         instantiated on init anymore.  Instead, provide function to do the
5323         instantiating on demand.
5324
5325         * class-internals.h: Added vtable to runtime generic context.
5326         Macros for encoding direct and indirect slot offsets in one
5327         guint32.
5328
5329 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5330
5331         * object.c, generic-sharing.c: Moved some generic sharing code
5332         from object.c to generic-sharing.c.
5333
5334         * generic-sharing.c: Added support for extensible runtime generic
5335         context.
5336
5337         * metadata-internals.h: Two new hash tables in MonoImage for
5338         extensible runtime generic context support.
5339
5340         * domain.c: Unregister generic vtables upon domain unloading.
5341
5342         * image.c: Destroy new hash tables upon image unloading.
5343
5344         * metadata.c: Unregister generic subclasses upon image unloading.
5345
5346         * class-internals.h: New data structure for runtime generic
5347         context template.  New fields in the runtime generic context for
5348         extensible part.
5349
5350         * Makefile.am: Added generic-sharing.c.
5351
5352 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
5353
5354         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
5355         there is a pending loader exception, raise it.
5356
5357         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
5358         same.
5359
5360         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
5361         same.
5362
5363         Fixes #363450.
5364
5365 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5366
5367         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
5368
5369         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
5370         
5371         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
5372         ref-only requests for compatibility with MS.
5373
5374 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
5375
5376         * reflection.c (mono_custom_attrs_from_method): Don't silently
5377         return an empty list for generic method instances.
5378         (mono_custom_attrs_from_param): Likewise.
5379
5380 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
5381             Raja R Harinath  <harinath@hurrynot.org>
5382
5383         Fix #354757
5384         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
5385         * class.c (mono_class_inflate_generic_method_full): Initialize it
5386         when a fully-open method is instantiated.
5387         * metadata.c (inflated_method_equal, inflated_method_hash): Update
5388         to new field.
5389         * reflection.c (inflate_mono_method): Don't create a temporary context.
5390
5391 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
5392
5393         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
5394         Compute correct value, to prepare for imethod->reflection_info going away.
5395
5396 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
5399
5400 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * verify.c: Implement skip visibility flag.
5403
5404 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
5405
5406         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
5407         which contains an extra field to tell the kind of exception that should be thrown.
5408
5409         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
5410
5411 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
5412
5413         * loader.c (mono_method_get_param_names): Initialize 'klass' after
5414         'method' is updated.
5415
5416 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
5417
5418         * class.c (mono_class_layout_fields): Set class->min_align for classes using
5419         explicit layout as well. Fixes #360375.
5420
5421 2008-02-11  Geoff Norton  <gnorton@novell.com>
5422
5423         * loader.c: Guard and dereference against inflated generic methods
5424
5425 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
5426
5427         * class.c: Include Retargetable spec in assembly name.
5428         * assembly.c: Always include PublicKeyToken spec in assembly name
5429         (with value "null" if assembly is not signed), and include
5430         Retargetable spec.
5431         * icall-def.h: Added icall for Assembly.get_fullname.
5432         * icall.c: Added icall returning the fullname of an assembly.
5433
5434 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5435
5436         * class.c (mono_class_setup_vtable_general): Add a missing call to
5437         mono_class_setup_methods () which is needed in the AOT case.
5438
5439 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
5440
5441         * verify.c (mono_type_get_stack_name): Added. Return the name for the
5442         stack type of the given MonoType.
5443
5444         * verify.c (verify_type_compatibility_full): Handle the void type.
5445
5446         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
5447         way stack merging works.
5448
5449         * verify.c (store_local): Improved verification message.
5450
5451         * verify.c (do_branch_op): If the merging is invalid, the method
5452         is unverifiable and not invalid. Improved error message.
5453
5454         * verify.c (merge_stacks): Properly merge a boxed valuetype and
5455         a reference type diferent than System.Object. Improved error
5456         message.
5457
5458 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
5459
5460         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
5461
5462         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
5463         type of an enum even if the argument is byref.
5464
5465         * verify.c: Replace all explicit uses of enumtype and enum_basetype
5466         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
5467
5468         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
5469
5470         *verify.c (verify_type_compatibility_full): Make enum types
5471         compatible with their base types.
5472
5473         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
5474         types are compatible for the special case of a boxed valuetype and
5475         System.Object.
5476
5477         * verify.c (verify_stack_type_compatibility): The function
5478         is_compatible_boxed_valuetype was extracted from here.
5479
5480         * verify.c (push_arg): Only set ctx->has_this_store if the method
5481         is not static.
5482
5483         * verify.c (do_ldelem): Fixed a typo in an error message and added
5484         strict check for mixing int32 and native int as the array type
5485         and ldelem type.
5486
5487         * verify.c (merge_stacks): Consider boxed valuetypes in the
5488         compatibility checks.
5489
5490 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
5491         * profiler.h: (MonoGCEvent): Added start-stop the world events.
5492
5493 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
5494         *class.c: use_new_interface_vtable_code: renamed the env var to have
5495         a "MONO_" prefix, and fix the logic to enable it by default.
5496
5497 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
5498         *class.c:
5499         mono_class_setup_vtable_general: rewrote the way in which interface
5500         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
5501         makes the code more maintainable.
5502         For now the old code is still there, and can be activated setting
5503         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
5504
5505 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
5506
5507         * verify.c: guarded some debug functions around and #ifdef.
5508
5509         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
5510
5511 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5512
5513         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
5514         changes for now since they seem to break too many things.
5515
5516 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5517
5518         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
5519         mono_marshal_find_nonzero_bit_offset): Added macro and function
5520         for finding the byte- and bit-offset of a bitfield within a
5521         struct.
5522
5523 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5524
5525         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
5526         (mono_marshal_get_struct_to_ptr): Ditto.
5527
5528         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
5529         cctor_signature.
5530
5531 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5532
5533         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
5534         between methods for non-corlib types.
5535
5536 2008-02-02  Geoff Norton  <gnorton@novell.com>
5537
5538         * loader.c (mono_method_get_param_names): Populate the parameter name for 
5539         generic parameters as well. (Fixes #342536)
5540
5541 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
5542
5543         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
5544
5545         * verify.c (do_invoke_method): Fix for calling with byref structs.
5546
5547         * verify.c (do_cast): push a boxed value type based on the type token and not
5548         the type of stack.
5549
5550 2008-01-31  William Holmes  <billholmes54@gmail.com>
5551
5552         * process.c (process_module_string_read): Check the size returned form 
5553           VerQueryValue to avoid out of memory exception. 
5554
5555 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5556
5557         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
5558         Handle properly modules which are not in the moduleref table. Fixes
5559         #356938.
5560
5561 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5562
5563         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
5564         the dynamic case which is now in managed code.
5565         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
5566
5567         * marshal.c (mono_string_to_bstr): Fix a warning.
5568         (init_com_provider_ms): Ditto.
5569
5570         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
5571
5572         * exception.c (mono_get_exception_out_of_memory): New helper function.
5573
5574 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
5575
5576         * marshal.c: Add support for BSTR marshalling
5577         using other COM systems.
5578
5579         Code is contributed under MIT/X11 license.
5580
5581 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * object.c (mono_runtime_invoke_array): reverted previous
5584         commit as it breaks the build.
5585
5586 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
5587
5588         * object.c (mono_runtime_invoke_array): Verify arguments for
5589         invalid types. Fixes #348522.
5590
5591 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
5594         non-final virtual calls using call. 
5595
5596         * verify.c (do_invoke): fixed some TODOs.
5597
5598         * verify.c (push_arg): set has_this_store for "ldarga 0".
5599
5600 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5601
5602         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
5603         which belong to an inflated class. Fixes #356531.
5604
5605 2008-01-26  Robert Jordan  <robertj@gmx.net>
5606
5607         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
5608         which resort to FindFirstFile when a certain error condition
5609         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
5610         Code is contributed under MIT/X11 license.
5611
5612 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
5613
5614         * marshal.c (emit_marshal_string): Fix out string marshalling
5615         to use specified encoding. Fixes #323900.
5616
5617         Code is contributed under MIT/X11 license.
5618
5619 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
5620
5621         * class.c (mono_class_inflate_generic_method_full): Don't modify
5622         iresult->context after cache check.
5623
5624 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * class.c (mono_class_inflate_generic_method_full): Change the
5627         struct assignments to memcpy for better visibility and add some comments.
5628
5629 2008-01-23  Dick Porter  <dick@ximian.com>
5630
5631         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
5632         procedure, and make it work on windows.
5633
5634 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
5635
5636         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
5637         a MonoReflectionTypeBuilder since it is always of that type.
5638
5639         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
5640
5641         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
5642
5643         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
5644         
5645         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
5646
5647         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
5648
5649         * reflection.c (mono_reflection_create_runtime_class): Remove already created
5650         instantiations from the type cache.
5651
5652 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5653
5654         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
5655
5656         * verify.c (do_unbox_value): push a controled mutability managed pointer.
5657
5658 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5659
5660         * verify.c (do_ldstr): added, verifies if the #US token is valid.
5661
5662         * verify.c (mono_method_verify): removed old TODO
5663
5664 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * verify.c (do_newobj): add visibility check.
5667
5668 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5669
5670         * verify.c (do_load_function_ptr): add visibility check.
5671
5672 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
5673         *class.c:
5674         mono_generic_class_get_class: hook profiler events.
5675         mono_field_get_offset: added to support heap-shot in the new profiler.
5676         *class.h: exported mono_field_get_offset.
5677         * reflection.c:
5678         mono_reflection_setup_internal_class: hook profiler events.
5679
5680 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5681
5682         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
5683         argument here too and use it to avoid checking for pending exceptions if 
5684         possible.
5685
5686 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
5687
5688         * assembly.c (build_assembly_name): add arg for passing the assembly
5689         flags. Do not consider a PublicKey with value "null" valid.
5690         (mono_assembly_name_parse_full): added boolean argument that will be
5691         set if the assembly name contains a PublicKeyToken spec. Added support
5692         for the Retargetable spec for which only Yes or No are allowed as valid
5693         value. Consider assembly name invalid if Retargetable spec is set, but
5694         either version, culture or public key (token) are not specified.
5695         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
5696         with implementation in assembly.c.
5697         * icall.c (fill_reflection_assembly_name): also copy assembly flags
5698         from MonoAssemblyName.
5699         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
5700         introduced argument for mono_assembly_name_parse_full to know if the
5701         assembly name has a PublicKeyToken spec, and if it has instruct
5702         fill_reflection_assembly_name to use default value for keyToken (if
5703         PublicKeyToken is null).
5704
5705 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5706
5707         * verify.c (mono_method_verify): fixed ovf ops with
5708         float values. They are unverifiable now.
5709
5710 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5711
5712         * class.c (set_failure_from_loader_error): add BadImageException to the
5713         list of exceptions that can cause a type to fail to load.
5714
5715         * class.c (mono_class_get_exception_for_failure): same.
5716
5717 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5718
5719         * verify.c (in_any_exception_block): added, check if offset
5720         is part of any exception handling clause.
5721
5722         * verify.c (get_stack_type): added VAR and MVAR types.
5723
5724         * verify.c (do_stobj): better error messages.
5725
5726         * verify.c (do_cpobj): added, check cpobj.
5727
5728         * verify.c (do_initobj): added, check initobj.
5729
5730         * verify.c (do_sizeof): added, check sizeof.
5731
5732         * verify.c (do_localloc): added, check localloc.
5733
5734         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
5735
5736 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
5739         save_lmf/restore_lmf opcodes.
5740
5741         * threads.c (mono_threads_install_notify_pending_exc): New function to
5742         install a callback notifying the JIT there is a pending exception on a thread.
5743         (mono_thread_request_interruption): Call the new callback.
5744         (mono_thread_get_and_clear_pending_exception): New function to return the
5745         exception pending on a thread.
5746
5747         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
5748         to turn off checking for pending exceptions.
5749         (mono_marshal_get_native_wrapper): Ditto.
5750
5751 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5752
5753         * threads-types.h: Get rid of the unnecessary extern declarations.
5754
5755 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
5756
5757         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
5758         return field from parent class if not private.
5759         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
5760         returns fields from parent class if they are not private.
5761         (method_nonpublic): added function to determine if a given method
5762         should be considered non-public. Returns false for private methods
5763         on parent class, and internal methods from parent on the 1.0 profile.
5764         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
5765         use method_nonpublic function to determine whether method should be
5766         returned.
5767         (property_accessor_public): use newly introduced method_nonpublic
5768         function to determine whether accessor is non-public. 
5769         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
5770         event from parent class if not private. Only return static event if
5771         Static flag is set, and only return static event from parent class if
5772         FlattenHierarchy flag is set.
5773         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
5774         include non-private events from parent class.
5775
5776 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5777
5778         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
5779         warning.
5780
5781 2008-01-16  Wade Berrier <wberrier@novell.com>
5782
5783         * security.c: Add assembly.h header to appease some warnings
5784
5785 2008-01-16  Dick Porter  <dick@ximian.com>
5786
5787         * process.c (process_module_string_read): Remove trailing null
5788         when saving string.
5789
5790 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5791
5792         * class-internals.h: A new data structure describing the layout of
5793         a runtime generic context (MonoRuntimeGenericContextTemplate).
5794
5795         * metadata-internals.h: Added a hash table to MonoDomain that maps
5796         from open generic classes to their runtime generic context
5797         templates.
5798
5799         * object.c: Building of the runtime generic context, including
5800         proper handling of generic type arguments of superclasses.
5801         Building of the runtime generic context according to the template.
5802
5803 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * class.c (mono_class_setup_fields): Set field.count for generic instances.
5806         Fixes #350856.
5807
5808         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
5809         mono_portability_find_file (). Fixes #325466.
5810         (mono_image_get_public_key): Fix a warning.
5811
5812 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
5815         Fixes #353550.
5816         (mono_class_from_name_case): Ditto.
5817
5818 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
5819
5820         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
5821           common storage for the tables used in the System/NumberFormatter class.
5822
5823 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
5824
5825         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
5826
5827 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
5828
5829         * verify.c (get_boxable_mono_type): check if the token is valid.
5830
5831         * verify.c (set_stack_value): changed to add an error if an
5832         invalid type is set on stack. Changed all callers due to signature change.
5833
5834         * verify.c (do_stobj): implement stobj validation.
5835
5836 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
5837
5838         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
5839         set container->is_method, it was set earlier.
5840
5841         * metadata.c (type_in_image): Handle MVARs which belong to not finished
5842         generic methods.
5843
5844         * reflection.c (mono_reflection_initialize_generic_parameter): Set
5845         is_method of the generic container to TRUE for methods.
5846
5847 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * metadata.c (type_in_image): Handle type parameters properly.
5850
5851         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
5852         memory ownership of this structure.
5853
5854 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * verify.c (get_boxable_mono_type): make typedref types been just
5857         unverifiable. check for void type.
5858
5859         * verify.c (do_unbox_any): added, verify opcode unbox.any.
5860
5861         * verify.c (do_load_function_ptr): accept method spec tokens.
5862
5863 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * marshal.c (mono_class_native_size): Always set *align even if this is called
5866         recursively.
5867
5868 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
5869
5870         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
5871         out-of-date.
5872
5873 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
5874
5875         * verify.c: removed some old unused tables. A huge bunch of small fixes
5876         to things found while testing the verifier with mono basic.
5877
5878         * verify.c (dump_stack_value): dump null literal flag to.
5879
5880         * verify.c (verify_type_compatibility_full): fix comparison
5881         for types that have a generic super type.
5882
5883         * verify.c (verify_stack_type_compatibility): fix compatibility
5884         between null literals and reference types. fix compatibility between
5885         boxed valuetypes and object. fix corner case test for enums.
5886
5887         * verify.c (do_cmp_op): proper verification of cgt.un in case
5888         of reference types.
5889
5890         * verify.c (do_invoke_method): fix error message.
5891
5892         * verify.c (do_store_indirect
5893
5894         * verify.c (check_is_valid_type_for_field_ops): proper verification
5895         of managed pointers to valuetypes and boxed valuetypes. proper verification
5896         of null literals.
5897
5898         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
5899         allow token to be a reference type.
5900
5901         * verify.c (do_cast): proper handling of boxes valuetypes.
5902
5903         * verify.c (do_stelem): proper handling of storing a boxed valuetype
5904         in object[].
5905
5906         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
5907         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
5908         fixed the decoding of unbox_any
5909
5910 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
5911
5912         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
5913
5914 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
5915
5916         * verify.c (do_newobj): do delegate verification.
5917
5918         * verify.c (verify_delegate_compatibility): perform delegate
5919         verification.
5920
5921         * verify.c (verify_ldftn_delegate): perform tests related to
5922         ldftn delegates.
5923
5924         * verify.c (mono_delegate_signature_equal): perform the
5925         slightly diferent signature comparison required by delegates.
5926
5927         * metadata.c (mono_metadata_type_equal_full): added and exported
5928         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
5929         allows signature only comparison.
5930
5931         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
5932         as MONO_INTERNAL.
5933
5934 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * verify.c: added a bunch of stack_slot_* functions to
5937         make access to stack slot type easier. This is required to
5938         allow optional flags, like null literal, boxed value and
5939         this pointer.
5940         All access paths to IlStackDesc::stype have been changed 
5941         to use these new funcions.
5942         Removed a bunch of unused functions and cleared all warnings.
5943         This patch introduces the usage of the this pointer and 
5944         boxed value flags.
5945
5946 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
5947
5948         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
5949
5950 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
5951
5952         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
5953         match managed version.
5954
5955         * appdomain.c: Bump corlib version.
5956         
5957         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
5958         argument.
5959
5960 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
5961
5962         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
5963         Set public key token to zero-length byte array if assembly is not
5964         strongnamed.
5965
5966 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
5969         writing a vtype array elem.
5970
5971 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
5972
5973         * assembly.c (build_assembly_name): return FALSE if length of token is
5974         not 16 (if not "null").
5975         (mono_assembly_name_parse_full): return FALSE if value of version,
5976         culture, token or key is 0.
5977         * icall.c (fill_reflection_assembly_name): add boolean arguments to
5978         specify whether public key and public key token must be set to default
5979         value (zero-length byte array) if not available. Set versioncompat to
5980         SameMachine. If public key is available or the default is set, then
5981         set PublicKey flag.
5982         (ves_icall_System_Reflection_Assembly_FillName): if no public key
5983         is available, use empty byte array as default value. On the 2.0
5984         profile, use default value for public key token if not set.
5985         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
5986         profile, use default value for public key if not set. On the 2.0
5987         profile, use default value for public key token if not set.
5988         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
5989         default values for public key and public key token.
5990
5991 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
5994         field to keep it in synch with the managed object.
5995
5996         * marshal.c (emit_marshal_object): Add support for byref marshalling of
5997         delegates. Fixes #351520.
5998
5999         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
6000         contains defined memory.
6001         
6002         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
6003
6004         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
6005         
6006         * sgen-gc.c (check_consistency): New helper function to do a consistency check
6007         of the GC data structures.
6008
6009         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
6010
6011         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
6012         
6013         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
6014         barrier.
6015         (mono_array_clone_in_domain): Ditto.
6016         (mono_array_clone_in_domain): Ditto.
6017
6018         * threads.c (start_wrapper): Register the thread start argument as a GC root.
6019         (cache_culture): Use a write barrier.
6020
6021         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
6022         (ves_icall_get_property_info): Ditto.
6023
6024         * object.h (MONO_STRUCT_SETREF): New macro.
6025
6026         * class-internals.h (MonoStats): Add some GC statistics.
6027
6028         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
6029
6030 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
6031
6032         * exception.c (mono_exception_from_name_two_strings):
6033         Break from loop after method is found.
6034
6035 2008-01-04  Dick Porter  <dick@ximian.com>
6036
6037         * process.c (process_module_string_read): Rename variable to
6038         reflect correct usage, after fixing bug 345972.
6039
6040 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * verify.c (mono_type_create_fnptr_from_mono_method): 
6043         created a MonoType function pointer instance to be used during
6044         verification. The verifier releases this memory at end.
6045
6046         * verify.c (mono_method_is_constructor): extracted repeated
6047         checks for constructor into a single class.
6048
6049         * verify.c (do_push_field): use new extracted method
6050         for constructor check.
6051
6052         * verify.c (do_newobj): same.
6053
6054         * verify.c (do_ldftn): renamed to do_load_function_ptr
6055         and make it verify ldvirtftn too.
6056
6057         * verify.c (mono_method_verify: proper verification
6058         of ldvirtftn. release created MonoMethod instances.
6059
6060 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
6061
6062         * verify.c (token_bounds_check): added.
6063
6064         * verify.c (do_ldftn): added.
6065
6066         * verify.c (mono_method_verify): proper verificartion of ldftn.
6067
6068 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
6069
6070         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
6071         than the table row count. It's the resposibility of the caller to
6072         make the bounds check and raise the correct error.
6073
6074         * metadata.c (mono_metadata_decode_row_col): Same.
6075
6076         * loader.c (mono_get_method_from_token): perform bounds check
6077         on token for methoddef table.
6078
6079 2007-12-29  Miguel de Icaza  <miguel@novell.com>
6080
6081         * icall.c
6082         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
6083         assert into a negative result, the managed code already coped with
6084         that.
6085
6086         Some folks on Windows reported this error. 
6087
6088 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
6089
6090         * appdomain.c: Bump corlib version.
6091         * icall.c:
6092         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
6093         CultureInfo.CreateCulture to create CultureInfo for name.
6094         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
6095         create CultureInfo for name. Fixes bug #347174.
6096
6097 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
6098
6099         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
6100         flags.
6101
6102         * verify.c (is_valid_branch_instruction): allow branching to the
6103         first instruction of the protected block.
6104
6105         * verify.c (is_valid_cmp_branch_instruction): same.
6106
6107         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
6108         avoid double initialization.
6109
6110         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
6111         detect which cases the eval stack should just be copied.
6112
6113         * verify.c (mono_method_verify): check if the eval stack
6114         is empty when entering a protected block.
6115
6116 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
6117
6118         * verify.c: added is_clause_in_range, is_clause_inside_range,
6119         is_clause_nested and verify_clause_relationship. They perform
6120         the verifications stated in P1 12.4.2.7.
6121
6122         * verify.c (mono_method_verify): remove some unused variables,
6123         add the new exception clause checks, add instruction border
6124         checks for protected block start/end, improved some error 
6125         messages and fixed a bug in the way invalid instruction access
6126         is detected.
6127
6128 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
6129
6130         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
6131         from GC 7.0 if available.
6132
6133         * object.c: Remove an unused define.
6134         
6135         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
6136
6137         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
6138
6139         * null-gc.c (mono_gc_make_descr_for_array): Implement.
6140
6141         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
6142
6143         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
6144         to take the same arguments as the other make_descr functions.
6145
6146         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
6147
6148         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
6149         directly.
6150
6151         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
6152         mini.c.
6153
6154         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
6155         call to boehm-gc.c.
6156
6157         * boehm-gc.c (mono_gc_register_root): Fix a warning.
6158
6159         * null-gc.c (mono_gc_register_root): Fix a warning.
6160
6161         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
6162
6163         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
6164         (mono_gc_base_init): Call GC_init ().
6165
6166         * null-gc.c: Define mono_gc_register_root () as a no-op.
6167
6168         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
6169
6170 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
6171
6172         * verify.c: add prototype for merge_stacks at top
6173
6174         * verify.c (do_switch): added.
6175
6176         * verify.c (merge_stacks): on some cases the stack merging
6177         was not happening properly. Unequal stack sizes at merge
6178         points should be invalid.
6179
6180         * verify.c (mono_method_verify): added more debug info on stack state.
6181         verify switch properly.
6182
6183 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
6184
6185         * method-builder.h: New file, moved the mono_mb_ declarations here from 
6186         marshal.h.
6187
6188         * boehm-gc.c marshal.c: Include method-builder.h.
6189
6190         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
6191
6192         * marshal.c: Remove some code which is now in method-builder.c.
6193
6194 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
6195
6196         * method-builder.c: New file, extraction of the method builder functionality 
6197         from marshal.c.
6198
6199         * marshal.c: Move the mb functions into method-builder.c.
6200
6201         * marshal.h marshal.c: Export some mono_mb_... functions.
6202
6203         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
6204
6205         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
6206         the caller.
6207
6208         * class.c (mono_class_get_full): Check the token type in the dynamic case.
6209
6210         * loader.c (mono_field_from_token): Ditto.      
6211
6212         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
6213         type as well.
6214         
6215         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
6216         Fixes #342565.
6217
6218         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
6219         a helper function for setting it.
6220
6221         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
6222
6223         
6224         * assembly.c: Significally simplify code now that referenced assemblies are 
6225         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
6226
6227         * threads.h: Don't include  the internal threads-types.h header file. Fixes
6228         #349952.
6229
6230 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
6231
6232         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
6233         instructions that were target of branches or are at protected block boundaries.
6234
6235         * verify.c (in_same_block): handle filter clauses.
6236
6237         * verify.c (is_valid_branch_instruction): added. checks the target of
6238         instructions br or brtrue/false.
6239
6240         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
6241         binary branch instructions such as beq and bge.
6242
6243         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
6244         and made it pin the instruction as been part of the exception block.
6245
6246         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
6247         of in_same_block.
6248
6249         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
6250         of in_same_block.
6251
6252         * verify.c (do_ret): ret from a protected block is unverifiable and
6253         not invalid.
6254
6255         * verify.c (do_static_branch): verify br and br.s instructions.
6256
6257         * verify.c (merge_stacks): add extra param to support detection
6258         of branches in the middle of instructions.
6259         
6260         * verify.c (mono_method_verify): verify branches and exception blocks
6261         that target the middle of instructions. Proper verification of br and br.s.
6262
6263 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
6264
6265         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
6266         skip_visibility field.
6267         (reflection_methodbuilder_from_dynamic_method): Ditto.
6268
6269         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
6270         registrations. Fixes #348193.
6271
6272         * threads.h: Move the internal mono_thread_get_pending_exception () to
6273         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
6274
6275 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
6278         icall registration. Fixes #348193.
6279
6280         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
6281         for corlib classes into object. Fixes #349621.
6282
6283 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
6284
6285         * icall.c (property_accessor_nonpublic): new function to determine
6286         whether an accessor allows a property to be considered non-public.
6287         Returns false for private accessor(s) from parent class, and internal
6288         accessor(s) from parent on 2.0 profile (and higher).
6289         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
6290         to determine whether property should be included if NonPublic flag
6291         is set. Fixes bug #349078.
6292
6293 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
6294
6295         * verify.c (init_stack_with_value): added.
6296
6297         * verify.c (mono_method_verify): extracted common
6298         code for exception initialization into init_stack_with_value.
6299
6300         * verify.c (mono_method_verify): initialize the exception
6301         for handler clauses as well.
6302
6303         * verify.c (mono_method_verify): fix the exception clause
6304         ordering rules, it should use handler end offset and not
6305         start offset.
6306
6307 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
6308
6309         * rawbuffer.c: remove useless warning.
6310
6311 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
6312
6313         * threads.h, threads-types.h: move functions to the correct header
6314         (fixes bug#349952).
6315
6316 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
6317
6318         * verify.c (mono_method_verify): proper verification
6319         of exception handling clauses ranges and fallthru in
6320         and out of protected blocks.
6321
6322 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
6323
6324         * verify.c (mono_method_verify): fixed compilation issue.
6325
6326 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         * verify.c (mono_method_verify): a printf slipped in, changed
6329         to use verifier debug macro.
6330
6331 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * verify.c (is_correct_leave): check for filter clauses.
6334
6335         * verify.c (do_filter): added.
6336
6337         * verify.c (mono_method_verify): property verification of leave.
6338
6339
6340 2007-12-18  Mark Probst  <mark.probst@gmail.com>
6341
6342         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
6343         Win32 build, until we figure out how to do the proper thing on
6344         Win32.
6345
6346 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
6347
6348         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
6349         by the previous patch.
6350         
6351         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
6352         the assembly resolve handler for refonly assemblies.
6353
6354 2007-12-17  Mark Probst  <mark.probst@gmail.com>
6355
6356         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
6357         Make sure only one thread is allowed to commence shutdown, and
6358         don't allow new threads to be started once shutdown is in
6359         progress.
6360
6361 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
6362
6363         * verify.c (is_correct_endfilter): added.
6364
6365         * verify.c (is_unverifiable_endfilter): added.
6366
6367         * verify.c (do_endfilter): added.
6368
6369         * verify.c (mono_method_verify): property verification of endfilter
6370         and fixed a corner case or endfinally.
6371
6372 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
6373
6374         * verify.h: new flags to support fail fast of unverifiable code and
6375         do non-strict verification. Non-strict verification is required to
6376         have MS runtime compatibility. There are a huge amount of unverifiable
6377         code that it accepts as verifiable. The strict mode verifies the code
6378         as the specs says.
6379         Non-strict mode will be required in cases where code needs to be
6380         accepted as verifiable but fails under strict mode.
6381
6382         * pedump.c: added support to fail fast and non-strict verification.
6383
6384         * verify.c: added support for both fail fast and non-strict verification.
6385
6386 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
6387
6388         * verify.c (is_correct_endfinally): added.
6389
6390         * verify.c (mono_method_verify): property verification of endfinally.
6391
6392 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * verify.c (in_any_block): check for filter clauses.
6395
6396         * verify.c (is_correct_rethrow): added.
6397
6398         * verify.c (mono_method_verify): property verification of rethrow.
6399
6400         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
6401
6402 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
6403
6404         * verify.c (do_throw): added.
6405
6406         * verify.c (mono_method_verify): property verification of throw
6407
6408 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
6409
6410         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
6411         assemblies. Fixes #346425.
6412
6413 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
6416         FieldBuilders.
6417
6418         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
6419
6420         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
6421         prevent asserts when this is called with a token which might not be valid.
6422
6423         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
6424         lookup_dynamic_token_class with valid_token == FALSE.
6425
6426         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
6427
6428         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
6429
6430         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
6431         
6432 2007-12-10  Mark Probst  <mark.probst@gmail.com>
6433
6434         * gc.c: Don't delay threadpool thread finalization unless Mono is
6435         shutting down.
6436
6437 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
6438
6439         * threads.c: turn an assert into a non-fatal warning.
6440
6441 2007-12-09  Robert Jordan  <robertj@gmx.net>
6442
6443         * icall.c (GetVirtualMethod): Add missing argument validation.
6444
6445 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * verify.c (do_cast): added.
6448
6449         * verify.c (mono_method_verify): property verification of castclass and isinst.
6450
6451
6452 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
6453
6454         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
6455
6456         * verify.c (do_stelem): added.
6457
6458         * verify.c (mono_method_verify): property verification of stelem.X.
6459
6460 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6461
6462         * class.c, class-internals.h: Introduce an environment variable
6463         (MONO_GENERIC_SHARING) through which the extent of generic code
6464         sharing can be controlled (share all classes, share only corlib
6465         classes, or share nothing).
6466
6467         * object.c: Only create runtime generic context for classes for
6468         which sharing is enabled.
6469
6470 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
6471
6472         * verify.c (do_ldelem): refactor it to work with ldelem.any.
6473
6474         * verify.c (mono_method_verify): property verification of ldelem.any.
6475
6476 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
6477
6478         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
6479         added ldelem.X opcodes.
6480
6481         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
6482
6483         * verify.c: proper verification of ldelem.X 
6484
6485 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6486
6487         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
6488
6489 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6490
6491         * verify.c (mono_method_verify): null literal requires special handling,
6492         the value pushed on stack need to be flagged as so.
6493
6494         * verify.c (do_ldelema): Verify ldelema properly.
6495
6496 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
6497
6498         * verify.c: Verify ldlen properly.
6499
6500 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
6503         to the target object's type. Fixes #346160.
6504
6505 2007-12-05  Dick Porter  <dick@ximian.com>
6506
6507         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
6508         Solaris needs the same workaround as BSD-derived systems.  Fixes
6509         bug 323524, patch by Burkhard Linke
6510         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
6511
6512 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
6513
6514         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
6515         handle to use when error dialog is shown; otherwise, update mask
6516         to show no error dialog when an error occurs.
6517
6518 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6519
6520         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
6521
6522         * class.c (mono_class_get_field_default_value): New helper function to initialize
6523         field->def_type and field->data.
6524
6525 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
6528         the general one.
6529
6530         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
6531
6532         * marshal.c: Avoid depending on delegate->method_info being set.
6533
6534         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
6535         
6536         * object.c (mono_delegate_ctor): Set delegate->method.
6537
6538         * object-internals.h (struct _MonoDelegate): Add 'method' field.
6539
6540         * appdomain.c: Bump corlib version.
6541
6542 2007-11-27  Raja R Harinath  <harinath@gmail.com>
6543
6544         * metadata.c (mono_generic_inst_equal_full): Short-circuit
6545         equality check if we're comparing canonicalized MonoGenericInsts.
6546
6547 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * class.c (generic_array_methods): Call mono_class_setup_methods () before
6550         accessing class->methods.
6551
6552 2007-11-22  Dick Porter  <dick@ximian.com>
6553
6554         * threads.c: Ensure that the synch_cs is set before trying to use
6555         it.
6556
6557 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
6558
6559         * profiler.c: r89126 broke the statistial profiler, unbreak.
6560
6561 2007-11-22  Martin Baulig  <martin@ximian.com>
6562
6563         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
6564
6565         * mono-debug.c
6566         (mono_debug_debugger_version): Bump to 3.
6567         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
6568         -> mono_debugger_class_initialized().
6569
6570         * mono-debug-debugger.c
6571         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
6572
6573         * class.c
6574         (mono_debugger_start_class_init_func): Removed.
6575         (mono_debugger_class_loaded_methods_func): Added.
6576         (mono_class_setup_methods): Call it here.
6577
6578 2007-11-22  Martin Baulig  <martin@ximian.com>
6579
6580         * mono-debug.c
6581         (mono_debug_add_delegate_trampoline): New public method.
6582         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
6583
6584         * mono-debug.h
6585         (MonoSymbolTable): Added `global_data_table'.
6586         (MonoDebuggerTypeKind): Removed.
6587
6588 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
6591         these methods.
6592
6593         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6594         
6595 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
6596
6597         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
6598
6599 2007-11-20  Martin Baulig  <martin@ximian.com>
6600
6601         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
6602
6603         * mono-debug-debugger.c
6604         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
6605         (mono_debugger_remove_breakpoint): Likewise.
6606         (mono_debugger_check_breakpoints): Likewise.
6607         (mono_debugger_register_class_init_callback): New public method.
6608         (mono_debugger_remove_class_init_callback): Likewise.
6609         (mono_debugger_add_type): Likewise.
6610
6611         * mono-debug-debugger.h
6612         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
6613
6614 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
6615
6616         * class.c: more interface implementations needed for the
6617         array enumerator (fixes bug #341112).
6618
6619 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
6620
6621         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
6622         fix ParamName of ArgumentNullExceptions.
6623
6624 2007-11-17  Miguel de Icaza  <miguel@novell.com>
6625
6626         * reflection.c (mono_reflection_encode_sighelper): Generate the
6627         modopts and modreqs.   I have a useless test that crashes monodis,
6628         but that shows the code working.
6629
6630 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6631
6632         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
6633         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
6634
6635 2007-11-15  Dick Porter  <dick@ximian.com>
6636
6637         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
6638         When joining a thread, it's the thread that's calling Join that
6639         gets WaitSleepJoin state not the target.  Fixes the standalone
6640         test case in bug 334740, and hopefully the whole bug too.
6641
6642 2007-11-15  Dick Porter  <dick@ximian.com>
6643
6644         * process.c: Read file version info from the files pointed at by
6645         process modules, not the current process.  Fixes bug 315969.
6646
6647         Use windows typedef names in some places to fix warnings on the
6648         windows build.
6649
6650 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6651
6652         * image.c, metadata-internals.h: Added a generic_class_cache hash
6653         to MonoImage for looking up generic classes when sharing generics.
6654
6655 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6656
6657         * sgen-gc.c: warning cleanups.
6658
6659 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
6662         inherited properties.
6663
6664 2007-11-14  Mark Probst  <mark.probst@gmail.com>
6665
6666         * object.c, class-internals.h: Added more information to the
6667         runtime generic context.
6668
6669 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6670
6671         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
6672         instead of just the target method. Generalize the abstract method handling to
6673         handle any non-static method.
6674
6675         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
6676         mono_marshal_get_delegate_invoke () signature change.
6677
6678 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6679
6680         * class.c, class-internals.h: Made
6681         mono_type_get_basic_type_from_generic () public.  Fixed member
6682         access check for shared generics.
6683
6684         * loader.c: Don't insert field into field cache if it's part of a
6685         non-inflated generic class.
6686
6687         * domain.c, domain-internals.h: The generic sharing context is now
6688         part of the jit info data structure.  Added two accessor
6689         functions.
6690
6691 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6692
6693         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
6694         the array Get/Set/Address methods, since the JIT inlines them.
6695
6696         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
6697
6698         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
6699         (mono_image_init): Initialize runtime_invoke_direct_cache.      
6700
6701         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
6702         mono_marshal_get_delegate_invoke signature change.
6703
6704         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
6705         an additional argument. Add support for invoking abstract methods.
6706
6707         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
6708
6709         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
6710
6711 2007-11-09  Mark Probst  <mark.probst@gmail.com>
6712
6713         * class.c: Do field layout for open generic classes as well.
6714
6715 2007-11-09  Mark Probst  <mark.probst@gmail.com>
6716
6717         * gc.c, gc-internal.h: Don't finalize threadpool threads with
6718         other objects, because the threadpool is still around.  Put them
6719         in a list instead and after finalizing all other objects in the
6720         root domain shut down the thread pool and then finalize the
6721         threads.  Fixes bug #337383.
6722
6723         * threads.c, thread-types.h: New mono_thread_create_internal()
6724         function for marking a thread with the threadpool flag before it
6725         started.  Set synch_cs to NULL after freeing it.
6726
6727         * threadpool.c: Mark threadpool threads before they start.
6728
6729 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6730
6731         * reflection.h, reflection.c: don't export random functions
6732         and lazy load dbnull and missing objects.
6733
6734 2007-11-07  Jonathan Chambers <joncham@gmail.com>
6735
6736         * class.c: Initialize COM types if COM interfaces
6737         are present (not just COM classes).
6738         
6739         Code is contributed under MIT/X11 license.
6740
6741 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6742         * reflection.c:
6743         create_dynamic_mono_image: hook module profiler events (dynamic case).
6744         mono_image_basic_init: hook assembly profiler events (dynamic case).
6745
6746 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6747         * profiler.c:
6748         simple_appdomain_unload: completely terminate the profiler
6749         instead of only processing the statistical samples.
6750         simple_shutdown: make sure this is really called exactly once,
6751         even in multithreaded applications, and always listen to
6752         appdomain events.
6753         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
6754         here, the "[un]load" functions will do it.
6755         Fixes bugs #333791 and #325261.
6756
6757 2007-11-07  Geoff Norton  <gnorton@novell.com>
6758
6759         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
6760         rather than depend on __APPLE__.
6761
6762 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6763
6764         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
6765
6766 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
6767
6768         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
6769         UTF16 MonoString. Fix the crash from bug #335488
6770
6771 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
6772
6773         * marshal.c: Correct (for non-Win32 OS) length != size in 
6774         mono_string_from_bstr. Fix #339530.
6775
6776 2007-11-06  Geoff Norton  <gnorton@novell.com>
6777
6778         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
6779         to succeed
6780
6781 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
6782
6783         * process.c: Added run-time GetProcessId API detection for Windows.
6784
6785 2007-11-04  Miguel de Icaza  <miguel@novell.com>
6786
6787         * reflection.c  (mono_param_get_objects): If a parameter has the
6788         attribute [System.Runtime.InteropServices.Optional] we should
6789         set the DefaultValue of the ParameterInfo to be
6790         System.Reflection.Missing instead of DBNull.
6791
6792         See bug #339013.
6793
6794         (mono_get_reflection_missing_object): New method,
6795         returns the System.Reflection.Missing.Value singleton instance.
6796
6797 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
6798
6799         * culture-info-table.h : regenerated.
6800
6801 2007-11-02  Jonathan Chambers <joncham@gmail.com>
6802
6803         * icall.c: Use GetEnvironmentStrings on windows
6804         so we are using the same environment block as 
6805         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
6806         #333740.
6807         
6808         Code is contributed under MIT/X11 license.
6809
6810 2007-10-31  Martin Baulig  <martin@ximian.com>
6811
6812         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
6813
6814         * mono-debug-debugger.h
6815         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
6816
6817 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
6818
6819         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
6820         classes.
6821
6822 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
6823
6824         * culture-info-table.h : regenerated.
6825
6826 2007-10-30  Robert Jordan  <robertj@gmx.net>
6827
6828         * icall-def.h, icall.c:
6829         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
6830
6831         Code is contributed under MIT/X11 license.
6832
6833 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * class.c (mono_class_setup_vtable): Find the inflated methods in the
6836         inflated class instead of inflating them again.
6837         
6838         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
6839         dynamic case.
6840
6841         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
6842         Call setup_supertypes () after klass->parent is set.
6843         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
6844
6845         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
6846         for inflated instances of not yet created dynamic generic classes.
6847         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
6848         times from inflated_method.
6849         (methodbuilder_to_mono_method): Ditto.
6850
6851 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
6852
6853         * gc.c: code cleanup and removed old untested option of not creating the
6854         finalizer thread.
6855
6856 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
6857
6858         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
6859         creating a jump trampoline for dynamic methods.
6860
6861 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
6862
6863         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
6864         generic TypeBuilders when called from another method of the same type (bug #335131).
6865
6866
6867 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
6868
6869         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
6870         doesn't seem to work perfectly.
6871         
6872         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
6873         called multiple times.
6874         (methodbuilder_to_mono_method): Ditto.
6875         (resolve_object): Inflate FieldBuilder's.
6876
6877 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6878
6879         * string-icalls.c, string-icalls.h, appdomain.c: patch from
6880         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
6881         RemoveEmptyEntries in the string.Split implementation (bug #322375).
6882
6883 2007-10-26  Dick Porter  <dick@ximian.com>
6884
6885         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
6886         Thread initialisation changes
6887
6888 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
6889
6890         * verify.c: fix compatibility check between arrays and System.Array
6891
6892 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
6893
6894         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
6895         too. Fixes #336999.
6896
6897 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * object.c (mono_value_box): Use typed allocation here.
6900
6901 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
6904         trampoline instead of compiling the method right away.
6905
6906         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
6907
6908 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
6909
6910         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
6911         related fields for dynamic classes. Fixes #334493.
6912
6913 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
6914
6915         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
6916         
6917         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
6918
6919         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
6920         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
6921
6922         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
6923
6924         * reflection.c (create_generic_typespec): Initialize klass->generic_container
6925         if needed.
6926         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
6927
6928 2007-10-18  Jonathan Chambers <joncham@gmail.com>
6929
6930         * marshal.c: Use correct key when removing item
6931         from ccw_hash.
6932         
6933         Code is contributed under MIT/X11 license.
6934
6935 2007-10-17  William Holmes  <billholmes54@gmail.com>
6936
6937         *marshal.c: Adding a case to marshal booleans to U1
6938
6939         Code is contributed under MIT/X11 license.
6940
6941 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
6942
6943         * class.c (mono_class_from_name): Search the modules compromising dynamic
6944         assemblies. Fixes #331601.
6945
6946 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
6949         exception if the type name contains an assembly component. Fixes #334203.
6950
6951         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
6952         modules inside dynamic assemblies. Fixes #334200.
6953         
6954         * reflection.c: Set image->public_key and image->public_key_length;
6955
6956         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
6957         fields.
6958
6959         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
6960         
6961 2007-10-16  Mark Probst  <mark.probst@gmail.com>
6962
6963         * metadata.c: Implemented correct comparing of generic classes.
6964         An inflated generic class can be equal to a non-inflated one if it
6965         is inflated with generic type variables as type arguments.  Fixes
6966         bug #333798.
6967
6968 2007-10-15  Dick Porter  <dick@ximian.com>
6969
6970         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
6971         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
6972         81646.
6973
6974         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
6975         instead of a monitor lock.  This means that monitor_try_enter and
6976         co can set the thread state safely.
6977         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
6978         thread_interrupt_requested, so interrupt actually works.
6979
6980         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
6981         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
6982         state accessor function
6983
6984 2007-10-15  Martin Baulig  <martin@ximian.com>
6985
6986         * mono-debug.h
6987         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
6988         the debugger with the current runtime.
6989
6990 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
6991
6992         * object.c, object-internals.h: added the ability to set a single
6993         trampoline for all the slots in a vtable.
6994
6995 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6996
6997         * marshal.c: deal with a possible race condition during multicast
6998         delegate invocation.
6999
7000 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
7001
7002         * class.c: ensure value type methods don't have the synchronized
7003         flag set.
7004
7005 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
7006
7007         * string-icalls.c, string-icalls.h: reverted unapproved patch that
7008         breaks the build.
7009
7010 2007-10-11  Joel Reed  <joelwreed@comcast.com>
7011
7012         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
7013         to take an options parameter so that empty entries can be removed during
7014         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
7015
7016 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7017
7018         * marshal.c: make sure we don't store the signature from a dynamic
7019         method into the runtime invoke cache (bug #327189).
7020
7021 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
7022
7023         * marshal.c: make sure the wrapper methods are properly initialized.
7024
7025 2007-10-11  Mark Probst  <mark.probst@gmail.com>
7026
7027         * metadata.c, metadata-internals.h: Generalized
7028         mono_type_stack_size() to mono_type_stack_size_internal() which
7029         takes an additional argument specifying whether it allows open
7030         types.
7031
7032 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7033
7034         * verify.c (do_invoke_method): handle typedbyref params
7035         correctly and check for unverifiable return values.
7036
7037         * verify.c (do_newobj): fix a warning.
7038
7039 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7040
7041         * verify.c: don't tread typedbyref as allways unverifable,
7042         so uses, like (ld/st)loc.0 are valid. verify for the cases
7043         that it matters, like boxing related operations.
7044
7045 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7046
7047         * verify.c: add verification of the newobj opcode. verification
7048         of delegate instantation still missing due ldftn and virldftn not
7049         pushing the function type on stack
7050
7051 2007-10-08  Mark Probst  <mark.probst@gmail.com>
7052
7053         * class-internals.h: Runtime generic context data structure
7054         definition.
7055
7056         * object.c: Initialization of runtime generic context at runtime
7057         vtable creation time.
7058
7059 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
7060         * class.c (mono_class_create_from_typedef,
7061         mono_class_from_generic_parameter, mono_ptr_class_get,
7062         mono_fnptr_class_get, mono_bounded_array_class_get)
7063         * domain.c (mono_domain_create, mono_domain_free)
7064         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
7065         * image.c (do_mono_image_load, mono_image_close):
7066         Hooked up load-unload profiler events.
7067
7068 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7069
7070         * domain.c: track statistics about the actual amount of native code
7071         allocated.
7072
7073 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7074
7075         * class.c: the valuetype enumerators don't have the additional
7076         supertypes interfaces.
7077
7078 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
7079
7080         * class.c: need more interfaces setup for the IEnumerator<T>
7081         object created for arrays (tests/ienumerator-interfaces.2.cs).
7082
7083 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
7086
7087 2007-10-05  Alp Toker  <alp@atoker.com>
7088
7089         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
7090         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
7091         #315863.
7092
7093 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * verify.c (verify_type_compatibility_full): verification of
7096         compatibility improved, validates correctly non-strict checks between
7097         native int and I4 types different than (unsigned)int32.
7098
7099         * verify.c (do_store_indirect): added, do all verification of
7100         ldind.X opcodes. 
7101
7102         * verify.c (get_load_indirect_mono_type): renamed to
7103         get_indirect_op_mono_type, as it now returns the MonoType for 
7104         ldind.X and stind.X opcodes.
7105
7106 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * reflection.c: Fix the encoding of generic type definition for
7109         TypeBuilders.
7110
7111         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
7112         mono_image_typedef_or_ref but allows to specify if typespec lookups should
7113         be made. Typespec check is done prior to typeref cache lookup.
7114
7115         * reflection.c (mono_image_typedef_or_ref): now just delegate to
7116         mono_image_typedef_or_ref_full.
7117
7118         * reflection.c (encode_generic_class): encode the generic class
7119         directly instead of calling encode_type.
7120
7121         * reflection.c (encode_type): encode the generic type definition
7122         MonoClass as a generic instantiation.
7123
7124         * reflection.c (create_typespec): cache typespec tokens in
7125         the assembly->typespec cache. Don't create typespec for a generic
7126         instance MonoClass. Create typespec for the generic type defintion.
7127
7128         * reflection.c (create_generic_typespec): encode the generic
7129         class directly instead of calling encode_type.
7130
7131         * reflection.c (mono_image_create_token): encode the generic
7132         type definition not using a typespec for MonoType instances.
7133
7134
7135 2007-10-04  Raja R Harinath  <rharinath@novell.com>
7136
7137         Fix #328812
7138         * class.c (mono_image_init_name_cache): Don't return nested
7139         'protected internal' classes.
7140         (mono_class_from_name_case): Likewise.
7141
7142 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
7143
7144         * icall-def.h, icall.c : get_bundled_machine_config() is now the
7145           common function used by both DefaultConfig in System.dll and
7146           InternalConfigurationHost in System.Configuration.dll.
7147
7148 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7149
7150         * class.c: automatically add to vectors only a few essential explicit
7151         generic interfaces. The rest of the interfaces that arrays should
7152         provide are currently implicitly added (but still not lazily, see the
7153         design in the discussion of bug#325495 for the details of what is
7154         needed for that). Additionally, implicit interfaces are assigned the
7155         same vtable slot as the explicit interfaces (as they are compatible):
7156         this enables huge memory savings since we don't need to instantiate
7157         as many memthods and as large vtables anymore. Also, Since
7158         GetEnumerator<T> returns an instance of a type that is required to
7159         support a similarly large set of interfaces as arrays, we add
7160         implicit interfaces and interface offset sharing support to those
7161         types, too. This change adds all the required interfaces so that
7162         the anonarray.cs test case in the bug report works (we don't add
7163         all the interfaces to arrays of arrays 3-level deep and more because
7164         of the memory requirements explained in the bug and since they are much
7165         less common: the lazy-loading support will enabled them to work, too).
7166
7167 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
7168
7169         * verify.c (merge_stacks): major clean up, all type compatibility
7170         checks are done by verify_type_compatibility. This fix my earlier lack
7171         of understanding of the CLR type system and merge_stacks no longer looks
7172         scary.
7173
7174         * verify.c: fixed some bad spelling.
7175
7176 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
7177
7178         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
7179         a given stack slock.
7180         
7181         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
7182         verify_type_compatibility_full. This removed a near indentical function and fixed
7183         handling of Int32 and IntPtr across all opcodes.
7184
7185 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
7186
7187         * class.c: only vectors have the additional generic interfaces.
7188
7189 2007-10-01  Jonathan Chambers <joncham@gmail.com>
7190
7191         * mono-config.c: Use g_strcasecmp instead of
7192         strcasecmp like everywhere else to fix
7193         compilation with MSVC.
7194         
7195         Code is contributed under MIT/X11 license.
7196
7197 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
7198
7199         * object.c, object-internals.h: refactored the IMT code to enable
7200         building a single slot at a time and lazily creating the IMT trampolines
7201         and thunks.
7202
7203 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
7204
7205         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
7206
7207         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
7208         Fixes #328501.
7209         
7210 2007-09-29  Raja R Harinath  <harinath@gmail.com>
7211
7212         * loader.c (method_from_methodspec): Rearrange to avoid
7213         un-necessary exposition.  Don't assert out if the method's
7214         declaring type is a generic type definition.
7215
7216 2007-09-28  Martin Baulig  <martin@ximian.com>
7217
7218         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
7219
7220 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7221
7222         * class-internals.h: optimize field layout of MonoClass to
7223         requires less cachelines at runtime and save a few bytes on 64 bit
7224         systems.
7225
7226 2007-09-28  Jb Evain  <jbevain@novell.com>
7227
7228         * reflection.c: when encoding type names in custom attributes,
7229         if the type is a closed generic type, its generic arguments
7230         have to be serialized as AssemblyQualifiedName, so that when
7231         they are deserialized, it's possible to re-create them properly.
7232         Fixes #329450.
7233
7234
7235 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
7236
7237         * object.c, class-internals.h: added delegate-creation counter.
7238
7239 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
7240
7241         * class.c: cleanup of the code that synthetizes interfaces for
7242         arrays in 2.0: saves quit a bit of corlib mempool memory.
7243         Code to fix bug #325495 ifdeffed out for now until the issues
7244         with memory usage and O(n^2) behaviour are fixed.
7245
7246 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
7247
7248         * marshal.c: when possible, do not duplicate the name of the methods
7249         in the method builder and in the generated MonoMethod.
7250
7251 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
7252         * verify.c: added support for type checking ldind_* opcodes.
7253
7254 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
7255
7256         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
7257         which is used to distinguish the fully open instantiation of a TypeBuilder
7258         with the rest. This temporary hack is required to restore the property that
7259         the fully open instantiation is the same type of the generic type definition.
7260
7261         * class-internals.h (mono_generic_class_is_generic_type_definition):
7262         new function as part of the internal API.
7263
7264         * class.c (inflate_generic_type): return NULL when the generic inst is
7265         fully open. The fully open generic type is now the same as the generic type
7266         definition for non TypeBuilder types.
7267
7268         * class.c (mono_generic_class_get_class): removed assert since it is
7269         no longer valid, gklass->cached_class can point to the generic type definition.
7270
7271         * class.c (mono_generic_class_is_generic_type_definition): new.
7272
7273         * metadata.c (mono_generic_class_hash): added is_tb_open field
7274         to the hash calculation.
7275
7276         * metadata.c (free_generic_class): if the generic class is associated
7277         with the generic type definition, its field will come from the mempool and
7278         must not be freed.
7279
7280         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
7281         new, this function identifies the corner case of a TypeBuilder fully open
7282         instantiation.
7283
7284         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
7285         for lookup. Set gclass->cached_class to be the container class in case of
7286         the fully open instantiation of non TypeBuilder types.
7287
7288         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
7289         to compare generic classes.
7290
7291         * reflection.c (method_encode_methodspec): remove assert that
7292         no longer is valid.
7293
7294         * reflection.c (mono_reflection_generic_class_initialize): add
7295         an aditional assert to ensure the proper type is used.
7296
7297 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
7298
7299         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
7300         to enjoy it.
7301
7302 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
7303
7304         * verify.c (push_arg): Fixed support for ldarga
7305         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
7306         MonoType used as first arg in case of instance calls.
7307
7308 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
7309
7310         * verify.c: Support for verifying VAR and MVAR types, 
7311
7312 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
7313
7314         * icall.c (ves_icall_get_property_info): Set the reflected type of the
7315         accessors correctly.
7316
7317 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7318
7319         * threads.c: support OSX and other systems in
7320         mono_thread_get_stack_bounds (bug #328026).
7321
7322 2007-09-25  Martin Baulig  <martin@ximian.com>
7323
7324         * mono-debug.h
7325         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
7326
7327 2007-09-24  Martin Baulig  <martin@ximian.com>
7328
7329         * mono-debug.h
7330         (MonoDebugClassEntry): Moved the definition of this struct into
7331         mono-debug.c to make it private.
7332
7333         * mono-debug.c
7334         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
7335         type table per symbol file, we don't need to store the symfile id
7336         any longer.
7337
7338 2007-09-24  Martin Baulig  <martin@ximian.com>
7339
7340         Create one type table per symbol file, since a `MonoClass *' gets
7341         invalid when its image is unloaded.
7342
7343         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
7344         (MonoDebugHandle): Added `type_table'.
7345
7346 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7347
7348         * mempool.c, mempool.h: added mono_mempool_new_size () API
7349         to be able to specify a smaller initial size for the pool.
7350         Adjusted the code to slowly increase pool size before using
7351         the previous default size.
7352         * image.c: use a small initial size for image mempools.
7353
7354 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
7355
7356         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
7357         Fixes ##320990.
7358
7359         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
7360         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
7361
7362 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * metadata.c (mono_type_create_from_typespec): Remove an invalid
7365         free. Fixes #327438.
7366
7367 2007-09-21  Raja R Harinath  <harinath@gmail.com>
7368
7369         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
7370         generic instantiations, etc.
7371         <MONO_TYPE_ARRAY>: Likewise.
7372
7373 2007-09-21  Martin Baulig  <martin@ximian.com>
7374
7375         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
7376         these structs were never defined.
7377         (MonoDebugHandle): Removed the `_priv' field, it was never used.
7378
7379 2007-09-21  Martin Baulig  <martin@ximian.com>
7380
7381         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
7382
7383 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
7384
7385         * image.c: removed the guid hash tables: we can get the same info
7386         without the additional memory usage hit (partially fixes also bug #327052).
7387
7388 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
7389
7390         * profiler.h, profiler-private.h, profiler.c: add a new profiler
7391         event to handle unloading methods. After the event is called, the
7392         corresponding MonoMethod* must be considered invalid.
7393         * loader.c (mono_free_method): call the new mono_profiler_method_free
7394         event.
7395
7396 2007-09-20  Mark Probst  <mark.probst@gmail.com>
7397
7398         * domain-internals.h: New flag in MonoJitInfo which marks shared
7399         generic methods.  New hash table (shared_generics_hash) in
7400         MonoDomain to keep track of shared generic methods.  Prototypes
7401         for functions to register and lookup shared generic methods.
7402
7403         * domain.c: Support for registering and looking up shared generic
7404         methods via a hash table (shared_generics_hash) in MonoDomain.
7405
7406         * class-internals.h: New exception to signal failure of shared
7407         compilation of a generic method.  New counters for generics
7408         sharing in MonoStats.
7409
7410 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7411
7412         * image.c, metadata-internals.h: don't keep a file descriptor open
7413         for loaded assemblies (bug#325988).
7414
7415 2007-09-19  Raja R Harinath  <rharinath@novell.com>
7416
7417         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
7418         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
7419         use the corresponding datatypes.
7420         (type_in_image): Update to changes.
7421         (CleanForImageUserData): Simplify.
7422         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
7423         Avoid quadratic behaviour in handling the "stolen" list by
7424         separating the filter predicate out, and by prepending the stolen
7425         items rather than appending them.
7426         (steal_ginst_in_image): Likewise.
7427         (mono_metadata_clean_for_image): Update to changes.
7428
7429 2007-09-19  Martin Baulig  <martin@ximian.com>
7430
7431         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
7432
7433 2007-09-19  Martin Baulig  <martin@ximian.com>
7434
7435         * mono-debug.c (mono_debug_cleanup): Don't call
7436         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
7437
7438 2007-09-19  Raja R Harinath  <harinath@gmail.com>
7439
7440         Fix crash on 'make run-test' in mcs/errors
7441         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
7442         Avoid more potential allocations in mono_class_from_mono_type.
7443         (ginst_in_image): Update to changes.
7444         (gclass_in_image): Rearrange slightly.
7445
7446 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * class.c (mono_class_init): Move the code that sets up class->methods to 
7449         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
7450
7451         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
7452         canonical instance of an inflated generic signature.
7453         (mono_type_create_from_typespec): Remove an invalid free.
7454
7455         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
7456
7457 2007-09-18  Marek Habersack  <mhabersack@novell.com>
7458
7459         * domain-internals.h: added a declaration of the
7460         mono_assembly_load_full_nosearch internal function.
7461
7462         * assembly.c (mono_assembly_load_with_partial_name): use
7463         mono_try_assembly_resolve return value properly.
7464         (mono_assembly_load_full_nosearch): copied the function body from
7465         mono_assembly_load_full, without the code to invoke assembly
7466         search hooks.
7467         (mono_assembly_load_full): calls the above new function and if the
7468         assembly is not resolved, invokes the search hooks.
7469
7470         * appdomain.c (mono_runtime_init): restore the global postload
7471         assembly search handlers.
7472
7473 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
7474
7475         * class.c (mono_class_init): Make sure class->methods and class->properties
7476         are never NULL in the generics case.
7477
7478         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
7479
7480 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * metadata.c (free_generic_class): Disable some code to fix the build.
7483
7484         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
7485
7486         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
7487         from the image mempool.
7488
7489         * metadata.c (free_generic_class): Free more data from the inflated class.
7490
7491         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
7492
7493         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
7494         mempool.
7495         (mono_type_create_from_typespec): Ditto.
7496
7497         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
7498         MonoImage to the caller.
7499         (mono_init_internal): Save the opened image in a global variable.
7500         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
7501
7502         * reflection.c (resolve_object): Fix a leak.
7503
7504         * metadata.c: Fix the freeing of data in the generics caches.
7505         
7506         * metadata.c (free_generic_inst): Comment this out to fix the build.
7507         (free_generic_class): Ditto.
7508
7509         * metadata.c: Free cached generic methods, instantinations and classes when
7510         they are removed from the caches.
7511         (mono_metadata_free_type): Free the type itself.
7512
7513         * class.c: Free the result of mono_class_inflate_generic_type () in a few
7514         places.
7515
7516 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
7517
7518         * boehm-gc.c: restrict managed allocs to __thread supporting
7519         architectures.
7520
7521 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
7522
7523         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
7524         (mono_generic_class_get_class): Fix a leak.
7525
7526         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
7527         mono_metadata_free_type ().
7528         (mono_metadata_inflate_generic_inst): Fix a leak.
7529
7530 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7531
7532         * mono-debug.c (free_header_data): Fix a leak missed earlier.
7533
7534         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
7535         mempool.
7536
7537         * mono-debug.c (mono_debug_close_image): Fix call to 
7538         g_hash_table_remove ().
7539
7540 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
7541
7542         * icall-def.h: redirect all the string ctor to the managed
7543         CreateString () methods.
7544         * string-icalls.c, string-icalls.h: removed dead code for string
7545         ctors and icalls.
7546
7547 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7548
7549         * mono-debug.c: Fix memory leaks.
7550
7551 2007-09-14  Jonathan Chambers <joncham@gmail.com>
7552
7553         * threads-types.h: Implement mono_hazard_pointer_set and 
7554         mono_hazard_pointer_clear macros using do/while(0) to fix
7555         compilation with MSVC.
7556         
7557         Code is contributed under MIT/X11 license.
7558
7559 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
7562         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
7563
7564 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
7565
7566         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
7567         icalls.
7568
7569 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
7570
7571         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
7572         managed-code allocated as well.
7573
7574 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7575
7576         * class.c (mono_class_is_assignable_from): Add support for generic variance.
7577
7578 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
7579
7580         * boehm-gc.c: fixed the build after the AOT changes.
7581
7582 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
7583
7584         * wrapper-types.h: Add an ALLOC wrapper type.
7585
7586         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
7587         reference managed allocator methods.
7588
7589 2007-09-12  Marek Safar  <marek.safar@gmail.com>
7590
7591         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
7592         of Type array and not MonoType, a fix suggested by Hari.
7593         
7594 2007-09-12  Jonathan Chambers <joncham@gmail.com>
7595
7596         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
7597         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
7598         
7599         Code is contributed under MIT/X11 license.
7600
7601 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
7602
7603         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
7604
7605 2007-09-12  Marek Habersack  <mhabersack@novell.com>
7606
7607         * image.c (do_mono_image_open): if assembly file fails to open and
7608         MONO_IOMAP is in effect, try to find the path in a
7609         case-insensitive way.
7610
7611         * appdomain.c (mono_runtime_init): do not install postload hooks -
7612         tests show that MS.NET doesn't use anything of that sort to
7613         trigger the AppDomain.AssemblyResolve event.
7614         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
7615         made non-static.
7616         (mono_runtime_init): init portability helpers here.
7617
7618         * assembly.c (mono_assembly_load_with_partial_name): if other   
7619         attempts fail, trigger the AppDomain.AssemblyResolve event handler
7620         to resolve the assembly.
7621
7622         * domain-internals.h: added mono_try_assembly_resolve and marked
7623         it as internal.
7624
7625 2007-09-11  Jb Evain  <jbevain@novell.com>
7626
7627         * object-internals.h (MonoReflectionDynamicMethod): add
7628         a `MonoReflectionType *owner` field. The owner is used
7629         * reflection.c:
7630         (mono_reflection_create_dynamic_method): use the owner of the dynamic
7631         method as the class declaring the dynamic method.
7632         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
7633         dynamic method to the declaring type of the methodbuilder.
7634
7635 2007-09-11  Mark Probst  <mark.probst@gmail.com>
7636
7637         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
7638         rules for calling methods via reflection.
7639
7640 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
7641
7642         * reflection.c (resolve_object): Add support for MonoGenericClass. 
7643         Inflate MonoType's.
7644
7645 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7646
7647         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
7648         provide a managed method that does fast allocations without needing
7649         a managed->unmanaged transition. Boehm GC implementation currently
7650         enabled for ptrfree objects on sane architectures.
7651
7652 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
7653
7654         * marshal.c, marshal.h: exported a couple of useful functions and
7655         added mono_mb_get_label () to easily handle backward branches.
7656
7657 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
7660
7661 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
7662
7663         * loader.c (find_method): Fixed the regression introduced while
7664         fixing bug #81466.
7665
7666 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
7669         well.
7670         
7671         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
7672         icall.c reflection.c: Pass a MonoGenericContext argument to 
7673         mono_lookup_dynamic_token ().
7674
7675         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
7676         #82744.
7677         
7678 2007-09-09  Robert Jordan  <robertj@gmx.net>
7679
7680         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
7681         for generic methods.
7682
7683         * object.c (mono_object_get_virtual_method): Handle generic methods.
7684         Fixes bug #78882.
7685
7686         Code is contributed under MIT/X11 license.
7687
7688 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
7689
7690         * image.c: fix locking in mono_image_load_file_for_image ().
7691
7692 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
7693
7694         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
7695         used only as a cache: added an icall to fill it.
7696
7697 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
7698
7699         * reflection.h: exposed mono_reflection_free_type_info
7700         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
7701         since mono_reflection_bind_generic_parameters makes a copy of it.
7702         * reflection.c (free_type_info): subinfos should be freed.
7703         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
7704         made non static.
7705         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
7706         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
7707         this fixes #82695 and #81726.
7708    
7709
7710 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
7711
7712         * process.h, process.c:  added support for user profile/info in
7713           ProcessStartInfo. For now only Windows works.
7714
7715 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7716
7717         * metadata.c: consider the generic arguments when comparing
7718         signatures (bug #82614).
7719
7720 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
7721
7722         * cil-coff.h, image.c: updated assembly loader to cope with the
7723         PE32+ 64 bit file format.
7724
7725 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
7726
7727         * assembly.c, class.c, domain.c, loader.c: remove useless
7728         inclusion of cil-coff.h.
7729
7730 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
7731
7732         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
7733         if interface is marked with CoClassAttribute. 
7734    
7735         Code is contributed under MIT/X11 license.
7736
7737 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
7738
7739         * sgen-gc.c: ensure no object from the to space is copied again or finalized
7740         if it's seen twice in major collections.
7741
7742 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
7743
7744         * sgen-gc.c: big objects are not copied to the gray area, but they
7745         need to be considered for scanning, too, if they are brought alive
7746         by an object ready for finalizations or a survived one.
7747
7748 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
7749
7750         * sgen-gc.c: properly account the number of disappearing links when
7751         they are nullified.
7752
7753 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
7754
7755         * sgen-gc.c: share the code to scan the registered roots between the
7756         different types of collections.
7757
7758 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
7761
7762 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
7763
7764         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
7765         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
7766
7767 2007-08-28  Mark Probst  <mark.probst@gmail.com>
7768
7769         * security-manager.c (mono_security_manager_get_methods):
7770         LinkDemandSecurityException now has 2 arguments instead of 3.
7771
7772 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
7773
7774         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
7775         platforms which need it.
7776
7777 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7778
7779         * sgen-gc.c: unregister thread data structures with a pthread_key_t
7780         dtor.
7781
7782 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
7783
7784         * threads.c: free the thread static data on thread exit.
7785
7786 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
7787
7788         * class.c: walk the hierarchy to find the generic definition for
7789         a class (fixes runtime part of bug #82498).
7790
7791 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
7792
7793         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
7794         ...
7795
7796         * image.c (mono_image_close): Here. Hopefully fixes #82510.
7797
7798 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7799
7800         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
7801
7802 2007-08-24  Robert Jordan  <robertj@gmx.net>
7803
7804         * appdomain.c: don't perform the ':'->';' substitution on Win32.
7805
7806 2007-08-24  Jb Evain  <jbevain@novell.com>
7807
7808         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
7809         for byref types.
7810
7811 2007-08-24  Mark Probst  <mark.probst@gmail.com>
7812
7813         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
7814         #82286.
7815
7816 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
7817
7818         * assembly.c: Fix a warning.
7819         
7820 2007-08-23  Marek Habersack  <mhabersack@novell.com>
7821
7822         * appdomain.c: parse the <runtime> section looking for the probing
7823         element with the 'privatePath' attribute, which sets additional
7824         directories in which the runtime should look for assemblies.
7825
7826 2007-08-23  Robert Jordan  <robertj@gmx.net>
7827
7828         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
7829         Fixes #82499.
7830
7831 2007-08-23  Martin Baulig  <martin@ximian.com>
7832
7833         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
7834         _mono_debug_init_corlib() and remove it from the header file.
7835
7836 2007-08-23  Martin Baulig  <martin@ximian.com>
7837
7838         * mono-debug-debugger.c
7839         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
7840         don't notify the debugger about it.
7841
7842         * mono-debug-debugger.h
7843         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
7844
7845 2007-08-23  Robert Jordan  <robertj@gmx.net>
7846
7847         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
7848         Code is contributed under MIT/X11 license.
7849
7850 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7851
7852         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
7853
7854 2007-08-22  Martin Baulig  <martin@ximian.com>
7855
7856         * mono-debug.c: Store debugging info on a per-domain basis and
7857         free it on domain unload.  Add support for unloading symbol files.
7858
7859         * mono-debug.h
7860         (MonoDebugList): New typedef.
7861         (MonoSymbolTable):
7862         - add `data_tables and `type_table'.
7863         - replace 'symbol_files' and `num_symbol_files' with a
7864           `MonoDebugList *'.
7865         (mono_debug_data_table): Removed.
7866         (mono_debug_list_add): New public function.
7867         (mono_debug_list_remove): New public function.
7868         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
7869         (mono_debug_init_2_memory): Renamed into
7870         mono_debug_open_image_from_memory().
7871         (mono_debug_close_image): New public function.
7872         (mono_debug_domain_create): Likewise.
7873         (mono_debug_domain_unload): Likewise.
7874         (MONO_DEBUGGER_VERSION): Bump to 60.
7875
7876         * mono-debug-debugger.h
7877         (MonoDebuggerEvent):
7878         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
7879         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
7880         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
7881         - rename `THREAD_CREATED' and `THREAD_EXITED' into
7882           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
7883         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
7884           meaning.
7885         (mono_debugger_add_symbol_file): Removed.
7886         (mono_debugger_add_type): Removed.
7887         (mono_debugger_lookup_type): Removed.
7888         (mono_debugger_lookup_assembly): Removed.
7889
7890         * domain.c
7891         (mono_domain_create): Call mono_debug_domain_create().
7892         (mono_init_internal): Call mono_debug_init_corlib().
7893
7894         * assembly.c
7895         (mono_assembly_close): Call mono_debug_close_image().
7896
7897 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7898
7899         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
7900         mmap call.
7901
7902 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
7903
7904         * sgen-gc.c: ensure section->pin_queue_end is initialized
7905         correctly when non pinning objects in the section have been found.
7906
7907 2007-08-22  Marek Habersack  <mhabersack@novell.com>
7908
7909         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
7910         containing a list of directories separated by ':'. MSDN docs say
7911         the directories should be separated with ';'. Part of a bugfix for
7912         bug #81446
7913
7914 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
7915
7916         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
7917         it should MonoType and not MonoClass.
7918
7919 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
7920
7921         * culture-info-table.h : regenerated.
7922
7923 2007-08-20  William Holmes  <billholmes54@gmail.com>
7924
7925         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
7926          to call ReplaceFile Kernel32 on windows or in io-layer.
7927         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
7928         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
7929          as an internal call.
7930
7931         Code is contributed under MIT/X11 license.
7932
7933 2007-08-20  Jb Evain  <jbevain@novell.com>
7934
7935         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
7936         and MONO_EXCEPTION_FIELD_ACCESS.
7937
7938         * debug-helpers.[c|h]: new mono_field_full_name function.
7939
7940 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7941
7942         * class.c: Removed class_security_level() and moved it to
7943         security-core-clr.c.
7944
7945         * security-core-clr.c, security-core-clr.h: class_security_level()
7946         is now public and renamed to mono_security_core_clr_class_level().
7947         It also looks for security attributes in the classes a class is
7948         nested in.
7949
7950 2007-08-20  Mark Probst  <mark.probst@gmail.com>
7951
7952         * security-core-clr.c, security-core-clr.h: CoreCLR security
7953         utility functions.
7954
7955         * Makefile.am: Added security-core-clr.[ch].
7956
7957         * security-manager.c, security-manager.h: Functions and enum for
7958         setting and getting the security mode.
7959
7960         * class.c: CoreCLR security checks.
7961
7962 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
7963
7964         * icall-def.h, process.c, process.h: implemented icall to get
7965         user/system processor times.
7966
7967 2007-08-17  Mark Probst  <mark.probst@gmail.com>
7968
7969         * domain.c, threads.c, class-internals.h, domain-internals.h: New
7970         reader-lock-free jit_info_table.
7971
7972 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
7973
7974         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
7975
7976         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
7977
7978         * object-internals.h (MonoException): Add missing _data member.
7979
7980 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
7981
7982         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
7983         checking that only methods with matching qname or fqname are picked
7984         from implemented interfaces.
7985
7986 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
7987
7988         * verify.c (do_newarr):added, do type verification of
7989         newarr ops, push the right value on the eval stack.
7990         * verify.c (mono_method_verify): use do_newarr
7991
7992
7993 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
7996         factored the common code into get_boxable_mono_type, which
7997         is now using mono_type_get_full, this fixed byref related tests.
7998
7999 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
8000
8001         * class.c: added mono_type_get_full, this function has the same
8002         behavior of mono_class_get_full but the returned MonoType has
8003         all metadata of the associated token in case of a typespec token.
8004         * class.c: added mono_type_retrieve_from_typespec, used by 
8005         mono_type_get_full to retrieve the token type.
8006         * class.c (mono_class_create_from_typespec): changed to use
8007         mono_type_retrieve_from_typespec.
8008         * class.c (mono_ldtoken): changed to use mono_type_get_full
8009         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
8010         * class-internals.h: exported mono_type_get_full for internal use.
8011
8012 2007-08-16  Jb Evain  <jbevain@novell.com>
8013
8014         * domain.c (supported_runtimes): add entry for
8015         the 'moonlight' runtime version.
8016
8017 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
8018
8019         * verify.c (mono_method_verify): small typo sliped in.  
8020
8021 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
8022
8023         * verify.c (do_unbox_value): added, do type verification of
8024         unboxing ops
8025         * verify.c (mono_method_verify): use do_unbox_value
8026
8027
8028 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
8029
8030         * verify.c (dump_stack_value): fixed typo, was printing string
8031         instead of object on stack.
8032         * verify.c (do_box_value): moved the byref check up as it leads
8033         to invalid code and should be done earlier.
8034         * verify.c: improved error messages for and ldobj
8035
8036 2007-08-15  William Holmes  <billholmes54@gmail.com>
8037
8038         * marshal.c (emit_marshal_custom): Omit the call to 
8039           marshal_native_to_managed when calling native to managed 
8040           and the argument is specified as an out argument.
8041
8042         Code is contributed under MIT/X11 license.
8043
8044 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
8045
8046         * verify.c: fixed the type checks for generics, function pointers and vectors.
8047         Added type verification for ldobj and ldtoken. The verifier
8048         would segfault if header or signature of a method contained references
8049         to non-existant types.
8050
8051 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
8052
8053         * marshal.c (cominterop_get_ccw): Patch from
8054         Bill Holmes to no walk up interface hierarchy. 
8055         All parent methods should be present in the interface for COM.
8056    
8057         Code is contributed under MIT/X11 license.
8058
8059 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
8060
8061         * marshal.c (emit_marshal_com_interface): Patch from
8062         Bill Holmes to handle COM Interfaces as return values
8063         for native->managed calls.
8064    
8065         Code is contributed under MIT/X11 license.
8066
8067 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
8068
8069         * marshal.c (cominterop_get_idispatch_for_object): Implement
8070         for runtime callable wrappers.
8071    
8072         Code is contributed under MIT/X11 license.
8073
8074 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
8075
8076         * pedump.c (main): changed from mono_init to mono_init_from_assembly
8077         so 2.0 types are accessible
8078
8079
8080 2007-08-13  Miguel de Icaza  <miguel@novell.com>
8081
8082         * domain.c (mono_init_internal): Call mono_assembly_load_friends
8083         once we load mscorlib.   Due to the order in which we initialize,
8084         the mono_assembly_load_full routine that loads mscorlib did not
8085         load friends.   We now load it once we load the
8086         mono_defaults.internals_visible_class class. 
8087
8088         * assembly.c: Expose the mono_load_friend_assemblies method.
8089
8090 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
8091
8092         * verify.c: improved the handling of boxing, better
8093         type checking for unary ops and conversion. Fix bug
8094         regarding managed pointer compatibility checking
8095
8096 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
8099
8100         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
8101
8102 2007-08-09  Raja R Harinath  <rharinath@novell.com>
8103
8104         * reflection.c (dup_type): Remove.
8105         * class.c (dup_type): Remove.
8106         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
8107         instead of the dodgy 'dup_type'.
8108         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
8109         handle the case where 'dup_type' needed the second argument.
8110
8111 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * domain.c: Fix a warning.
8114
8115 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
8116
8117         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
8118         checking that methods with the same fqname are not overridden
8119         with a method from an ancestor.
8120
8121 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * threads.c (free_thread_static_data_helper): Avoid a crash if
8124         thread->static_data is not yet set.
8125
8126 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
8127
8128         * marshal.c: Use correct image when emitting
8129         native wrapper for COM calls.
8130    
8131         Code is contributed under MIT/X11 license.
8132
8133 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
8134
8135         * icall-def.h, security.c, security.h :
8136           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
8137
8138 2007-08-07  Martin Baulig  <martin@ximian.com>
8139
8140         * mono-debug-debugger.h
8141         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
8142
8143         * domain.c (mono_domain_free): Call
8144         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
8145
8146 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8147
8148         * verify.c (check_underflow, check_overflow): error message now returns IL offset
8149         * verify.c (in_same_block): code should test if either offset is inside the clauses
8150         * verify.c (mono_method_verify): push the exception into the eval stack of exception
8151         and filter blocks
8152
8153 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
8154
8155         * image.c (mono_image_close): Fix a leak.
8156
8157         * object.c (mono_runtime_invoke_array): Avoid using alloca.
8158
8159         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
8160
8161 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
8162
8163         * domain.c, threads.c, threads-types.h: fix memory retention issue
8164         with thread static variables not being cleared on domain unload.
8165         Reuse thread static slots after domain unload.
8166
8167 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
8168
8169         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
8170         nullable type.
8171
8172         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
8173         now done in mono_runtime_invoke_array.
8174
8175         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
8176         receiver is a nullable type.
8177
8178         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
8179         generic parameter.
8180
8181 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
8182
8183         * marshal.c: Implement COM Objects as return type for 
8184         managed->unmanaged calls. Added Release calls for COM Object
8185         out/return values in managed->unmanaged calls.
8186
8187         Code is contributed under MIT/X11 license.
8188
8189 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
8190
8191         * threads.h, threads-type.h: move the hazard pointer declarations
8192         to the private header.
8193
8194 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
8195
8196         * file-io.c, appdomain.c: memory leak fixes.
8197
8198 2007-08-02  Dick Porter  <dick@ximian.com>
8199
8200         * socket-io.c
8201         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
8202         SO_REUSEADDR setting into io-layer/sockets.c.
8203
8204 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
8205
8206         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
8207         from Object when called on a generic parameter. Fixes #82211.
8208
8209 2007-08-01  Dick Porter  <dick@ximian.com>
8210
8211         * file-io.c (convert_share): Test FileShare values bit-by-bit.
8212         Fixes bug 79250 yet again.
8213
8214 2007-07-30  Martin Baulig  <martin@ximian.com>
8215
8216         Merged the `debugger-dublin' branch.
8217
8218         * mono-debug.h
8219         (MonoDebugDataTable): New typedef.
8220         (MonoDebugMethodAddressList): New typedef.
8221         (MonoDebugWrapperData): Removed.
8222         (MonoDebugSymbolTable): Removed `current_data_table',
8223         `current_data_table_size', `current_data_table_offset'.
8224         (MonoDebugDataItemType): Moved into mono-debug.c.
8225         (MonoDebugMethodJitInfo): Remove `address'.
8226         (mono_debug_data_table): New global variable.
8227         (mono_debug_lookup_method_addresses): New public function.
8228         (mono_debug_find_method): Take a `MonoMethod *', not a
8229         `MonoDebugMethodInfo *'.
8230
8231         * mono-debug.c: Drop support for the old symbol tables.
8232
8233 2007-06-28  Martin Baulig  <martin@ximian.com>
8234
8235         * mono-debug.c (mono_debug_debugger_version): New public variable.
8236
8237 2007-07-31  William Holmes  <billholmes54@gmail.com>
8238
8239         * metadata.c Changed mono_type_create_from_typespec to not insert
8240           the type into the hash map until after
8241           do_mono_metadata_parse_type has completed.
8242         Fixes Bug #82194
8243         Code is contributed under MIT/X11 license.
8244
8245 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
8248         generic parameter. Fixes #82211.
8249
8250 2007-07-27  Jb Evain  <jbevain@novell.com>
8251
8252         * pedump.c (dump_metadata, dump_metadata_header): dump
8253         versions contained in the metadata header.
8254
8255 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8256
8257         * threads.c: register small_id_table with the GC.
8258
8259 2007-07-27  Mark Probst  <mark.probst@gmail.com>
8260
8261         * threads.c, threads.h, class-internals.h, object-internals.h:
8262         Hazard pointers, to be used by lock-free parallel algorithms.
8263
8264 2007-07-26  Dick Porter  <dick@ximian.com>
8265
8266         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
8267         routine on non-windows platforms, as I've not managed to think of
8268         a non-kludgy way of doing this.  Finishes off bug 78739.
8269
8270 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
8271
8272         * object.c: properly setup interface_bitmap in proxy vtables.
8273
8274 2007-07-25  Marek Habersack  <mhabersack@novell.com>
8275
8276         * appdomain.c (get_shadow_assembly_location): do not use TickCount
8277         to create unique shadow copy target directories, use the domain's
8278         serial number instead. Each domain gets a unique target directory
8279         that way.
8280
8281         * domain.c (mono_domain_create): added code to increment domain
8282         shadow copy serial number and cache the value in the current
8283         domain structure.
8284
8285         * domain-internals.h (struct _MonoDomain): added a new field -
8286         shadow_serial to hold the serial number used in generation of
8287         shadow-copy directories. This is to make sure that the directory
8288         name is unique for each and every domain created. We avoid a race
8289         condition with overriding assemblies already in use by other app
8290         domains.
8291
8292 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
8293
8294         * class.c (mono_bounded_array_class_get): fixed memory leak when 
8295         binding generic parameters.
8296
8297 2007-07-24  Raja R Harinath  <rharinath@novell.com>
8298
8299         * metadata.c (do_mono_metadata_parse_generic_class): Use
8300         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
8301         error.
8302
8303 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
8304
8305         * loader.c, class-internals.h, reflection.c: removed the per-method
8306         generics hashtable: we use the global one through the call of
8307         mono_class_inflate_generic_method ().
8308
8309 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
8310
8311         * class.c, metadata.c, class-internals.h: introduce yet another
8312         generics global cache for inflated methods (fixes 98% of the perf
8313         issue in bug #81806).
8314
8315 2007-07-23  Raja R Harinath  <rharinath@novell.com>
8316
8317         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
8318         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
8319         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
8320         return a MonoGenericInst containing (a copy) of those types.
8321         (mono_metadata_inflate_generic_inst): Update to changes.
8322         (mono_metadata_parse_generic_inst): Likewise.
8323         (mono_get_shared_generic_inst): Likewise.
8324         * reflection.c (mono_class_bind_generic_parameters): Likewise.
8325         (mono_reflection_bind_generic_method_parameters): Likewise.
8326         * metadata-internals.h: Likewise.
8327         * icall.c (free_generic_context): Kill.
8328         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
8329
8330         * reflection.c (reflection_methodbuilder_to_mono_method): Use
8331         mono_metadata_type_dup.
8332         * marshal.c (mono_mb_create_method): Likewise.
8333
8334         * metadata.c (mono_metadata_type_dup): Rename from
8335         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
8336         MonoImage.  Handle a few more cases, esp. when no mempool is given.
8337         * marshal.c, metadata-internals.h: Update to changes.
8338
8339 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8340
8341         * class.c: fixed a small leak for array classes and removed warning.
8342
8343 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
8344
8345         * loader.c (mono_method_get_param_token): Make this work on generic methods.
8346         Return 0x8000000 for return parameters. Fixes #82161.
8347
8348 2007-07-21  Marek Habersack  <grendello@gmail.com>
8349
8350         * appdomain.c (get_shadow_assembly_location): append the current
8351         ticks value to the path. Avoids overwriting the same assemblies by
8352         several threads at the same time.
8353
8354 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
8355         and Raja R Harinath  <rharinath@novell.com>
8356
8357         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
8358         Simplify slightly.
8359         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
8360         property for testing if a method is a generic method definition.
8361
8362 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
8363
8364         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
8365
8366 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
8367
8368         * verify.c: used function from private branch, reverted to the one in class.h 
8369
8370 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
8371
8372         * verify.c: a typo slipped in and the code wont compile
8373
8374 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
8377         disabled box instruction as it is doing the wrong thing
8378         improved stack dump messages, now it is easier to debug type related issues
8379
8380
8381 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
8382
8383         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
8384
8385 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
8386
8387         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
8388         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
8389         grouped with class and valuetype. This change will simply 
8390         the code as it should be handled just like unmanaged pointers.
8391
8392 2007-07-19  Mark Probst  <mark.probst@gmail.com>
8393
8394         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
8395
8396 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
8397
8398         * verify.c: several stack merge issues fixed, reference comparisons now
8399         check the type size. strict type check now works correctly.
8400         added more uses of IS_MANAGED_POINTER macro.
8401         fixed issues pointed by running the test suite against .net.
8402         
8403
8404 2007-07-19  Mark Probst  <mark.probst@gmail.com>
8405
8406         * class.c, loader.c, class-internals.h: Removed the
8407         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
8408         defines.
8409
8410         * icall.c: Better error checking in some internal reflection
8411         methods.
8412
8413 2007-07-18  William Holmes  <billholmes54@gmail.com>
8414
8415         * filewatcher.c : removed unused variable 'filename' in 
8416           ves_icall_System_IO_FSW_SupportsFSW
8417
8418 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
8419
8420         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
8421         obsolete, removed.
8422
8423 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
8424
8425         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
8426         
8427         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
8428
8429 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
8432         Implement generics support.
8433         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8434
8435         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
8436         type_args and method_args arguments.
8437         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
8438         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8439         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
8440
8441 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
8442
8443         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
8444           It adds a rootimage parameter to mono_reflection_get_type_internal,
8445           adds new function mono_reflection_get_type_with_rootimage and use
8446           the rootimage to resolve the types instead of the current image
8447
8448 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
8449
8450         * culture-info-table.h: Forgot to update after r78304.
8451
8452 2007-07-13  Raja R Harinath  <rharinath@novell.com>
8453
8454         * class.c (mono_class_is_open_constructed_type)
8455         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
8456
8457 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
8458
8459         * class.c (mono_bounded_array_class_get):  method fails if used with
8460         an incomplete TypeBuilder enum (no basetype field), fixed it by 
8461         avoiding calculating the size for such array as it cannot be instantiated.
8462         Fix bug #82015
8463
8464 2007-07-12  Raja R Harinath  <rharinath@novell.com>
8465
8466         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
8467         field.
8468         * metadata.c, reflection.c: Update to changes.
8469
8470 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
8471
8472         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
8473         mono_class_is_valid_enum, they are used to valide a enum when loading.
8474         * reflection.c: used new functions to throw TypeLoadException when and
8475         invalid enum is build with TypeBuilder. Fixes #82018
8476   
8477 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
8478
8479         * object.c: forgot commit of mono_class_setup_methods () to access
8480         iface->methods.
8481         * object-internals.h: added a few more handy fields to
8482         MonoIMTCheckItem.
8483
8484 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
8485
8486         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
8487         iface->methods.
8488
8489 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
8490
8491         * class-internals.h, object-internals.h, object.c: IMT-based
8492         interface invocation core from Massimiliano Mantione
8493         (massi@ximian.com) with a reworked arch-specific interface,
8494         bsearch implementation and a few bugfixes and memory savings by me.
8495
8496 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * class.c (mono_class_create_from_typedef): mono would segfault if 
8499         an enum did not have a __value field. It now throws a TypeLoadException
8500         for such cases. Fix bug #82022
8501
8502 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
8503
8504         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
8505
8506 2007-07-09  Mark Probst  <mark.probst@gmail.com>
8507
8508         * class.c (mono_class_init): If a class is already inited but has
8509         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
8510
8511 2007-07-09  Mark Probst  <mark.probst@gmail.com>
8512
8513         * class.c: Properly handle the case of an unimplemented interface
8514         method.  Fixes: 81673.
8515
8516 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
8517
8518         * class-internals.h, object.c: cleanup patch from massi: use
8519         MonoVTable->interface_bitmap since the vtable interfaces offset array
8520         is going away.
8521
8522 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
8523
8524         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
8525         GetMDStreamVersion icall instead.
8526
8527 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
8528
8529         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
8530         not use mono_dl_build_path() with a full library name: makes
8531         fallbacks to libgaim and libfam work.
8532
8533 2007-07-06  William Holmes  <billholmes54@gmail.com>
8534
8535         * assembly.c: Added a continue statement in probe_for_partial_name when
8536          parse_assembly_directory_name fails.  Fixes : 82002
8537
8538 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
8539
8540         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
8541         and added a verification  for TYPEDBYREF.
8542         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
8543         make native int interchangeable with int32 and some small cleanup and formating.
8544         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
8545         handle byref of byref.
8546         * verify.c (push_local): handle byref of byref.
8547         * verify.c (do_binop): invalid mix of values is unverifiable
8548         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
8549         added visibility checks
8550         * verify.c (field related method): added visibility checks
8551         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
8552
8553 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
8554
8555         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
8556         string.
8557
8558 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
8559
8560         * profiler.c (mono_profiler_load): Fix an off-by-one error.
8561
8562         * marshal.c (emit_marshal_string): When returning a string from managed code,
8563         allways make a copy even for unicode strings. Fixes #81990.
8564
8565 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
8566
8567         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
8568         of byref generic inst types (bug #81997).
8569
8570 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
8571
8572         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
8573         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
8574
8575 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * marshal.c (emit_marshal_string): Add support for unicode strings in
8578         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
8579
8580 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
8581
8582         * verify.c: field load/store are now verified, missing only access checks now
8583
8584 2007-06-28  Martin Baulig  <martin@ximian.com>
8585
8586         * mono-debug.c (mono_debug_debugger_version): New public variable.
8587
8588 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
8589
8590         * locales.c: When constructing DateTimeFormat or NumberFormat for
8591         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
8592         MonoCultureInfo contructed from the current locale is always
8593         read-only and has UseUserOverride set to true. All MonoCultureInfo
8594         instances returned for GetCultures have both IsReadOnly and
8595         UseUserOverride set to true. Fixes part of bug #81930.
8596
8597 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
8598
8599        * icall-def.h: Update System.__ComObject icalls
8600        * marshal.c: Avoid managed transition (and object creation)
8601        when looking up COM interface in RCW.
8602        * marshal.h: Ditto.
8603        
8604        Code is contributed under MIT/X11 license.
8605
8606 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
8607
8608         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
8609         to avoid crashes during assembly unloading.
8610
8611 2007-06-22  Raja R Harinath  <rharinath@novell.com>
8612
8613         Fix MethodInfo.IsGenericMethodDefinition
8614         * reflection.c (mono_reflection_bind_generic_method_parameters):
8615         Rearrange code to ensure we always uses a generic method definition.
8616         * class.c (mono_class_inflate_generic_method_full): Set
8617         'generic_container' field only for generic method definitions.
8618         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
8619         Use presense of 'generic_container' field as indication of being a
8620         generic method definition.
8621
8622 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
8623
8624         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8625
8626         * object-internals.h: Reflect changes in the layout of the managed Delegate
8627         class.
8628         
8629         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
8630         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
8631         runtime memory used by the dynamic method. Fixes #77146.
8632
8633 2007-06-21  Dick Porter  <dick@ximian.com>
8634
8635         * file-io.h: 
8636         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
8637         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
8638         81767.
8639
8640 2007-06-21  Raja R Harinath  <rharinath@novell.com>
8641
8642         * reflection.c (method_encode_methodspec): Add a tripwire.
8643         * class.c (inflate_generic_type): The fully open generic type is
8644         not the same as the generic type definition.
8645
8646 2007-06-21  Martin Baulig  <martin@ximian.com>
8647
8648         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
8649
8650         * mono-debug-debugger.h
8651         (MonoDebuggerBreakpointInfo): Removed.
8652         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
8653         (mono_debugger_remove_breakpoint): Likewise.
8654         (mono_debugger_breakpoint_callback): Likewise.
8655         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
8656
8657 2007-06-21  Raja R Harinath  <rharinath@novell.com>
8658
8659         * metadata.c (mono_metadata_lookup_generic_class): The fully open
8660         generic type is not the same as the generic type definition.
8661         * class.c (mono_generic_class_get_class): Likewise.
8662
8663 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
8664
8665         * icall.c: The second argument to 
8666         System.Reflection.MethodBase.GetMethodFromHandleInternalType
8667         is a MonoType not a MonoClass.
8668
8669 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
8670
8671         * verify.c: support for function pointers in the verifier
8672
8673 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
8674
8675         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
8676
8677 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
8678
8679         * assembly.c: removed Mono.Data.SqliteClient from the list of
8680         forward-compatible assemblies as it breaks the ABI (bug #81899).
8681
8682 2007-06-19  Raja R Harinath  <rharinath@novell.com>
8683
8684         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
8685         lookup/update with the loader lock.
8686         * reflection.c (mono_class_bind_generic_parameters): No need to
8687         protect mono_metadata_lookup_* with the loader lock.
8688         * class.c (inflate_generic_type): Likewise.
8689         
8690         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
8691         on a generic instantiated type.
8692
8693 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
8694
8695         *verify.c: produce meanfull error messages on verification error
8696         *verify.c: fixed some cases of verification errors reported as validation errors
8697         *pedump.c: fixed the error name array, now it shows validation errors properly
8698         *verify.h: fixed the contant that should be used for verification errors
8699
8700 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
8701
8702         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
8703         for bug #77596, 81858 and 80743 (generics data structures on domain
8704         unload).
8705
8706 2007-06-15  Raja R Harinath  <rharinath@novell.com>
8707
8708         Avoid allocating 'MonoGenericContext' on the heap.
8709         * class-internals (_MonoMethodInflated::context): Make field
8710         inline, not a pointer.
8711         * loader.c (method_from_methodspec): Allocate 'new_context' on the
8712         stack.  Use the context embedded within the inflated method as the
8713         hash key, rather than 'new_context'.
8714         * class.c (inflate_generic_context): Simplify.  Return a struct
8715         rather than allocating on the heap.
8716         (mono_class_inflate_generic_method_full): Update to changes.  Now,
8717         doesn't salt away a copy of the context -- simplifying the
8718         lifetime rules of a 'MonoGenericContext *'.
8719         (mono_method_get_context): Return pointer to embedded context.
8720         (setup_generic_array_ifaces): Allocate temporary context on stack.
8721         * reflection.c (inflate_mono_method): Likewise.
8722         (mono_reflection_bind_generic_method_parameters): Likewise.
8723         Use the context embedded within the inflated method as the hash key.
8724
8725         Avoid a source of allocation of 'MonoGenericContext'.
8726         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
8727         and 'cached_context' fields into embedded 'MonoGenericContext' field.
8728         * class.c: Update to changes.
8729         (mono_generic_class_get_context): Simplify drastically.  Now just
8730         returns a pointer to the field.
8731         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
8732         argument as a const pointer.
8733         (mono_metadata_generic_context_equal): Likewise.
8734         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
8735         Update to changes.
8736
8737 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
8738
8739         * verify.c improved the handling of brtrue/brfalse, factored out common code
8740
8741 2007-06-14  Raja R Harinath  <rharinath@novell.com>
8742
8743         Kill MonoGenericMethod.
8744         * class-internals.h (MonoGenericContext::method_inst): Rename from
8745         'gmethod' and convert to a MonoGenericInst.
8746         (MonoGenericMethod): Remove.
8747         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
8748         * loader.c (method_from_methodspec): Update to changes.  Use a
8749         MonoGenericContext as the key to the hashtable.
8750         * metadata.c (mono_metadata_generic_context_equal): Rename from 
8751         'mono_metadata_generic_method_equal' and take MonoGenericContext.
8752         (mono_metadata_generic_context_hash): Likewise from
8753         'mono_metadata_generic_method_hash'.  Change hash function.
8754         (mono_metadata_load_generic_params): Update to changes.
8755         (mono_get_shared_generic_method): Remove.
8756         * metadata-internals.h (mono_get_shared_generic_method): Remove.
8757         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
8758         (inflate_generic_context): Likewise.
8759         (mono_class_inflate_generic_method_full): Likewise.
8760         (setup_generic_array_ifaces): Likewise.
8761         (mono_class_create_from_typespec): Likewise.
8762         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
8763         (method_encode_methodspec): Update callsite.
8764         (reflection_methodbuilder_to_mono_method): Update to changes.
8765         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
8766         MonoGenericContext as the key to the hashtable.
8767         (inflate_mono_method): Update to changes.
8768
8769         * class-internals.h (MonoGenericMethod::container): Remove.
8770         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
8771
8772 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
8773
8774         * profiler-private.h, profiler.c, profiler.h: added API to profile
8775         exception events.
8776
8777 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
8778
8779         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
8780
8781 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
8782
8783         * verify.c: method invocation is now validated, now we verify parameter types on stack.
8784         Fixed overflow and underflow not aborting the verification process.
8785
8786 2007-06-13  Mark Probst  <mark.probst@gmail.com>
8787
8788         * class-internals.h (MonoStats): Added stats entries for dynamic
8789         code allocations.
8790
8791 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * loader.c (mono_free_method): Free header->locals and header->clauses.
8794
8795         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
8796         dynamic case.
8797
8798         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
8799
8800         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
8801
8802 2007-06-12  Raja R Harinath  <rharinath@novell.com>
8803
8804         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
8805         the tables.
8806
8807 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
8808
8809         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
8810
8811 2007-06-11  Raja R Harinath  <harinath@gmail.com>
8812
8813         MonoGenericMethod on a diet
8814         * class-internals.h (_MonoMethodInflated::reflection_info): Move
8815         here ...
8816         (_MonoGenericMethod::reflection_info): ... from here.
8817         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
8818         Update to changes.
8819         * reflection.c (inflate_mono_method): Likewise.
8820         (mono_reflection_bind_generic_method_parameters): Likewise.
8821
8822 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
8823
8824         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
8825         *verify.c: factored long ldarg forms to share code with short forms
8826
8827 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
8828
8829         *verify.c: fixed code formating factored some duplicate code
8830         into a new function
8831
8832         *verify.h: fixed binary incompatibility introduced earlier
8833
8834         *pedump.c: fixed formating
8835
8836 2007-06-11  Raja R Harinath  <harinath@gmail.com>
8837
8838         Fix assertion when disassembling Mono.C5.dll
8839         * loader.c (method_from_methodspec): Avoid inflating a method
8840         twice with the same context.  If the methodref is inflated, use
8841         the declaring method instead.
8842
8843         * class.c (mono_class_from_generic_parameter): Fix case similar to
8844         bug #81830 handled below, but for method containers.
8845
8846 2007-06-10  Raja R Harinath  <harinath@gmail.com>
8847
8848         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
8849         get_shared_generic_class.  Directly inflate the instance.
8850         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
8851         (inflate_generic_class): Delete.
8852         (get_shared_generic_class): Delete.  Move setting of
8853         'cached_class' and 'cached_context' ...
8854         * metadata.c (mono_metadata_lookup_generic_class): ... here.
8855
8856         * metadata.c (mono_metadata_lookup_generic_class): Change
8857         signature to take the components of a MonoGenericClass rather than
8858         an allocated MonoGenericClass.  Change semantics to be intern-like.
8859         * reflection.c (mono_class_bind_generic_parameters): Update to
8860         changes.  Make locking region tighter.
8861         * class.c (inflate_generic_class): Update to changes.
8862         (get_shared_generic_class): Likewise.
8863         * metadata-internals.h: Likewise.
8864
8865         * reflection.c (mono_class_bind_generic_parameters): Take and
8866         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
8867         (mono_reflection_bind_generic_parameters): Use
8868         'mono_class_bind_generic_parameters' rather than duplicate the code.
8869         * class.c (mono_bounded_array_class_get): Update to changes.
8870         * object-internals.h: Likewise.
8871
8872         * reflection.c (mono_class_bind_generic_parameters): Only support
8873         parameterizing generic type definitions.  Remove support for other
8874         open types.
8875
8876 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
8877
8878         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
8879
8880         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
8881         in the dynamic case.
8882
8883 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
8884
8885         * threads.c: When cleaning up thread, reset the Background bit.
8886         Fixes bug #81720.
8887
8888 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
8889
8890        * metadata.c: Move variable declarations to top of scope.
8891        * verify.c: Move variable declarations to top of scope.
8892
8893        Code is contributed under MIT/X11 license.
8894
8895 2007-06-08  Raja R Harinath  <rharinath@novell.com>
8896
8897         * reflection.c (mono_class_bind_generic_parameters): Replace
8898         open-coded loop with mono_metadata_inflate_generic_inst.
8899
8900         * class.c (get_shared_generic_class): Don't call
8901         mono_get_shared_generic_inst.  Use the container's own
8902         'class_inst'.
8903
8904         * metadata.c (mono_metadata_load_generic_params): Move
8905         initialization of 'context' field here from ...
8906         * class.c (mono_class_create_from_typedef): ... here, and ...
8907         * loader.c (mono_get_method_from_token): ... here.
8908
8909         * class.c (get_shared_generic_class): Rename from
8910         mono_get_shared_generic_class and make static.
8911         (mono_get_shared_generic_inst): Move to metadata.c.
8912         * loader.c (mono_get_shared_generic_method): Likewise.
8913         * class-internals.h, metadata-internals.h: Update to changes.
8914
8915         Fix #81830
8916         * class.c (mono_class_from_generic_parameter): Don't assume a
8917         generic container owner exists.  Generic containers from monodis
8918         don't have any.
8919
8920 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
8921
8922         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
8923         * verify.h: new typedefs to returns the non-verifiable status
8924         * verify.c: initial implementation of generics, stack merging and object compatibility check
8925
8926 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8927
8928         * class.c, image.c, class-internals.h (MonoImage): class_cache is
8929         a MonoInternalHashTable again (fixed bug in internal hash table
8930         code).
8931
8932 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8933
8934         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
8935         MonoInternalHashTable again (fixed bug in internal hash table
8936         code).
8937
8938 2007-06-06  Mark Probst  <mark.probst@gmail.com>
8939
8940         * class.c, image.c, class-internals.h, domain.c,
8941         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
8942         changes.  Have to figure out what makes them break the SWF
8943         regression.
8944
8945 2007-06-04  Mark Probst  <mark.probst@gmail.com>
8946
8947         * class.c, image.c, class-internals.h (MonoImage): class_cache is
8948         a MonoInternalHashTable now.
8949
8950 2007-06-04  Mark Probst  <mark.probst@gmail.com>
8951
8952         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
8953         MonoInternalHashTable now.
8954
8955 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
8956
8957         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
8958         invoke_impl code.
8959
8960         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
8961
8962         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
8963         dependent trampoline.
8964
8965         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8966
8967         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
8968
8969 2007-05-29  Robert Jordan  <robertj@gmx.net>
8970
8971         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
8972
8973 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
8974
8975         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
8976
8977 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
8978
8979        * marshal.c: Fix interface lookup loops for
8980        cominterop_get_com_slot_for_method and 
8981        cominterop_get_method_interface. Only need to lookup
8982        if type is a class, else use interface type method is on.
8983
8984        Code is contributed under MIT/X11 license.
8985
8986 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
8987
8988         * reflection.c: HasSecurity can be present even if no specially 
8989         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
8990         SecurityAttribute). Fix CAS regression tests on buildbot.
8991
8992 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
8993
8994        * appdomain.c: Add configure checks for header files.
8995        * image.c: Add configure checks for header files.
8996        * file-io.c: Add configure checks for header files.
8997        * debug-mono-symfile.c: Add configure checks for header files.
8998        * threadpool.c: Add configure checks for header files.
8999        * console-io.c: Add configure checks for header files.
9000        * profiler.c: Add configure checks for header files.
9001        * rawbuffer.c: Add configure checks for header files.
9002        * icall.c: Add configure checks for header files.
9003        * rand.c: Add configure checks for header files.
9004        * socket-io.c: Add configure checks for header files.
9005
9006        Code is contributed under MIT/X11 license.
9007
9008 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
9009
9010         * reflection.c (mono_custom_attrs_from_builders): Remove the 
9011         assertion as it breaks the build.
9012         
9013         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
9014
9015         * reflection.c (lookup_custom_attr): Make a copy here too.
9016
9017         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
9018         dynamic images.
9019
9020         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
9021         images.
9022
9023         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
9024         info.
9025
9026 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
9029         (load_cattr_value): Ditto.
9030
9031 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
9032
9033         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
9034
9035 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
9036
9037         * threads.c: In "start_wrapper", set apartment_state to MTA if
9038         apartment_state is Unknown and we're running on 2.0 profile or
9039         higher.
9040         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
9041         to main method, then set apartment_state to Unknown on 1.0 profile,
9042         and MTA on 2.0 profile.
9043
9044 2007-05-16  Jb Evain  <jb@nurv.fr>
9045
9046         * class-internals.h (MonoDefaults): Add an attribute_class and
9047           customattribute_data_class.
9048         * domain.c (mono_init_internal): Populate them.
9049         * reflection.c: Use them to remove duplicates. Make a vew
9050         MonoClass variables `static'.
9051
9052 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
9053
9054         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
9055         step in implementing IMT, so that all isinst checks now can go
9056         through the bitmap.
9057         This was needed because vtables for TransparentProxy need to look
9058         like the vtable of the "target" class, so they need to point to
9059         its interface bitmap directly.
9060
9061         * object.c: inside "mono_class_create_runtime_vtable" and
9062         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
9063
9064 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
9065
9066         * object-internals.h
9067           culture-info.h : added territory field in MonoCulture and
9068           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
9069         * locales.c : fill territory field above too.
9070         * culture-info-table.h : regenerated.
9071
9072 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
9073
9074         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
9075         Fixes #81599.
9076
9077 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
9078
9079         * object.c: Always initialize apartment, even if 
9080         there is no custom attributes on entry point.
9081         
9082         Code is contributed under MIT/X11 license.
9083
9084 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
9085
9086         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
9087         * metadata.c: If no encoding is set, check for unicode
9088         on class.
9089         
9090         Code is contributed under MIT/X11 license.
9091
9092 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
9093
9094         * threads.c: Handle if mono_thread_current returns NULL 
9095         
9096         Code is contributed under MIT/X11 license.
9097
9098 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
9099
9100         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
9101         in start_wrapper. Added mono_thread_init_apartment_state and
9102         mono_thread_cleanup_apartment_state.
9103         * object.c: Initialize thread apartment state on main thread
9104         by checking for STAThreadAttribute on entry point.
9105         * object-internals.h: Add apartment_state field to MonoThread.
9106         * threads-types.h: Add unmanaged definition of 
9107         System.Threading.ApartmentState, MonoThreadApartmentState.
9108         
9109         Code is contributed under MIT/X11 license.
9110         
9111 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
9112
9113         * class.c: Fix windows build.
9114         * class-internals.h: Fix windows build.
9115         
9116         Code is contributed under MIT/X11 license.
9117
9118 2007-05-08  Robert Jordan  <robertj@gmx.net>
9119
9120         * process.c (CreateProcess_internal):
9121         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
9122         .CreateNoWindow was specified. Fixes #81496.
9123
9124 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9125
9126         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
9127         step in implementing IMT, replaced it with two compact arrays
9128         (interfaces_packed and interface_offsets_packed) and a bitmap that
9129         is used for isinst checks (interface_bitmap).
9130
9131         * class.c: (compare_interface_ids): compare function to pass to
9132         bsearch when looking for an interface with a given id.
9133         (mono_class_interface_offset): reimplemented using bsearch on
9134         interfaces_packed, getting the offset from interface_offsets_packed.
9135         (print_implemented_interfaces): utility debugging function.
9136         (setup_interface_offsets): reworked to initialize interfaces_packed,
9137         interface_offsets_packed and interface_bitmap.
9138
9139         * object.c: replaced all accesses to "MonoClass.interface_offsets"
9140         with uses of interfaces_packed and interface_offsets_packed.
9141
9142 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
9143
9144         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
9145         mono_class_interface_offset prototype to wrap all accesses to
9146         "MonoClass.interface_offsets".
9147
9148         * class.c: Implemented mono_class_interface_offset, and wrapped all
9149         accesses to "MonoClass.interface_offsets".
9150
9151         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
9152         "MonoClass.interface_offsets".
9153
9154 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9155
9156         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
9157         GetMethodFromHandle overloads (bug #78637).
9158
9159 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
9160
9161         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
9162         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
9163
9164 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
9167         #81498.
9168
9169         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
9170         gracefully.
9171         (mono_custom_attrs_from_index): Ditto.
9172
9173         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
9174         Fixes #81501.
9175
9176 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
9179         is now allocated from a mempool.
9180
9181 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
9184         caller holds threads_lock, leading to deadlocks. Fixes #81476.
9185
9186 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
9187
9188         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
9189         mono_loader_clear_error () too late. Fixes #81463.
9190
9191 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
9192
9193         * culture-info-table.h : regenerated.
9194
9195 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
9198         is missing.
9199
9200 2007-04-25  Dick Porter  <dick@ximian.com>
9201
9202         * Makefile.am: Put the mingw enforced-optimisation back into the
9203         PLATFORM_WIN32 section.
9204
9205 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
9206
9207         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
9208         patch.
9209
9210         * image.c (mono_image_load_module): New API function to load a module reference.
9211
9212         * image.c (load_modules): Load modules lazily. Fixes #80812.
9213
9214         * class.c (mono_class_from_typeref): Use mono_image_load_module.
9215         
9216         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
9217
9218         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
9219         to mono_image_load_module_dynamic.
9220
9221 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
9222
9223         * marshal.c: Fix calling convention for CCW on non-windows
9224         platforms. STDCALL on windows, CDECL everywhere else to work 
9225         with XPCOM and MainWin COM.
9226         
9227         Code is contributed under MIT/X11 license.
9228
9229 2007-04-23  Martin Baulig  <martin@ximian.com>
9230
9231         Fix #80969.
9232
9233         * loader.c
9234         (method_from_memberref): Added `gboolean *used_context' argument.
9235         (mono_get_method_from_token): Likewise.
9236         (mono_get_method_full): Don't insert the method in the cache when
9237         `used_context' is true.
9238
9239 2007-04-23  Raja R Harinath  <rharinath@novell.com>
9240
9241         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
9242
9243         * reflection.c (mono_reflection_bind_generic_parameters): Don't
9244         create new MonoTypes for returned types.
9245         * class.c (mono_generic_class_get_class): Export mono-internal.
9246         * class-internals.h: Update to changes.
9247
9248 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9249
9250         * threadpool.c, threadpool.h, icall-def.h: patch from
9251         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
9252
9253 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
9254
9255         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
9256         
9257         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
9258
9259         * threads.c (mono_thread_get_stack_bounds): New helper function.
9260
9261         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
9262         Correctly compute stack bounds when attaching. Fixes #81394.
9263
9264 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
9265
9266         * reflection.c: fix handling of doubles in custom attributes
9267         for the arm-fpa format (bug #81368).
9268
9269 2007-04-18  Raja R Harinath  <rharinath@novell.com>
9270
9271         * reflection.c (assembly_add_win32_resources): Mildly relax an
9272         bounds check to let the end pointer point just past the end of the
9273         allocated buffer.  (may fix #81384)
9274
9275 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
9276
9277         * culture-info-table.h : regenerated.
9278
9279 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
9280
9281         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
9282         the thread is aborted early.
9283
9284 2007-04-05  Dick Porter  <dick@ximian.com>
9285
9286         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
9287         FindFirstFile()/FindNextFile() to find entries.  This lets the
9288         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
9289         81038.
9290
9291         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
9292         the parameters of
9293         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
9294
9295 2007-04-04  Martin Baulig  <martin@ximian.com>
9296
9297         * debug-helpers.c
9298         (mono_method_desc_full_match): Add support for nested classes.
9299
9300 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
9301
9302         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
9303
9304 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
9305
9306         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
9307         waiting for too many threads.
9308
9309 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
9310
9311         * environment.c: Fix return value check on uname so we can get the 
9312         executing version on Solaris operating systems.
9313
9314 2007-03-28  Jb Evain  <jbevain@gmail.com>
9315
9316         * class.c (mono_type_get_name_recurse): Complete the
9317         fix for the creation of assembly qualified names for
9318         pointer types. Fixes #81208.
9319
9320 2007-03-27  Dick Porter  <dick@ximian.com>
9321
9322         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
9323         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
9324         changed.
9325
9326         * threads.c
9327         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
9328         the value of ReleaseMutex().
9329
9330 2007-03-27  Dick Porter  <dick@ximian.com>
9331
9332         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
9333         in little-endian order, not network endian, so must be converted
9334         to host endian here.  Fixes bug 80593.
9335
9336 2007-03-22  Jb Evain  <jbevain@gmail.com>
9337
9338         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
9339         qualified names for pointer types. Fixes #81208.
9340
9341 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
9342
9343         * marshal.c: Add support for PreserveSigAttribute. 
9344         
9345         Code is contributed under MIT/X11 license.
9346
9347 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
9348
9349         * process.c: Fix endianness issues. Fixes #81126.
9350
9351         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
9352         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
9353
9354         * image.c (mono_image_lookup_resource): Make this work on big-endian
9355         machines.Change API contract so the caller needs to free the return value.
9356         
9357         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
9358         API change.
9359         
9360 2007-03-14  Martin Baulig  <martin@ximian.com>
9361
9362         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
9363         mono_type_get_desc() as well.
9364
9365 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
9366
9367         * icall.c:  Fix environ access in VS.  
9368         
9369 2007-03-13  Alp Toker  <alp@atoker.com>
9370
9371         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
9372         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
9373         #63841.
9374
9375 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
9376
9377         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
9378         circular references among dynamic methods. Fixes #81091.
9379
9380         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
9381
9382 2007-03-09  Martin Baulig  <martin@ximian.com>
9383
9384         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
9385
9386 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
9387
9388         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
9389         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
9390         
9391         Code is contributed under MIT/X11 license.
9392         
9393 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
9394
9395         * loader.c: Reapply patch for bug #79424.
9396
9397 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * metadata.c (mono_type_to_unmanaged): Only convert object to
9400         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
9401
9402 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
9403
9404         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
9405         (and incorrectly set) is_reference field from MonoGenericInst.
9406
9407 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
9408
9409         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
9410         a little earlier.
9411
9412         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
9413
9414         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
9415
9416 2007-03-05  Miguel de Icaza  <miguel@novell.com>
9417
9418         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
9419         FileOptions.1 value to mean "temporary", map that to
9420         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
9421
9422         Fixes 80688
9423
9424 2007-03-03  Marek Habersack  <mhabersack@novell.com>
9425
9426         * appdomain.c: implement MS .Net style shadow copying. Copies of
9427         the assemblies are made in a subdirectory of the dynamic base
9428         directory, the assembly names are preserved.
9429         Copy .mdb and .config files along with the assemblies being shadowed.
9430
9431 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
9432
9433         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
9434         (emit_marshal_handleref): Ditto.
9435
9436         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
9437         on Visual C++. Fixes #80671.
9438
9439 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
9440
9441         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
9442         for clone operations.
9443
9444 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * marshal.c: Fix warnings.
9447
9448 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
9449
9450         * loader.c: allow case-insensitive matching of the dll name
9451         in dllmap handling when prefixed with "i:".
9452
9453 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
9454
9455         * threads.c: Fix #ifdef for dummy_apc function for VS.
9456
9457 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
9458
9459         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
9460
9461 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
9462         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
9463         giving precedence to the methods with a fully qualified name
9464         (InterfaceName.MethodName) when building the interface sections
9465         of the vtable.
9466
9467 2007-02-16  Dick Porter  <dick@ximian.com>
9468
9469         * threadpool.c (append_job): Fix fast-path array handling, so it's
9470         less likely the array will grow exponentially when the load is
9471         heavy.
9472
9473 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9474
9475         * metadata-internals.h, loader.c: fix dllmap lookup order
9476         for non-function maps, too, and prepare for fallback code.
9477
9478 2007-02-12  Robert Jordan  <robertj@gmx.net>
9479
9480         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
9481         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
9482         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
9483         GlobalFree. Fixes a part of bug #77075.
9484
9485 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
9486
9487         * loader.c: implemented typedef parent in field memberref.
9488
9489 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
9490
9491         * marshal.c: Fix warnings and remember to call Release on
9492         IUnknown of RCW.
9493         
9494         Code is contributed under MIT/X11 license.
9495
9496 2007-02-10  Miguel de Icaza  <miguel@novell.com>
9497
9498         * class-internals.h: Add MonoHandleRef definition, and
9499         handleref_class to mono_defaults. 
9500
9501         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
9502         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
9503
9504         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
9505         (do nothing on this stage)
9506         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
9507         (emit_marshal_handleref): New method, used for argument handling
9508         of HandleRefs. 
9509
9510 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
9511
9512         * class.c (mono_class_setup_parent): Lazily init com types.
9513         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
9514         init com types.
9515         * object.c (mono_remote_class_vtable): Lazily init com types.
9516         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
9517         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
9518         * domain-internals.h: Expose mono_init_com_types.
9519         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
9520         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
9521         Add support for COM Callable Wrapper marshalling.
9522         * marshal.h: Add icall definitions.
9523         * gc.c: Handle freeing of CCWs in finalizer code.
9524         
9525         Code is contributed under MIT/X11 license.
9526
9527 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
9528
9529         * reflection.c: changed all the signature encoding code to use
9530         a variable-sized buffer.
9531
9532 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9533
9534         * marshal.c: locking fixes: never take the loader lock
9535         or other runtime locks when holding the marshal lock
9536         (fixes bug#80664).
9537
9538 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
9539
9540         * marshal.c: make the delegate function pointer mapping
9541         work for the moving GC.
9542
9543 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
9544
9545         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
9546         for bug #80618.
9547
9548 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
9549
9550         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
9551         gmodule.
9552
9553 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
9554
9555         * threadpool.c: made the code moving-GC safe.
9556
9557 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
9558
9559         * assembly.c, boehm-gc.c, class-internals.h, class.c,
9560         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
9561         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
9562         warning cleanup.
9563         * reflection.c: warning cleanup, some threading and moving GC fixes.
9564
9565 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
9566
9567         * class.c, loader.c: create the needed Set/Get/Address array methods
9568         as well as the .ctors in mono_class_init (), fixes bug #80567.
9569
9570 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
9573         we doesn't decrease its alignment. Should fix the sparc build.
9574
9575 2007-01-24  Dick Porter  <dick@ximian.com>
9576
9577         * socket-io.c
9578         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
9579         Create the returned object if we need to ignore an unsupported
9580         socket option.  Fixes a segfault reported by Atsushi.
9581
9582 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
9583
9584         * class.c, object.c: restrict GC-tracked fields to
9585         UIntPtr fields used inside corlib, so we provide better
9586         type info to the GC and also allow broken packing as in
9587         bug #80580.
9588
9589 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
9590
9591         * sgen-gc.c: removed duplicated function.
9592
9593 2007-01-19  Miguel de Icaza  <miguel@novell.com>
9594
9595         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
9596         value that means that the value is not supported, but that we
9597         should not return a failure, but instead report this as a
9598         successful operation.
9599
9600 2007-01-19  Raja R Harinath  <rharinath@novell.com>
9601
9602         Fix tests/bug79956.2.il
9603         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
9604         (mono_generic_class_get_class): If the generic definition in an
9605         enum, copy over other fields related to it.
9606
9607 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
9608
9609         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
9610         genericinst enums (bug #79215).
9611
9612 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
9613         * class.c: Fix bug 80307.
9614
9615 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
9616
9617         * image.c: if the file table is not present, try to load
9618         all the modules, since we don't have info about them
9619         having or not metadata (bug #80517).
9620         * assembly.c: allow mono_assembly_load_references () to
9621         work for netmodules.
9622
9623 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
9624
9625         * image.c, metadata-internals.h, object.c: execute module
9626         cctors when running on the 2 runtime if present (bug #80487).
9627
9628 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
9629
9630         * icall.c: optimized InitializeArray() on bigendian.
9631
9632 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
9633
9634         * icall.c: fix for the broken ARM FPA double format.
9635
9636 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
9637
9638         * icall.c: handle endian issues for r4 and r8 types, too, in
9639         the InitializeArray() icall.
9640
9641 2007-01-15  Miguel de Icaza  <miguel@novell.com>
9642
9643         * loader.c (mono_loader_error_prepare_exception): Clear the error
9644         once we have extracted the information from it, do this before we
9645         call into the JIT's class loading mechanisms.
9646
9647         * object.c (mono_class_create_runtime_vtable): Do not clear the
9648         loader error before calling mono_class_get_exception_for_failure
9649         as the loader error is needed inside
9650         mono_class_get_exception_for_failure to throw the error (thinko).
9651
9652         Fixes #80521
9653         
9654 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
9655
9656         * reflection.c: align fields rva data so it's faster to load at
9657         runtime.
9658
9659 2007-01-12  Raja R Harinath  <rharinath@novell.com>
9660
9661         Prepare to simplify GenericMethod handling.
9662         * class-internals.h (mono_method_get_context): New accessor function.
9663         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
9664         rather than directly accessing '->context' field.
9665
9666         * class-internals.h (_MonoGenericParam.method): Move ...
9667         (_MonoGenericContainer): ... here.  Add into union with klass field.
9668         * class.c, icall.c, loader.c, metadata.c, reflection.c:
9669         Update to changes.
9670
9671 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
9672
9673         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
9674         the wrapper type enum and reduce relocations.
9675
9676 2007-01-12  Raja R Harinath  <rharinath@novell.com>
9677
9678         * reflection.c (inflate_mono_method): Reuse method instantiation
9679         from the generic method, if available.
9680
9681 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
9682
9683         * marshal.c (emit_marshal_variant): Fix conv_arg
9684         type in last commit, based on whether parameter is byref.
9685         
9686 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
9687
9688         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
9689         marshalling.
9690         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
9691         MONO_TYPE_OBJECT back for VARIANT support.
9692
9693 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
9694
9695         * marshal.c, marshal.h, icall-def.h: Implement 
9696         Marshal.ReAllocCoTaskMem.
9697
9698 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
9699
9700         * marshal.c: memory retention fixes: use the proper
9701         image cache for runtime_invoke method lookups.
9702
9703 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
9704
9705         * mempool.c: added code to help debug mempool allocations.
9706
9707 2007-01-11  Dick Porter  <dick@ximian.com>
9708
9709         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
9710         support (experimenting with faking it with IP_MTU_DISCOVER for
9711         systems that don't have IP_DONTFRAGMENT.)
9712         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
9713         icall.
9714
9715         * icall-def.h: new System.Net.Sockets.Disconnect icall.
9716
9717         * socket-io.h: Add new fields to MonoSocketAsyncResult
9718         corresponding to the new ones in Socket.cs.
9719
9720 2007-01-11  Raja R Harinath  <rharinath@novell.com>
9721
9722         Fix IronPython regression mentioned in #80249
9723         * metadata.c (do_mono_metadata_parse_generic_class): Clear
9724         'cached_context' field, since it may have been initialized as a
9725         side-effect of metadata parsing.
9726
9727         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
9728         (_MonoGenericClass.cached_class): Move here and rename from lone
9729         remaining field of ...
9730         (_MonoInflatedGenericClass): ... this.  Remove.
9731         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
9732         to changes.
9733
9734         Fix mcs/tests/test-128.cs regression.
9735         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
9736         2007-01-10 change below.
9737         [MONO_TYPE_OBJECT]: Recurse into array case.
9738
9739 2007-01-11  Raja R Harinath  <harinath@gmail.com>
9740
9741         * class-internals.h (mono_get_inflated_generic_class): Remove.
9742         * class.c (mono_get_inflated_generic_class): Remove.
9743         (mono_generic_class_get_class): Rename from
9744         mono_class_create_generic.
9745         (mono_class_from_mono_type) [GENERICINST]: Use it.
9746         * reflection.c, metadata.c: Update to changes.  Use
9747         'mono_class_from_mono_type'.
9748
9749 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
9750
9751         * reflection.c: use passed type when encoding an array element
9752         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
9753
9754 2007-01-09  Robert Jordan  <robertj@gmx.net>
9755
9756         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
9757         result arguments (someDelegate.EndInvoke (unrelatedAres)).
9758         Fixes bug #80392.
9759
9760 2007-01-09  Raja R Harinath  <rharinath@novell.com>
9761
9762         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
9763
9764         * object.c (set_value): Avoid aliasing between type->data.klass
9765         and type->data.generic_class.
9766
9767         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
9768
9769 2007-01-08  Raja R Harinath  <rharinath@novell.com>
9770
9771         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
9772         between type->data.klass and type->data.generic_class.
9773
9774 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
9775
9776         * marshal.c: In MS.NET, StringBuilder objects are not copied by
9777         value in out parameters.
9778
9779 2007-01-08  Raja R Harinath  <rharinath@novell.com>
9780
9781         Simplify invariant for MonoGenericClass::klass field.
9782         * class.c (mono_class_create_generic): Verify 'klass' is null.
9783         * metadata.c (do_mono_metadata_parse_generic_class): Don't
9784         initialize 'klass' field.
9785
9786 2007-01-05  Raja R Harinath  <rharinath@novell.com>
9787
9788         Ongoing work to avoid redundant data and simplify invariants.
9789         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
9790         'generic_class', and change type to a GenericInst.
9791         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
9792         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
9793
9794 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
9795
9796         * class.c : skip io-layer under PLATFORM_WIN32.
9797
9798 2007-01-03  Tor Lillqvist  <tml@novell.com>
9799
9800         Fix #80305: In a bundled executable, look in the bundled exe
9801         assembly to determine the runtime version. Add the possibility to
9802         bundle also the machine.config file.
9803         
9804         * assembly.c (mono_assembly_open_from_bundle): Make
9805         non-static. Allow being called even if we have no bundled
9806         assemblies, and return NULL right away in that case.
9807
9808         * domain-internals.h: Declare mono_assembly_open_from_bundle()
9809         here.
9810
9811         * domain.c (app_config_parse): Take an assembly exe file name as
9812         parameter instead of a config file name. Check for a bundled
9813         config file for that assembly by calling
9814         mono_config_string_for_assembly_file() (see below) before looking
9815         for one in the file system.
9816         (get_runtimes_from_exe): Corrsponding change to call of
9817         app_config_parse().
9818         (get_runtimes_from_exe): Check for bundled assembly exe file first
9819         by calling mono_assembly_open_from_bundle(). If no bundled
9820         assembly exe file is found, call mono_image_open() as before to
9821         look it up in the file system.
9822
9823         * mono-config.c: Add variable bundled_machinec_onfig.
9824         (mono_config_string_for_assembly_file): New function.
9825         (mono_config_for_assembly): Move code snippet that looks for a
9826         bundled assembly .config file into the above new function. Call
9827         it.
9828         (mono_register_machine_config, mono_get_machine_config): New
9829         functions to set and retrieve
9830
9831         * assembly.h: Declare mono_register_machine_config().
9832
9833         * mono-config.h: Declare mono_get_machine_config() and
9834         mono_config_string_for_assembly_file().
9835
9836         * icall.c: No declaration of environ necessary on Win32. It is
9837         declared (as a macro expanding to a function call) in stdlib.h.
9838         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
9839         New internal mono function. Returns the value of
9840         mono_get_machine_config() as a Mono string.
9841
9842         * icall-def.h: Add get_bundled_machine_config().
9843
9844 2007-01-04  Raja R Harinath  <rharinath@novell.com>
9845
9846         Remove redundant field
9847         * class-internals.h (_MonoGenericContext.container): Remove field.
9848         * loader.c (mono_method_get_signature_full): Don't parse a
9849         "container" for a signature parse when the signature is inflated
9850         immediately.
9851         (method_from_methodspec): Likewise, for a generic_inst.
9852         * class.c, metadata.c, reflection.c: Update to changes.
9853
9854 2006-01-04  Raja R Harinath  <rharinath@novell.com>
9855
9856         * class-internals.h (_MonoGenericClass): Rename 'context' field to
9857         'cached_context', and change semantics -- it starts off NULL, and
9858         is initialized on demand.
9859         * class.c (mono_generic_class_get_context): New accessor to
9860         replace 'context' field accesses.
9861         (mono_class_get_context): New helper.
9862         (*): Update to changes.
9863         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
9864
9865 2007-01-03  Miguel de Icaza  <miguel@novell.com>
9866
9867         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
9868         before the memcpy.   Fixes Marshal2 regression.
9869
9870 2007-01-02  Jb Evain  <jbevain@gmail.com>
9871
9872         * blob.h: add a MONO_TYPE_ENUM definition
9873         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
9874         fix the encoding of arrays of enums in custom attributes.
9875
9876         Fixes #79666.
9877
9878 2007-01-01  Miguel de Icaza  <miguel@novell.com>
9879
9880         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
9881         string is null terminated, but only cut the string short if it
9882         overflows the buffer.   
9883         
9884         (mono_string_to_byvalstr): Also fix this routine.   The code here
9885         was not properly terminating a string (it was only terminated
9886         because of the previous catch-all memset). 
9887
9888         I left the memset, because I do not know if applications expect
9889         the runtime to clear this region. 
9890
9891         Fixes #79944.
9892
9893         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
9894         Clear the error before returning to unmanaged code to prevent the
9895         runtime from being confused later on (fixes  80420).
9896         (ves_icall_type_from_name): Always call mono_loader_clear_error
9897         after parsing a type that could have failed.
9898         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
9899
9900         * loader.c (mono_loader_clear_error): Fix indentation.
9901
9902 2006-12-28  Martin Baulig  <martin@ximian.com>
9903
9904         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
9905
9906 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9907
9908         * reflection.c: patch from Rolf Bjarne Kvinge to fix
9909         getting a token for an EnumBuilder.
9910
9911 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
9912
9913         * reflection.c: be more careful in case resource generation
9914         fails to create the data array.
9915
9916 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
9917
9918         * sgen-gc.c: write barrier for clone and fix unregister handles.
9919
9920 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
9921
9922         * reflection.c: some fixes needed in the generics code for the moving GC.
9923
9924 2006-12-22  Robert Jordan  <robertj@gmx.net>
9925
9926         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
9927         account. Fixes bug #80299.
9928
9929 2006-12-21  Raja R Harinath  <rharinath@novell.com>
9930
9931         Fix WaitHandle usage in delegates.
9932         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
9933         * object.c (mono_wait_handle_new): Use the property set method to
9934         initialize the handle.
9935         (mono_wait_handle_get_handle): New.
9936         * threadpool.c (mono_async_invoke): Use it.
9937         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
9938         Likewise.
9939         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
9940
9941 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
9942
9943         * marshal.c (emit_marshal): Call emit_marshal_variant and
9944         emit_marshal_com_interface when applicable.
9945         (emit_marshal_variant, emit_marshal_com_interface): Add
9946         methods for this case and remove if's from emit_marshal_object.
9947         
9948 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
9949
9950         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
9951
9952 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
9953
9954         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
9955         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
9956         and GlobalFree on Windows. Remove FIXME.
9957
9958 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9959
9960         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
9961         implementation for managed objects.
9962
9963 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
9964
9965         * object.c: implemented code to be used for checking
9966         that no reference field overlaps with non-references.
9967
9968 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9969
9970         * threadpool.c: fix queue code to be compatible with the
9971         moving GC.
9972
9973 2006-12-18  Miguel de Icaza  <miguel@novell.com>
9974
9975         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
9976         in structures by throwing ArgumentNullException.
9977
9978         (emit_marshal_safehandle): Also when they are null parameters.
9979
9980         (emit_marshal_safehandle): Add support for ref
9981         SafeHandles parameters
9982
9983 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9984
9985         * profiler.c: updated to use the mono-dl API instead of
9986         gmodule.
9987
9988 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9989
9990         * profiler.c: updated to use the mono-dl dynamic loading
9991         API instead of gmodule.
9992
9993 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9994
9995         * profiler.c: use readlink, older versions of glib don't have
9996         g_file_read_link ().
9997
9998 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
9999
10000         * profiler.c: try to detect the path to mono if libc fails to provide
10001         a useful name (bug #80286).
10002
10003 2006-12-16  Raja R Harinath  <rharinath@novell.com>
10004
10005         Fix #80242
10006         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
10007         instance, use the generic type definition instead.
10008         (ves_icall_Type_GetNestedTypes): Likewise.
10009         * class.c (mono_class_create_generic): Always set the
10010         nested_classes of a generic instance to NULL, even if the generic
10011         type definition has nested types.
10012
10013 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
10014
10015         * marshal.c (mono_string_from_bstr): Revert previous Windows change
10016         and fix on Linux.
10017         
10018 2006-12-15  Miguel de Icaza  <miguel@novell.com>
10019
10020         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
10021         my arguments were in the wrong order.   I also fixed the Windows
10022         version which seems to have had the same issue.
10023
10024         (mono_free_bstr): On Unix, this is g_free.
10025         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
10026         conversions (for the tests in corlib to pass).
10027
10028 2006-12-14  Miguel de Icaza  <miguel@novell.com>
10029
10030         * marshal.c (emit_ptr_to_object_conv): For now, ignore
10031         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
10032         exception if a ref SafeHandle in a struct has changed).
10033         
10034         (emit_struct_conv): Do not perform layout checks for classes
10035         derived from SafeHandle, as those are specially handled. 
10036
10037         (emit_object_to_ptr_conv): Add support for
10038         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
10039
10040         (emit_marshal_safehandle): Implement conversion of return values
10041         of safehandles (MARSHAL_ACTION_CONV_RESULT).
10042         
10043         * threads.c: WaitHandle now is compiled with two different handles
10044         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
10045         for 2.0.
10046         
10047         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
10048         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
10049         these routines to cope with both kinds of fields.
10050
10051 2006-12-12  Miguel de Icaza  <miguel@novell.com>
10052
10053         * metadata.c (mono_type_to_unmanaged): Handle the case where
10054         type->data.klass is a SafeHandle, and in that case, return the
10055         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
10056         MONO_MARSHAL_CONV_SAFEHANDLE. 
10057
10058 2006-12-11  Miguel de Icaza  <miguel@novell.com>
10059
10060         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
10061         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
10062         calling emit_marshal_object.
10063
10064         (emit_marshal_safehandle): Implement marshalling of
10065         SafeHandle parameters (no ref support yet).
10066
10067         (MarshalAction): Document the defines as I implement
10068         them for SafeHandle.
10069
10070         (emit_marshal_object): indentation police.
10071
10072         * class-internals.h: Define MonoSafeHandle.
10073         Add safehandle_class to MonoDefaults type.
10074
10075         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
10076         list of classes to check for fields. 
10077
10078         * domain.c (mono_init_internal): Add SafeHandle to the list of
10079         mono_defaults loaded.
10080
10081 2006-12-15  Raja R Harinath  <rharinath@novell.com>
10082
10083         Fix #80253
10084         * reflection.c (mono_reflection_bind_generic_parameters): If the
10085         generic type definition is a type builder, ensure that it is fully
10086         initialized before instantiating it.  Kill some dead code.
10087
10088 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
10089
10090         * object.c: clear the loader_error () before loading
10091         more metadata stuff (bug #80258).
10092
10093 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
10094
10095         * icall.c, icall-defs.h: type modifiers icalls for
10096         parameters and properties.
10097
10098 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
10099
10100         * object.c, icall.c: fixed warnings.
10101
10102 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10103
10104         * marshal.c: fixed a couple of leaks and coding style in a few places.
10105
10106 2006-12-08  Dick Porter  <dick@ximian.com>
10107
10108         * process.c: Cope with NULL ProcessStartInfo arguments on windows
10109         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
10110         80173.
10111
10112 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
10113
10114         * process.c: ProcessStartInfo may have only filename set and
10115         arguments can be NULL.
10116
10117 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
10118
10119         * icall.c: fix leak found by Robert Jordan.
10120
10121 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10122
10123         * marshal.c, marshal.h: generate managed method to access an element
10124         of a multi-dimensional array.
10125
10126 2006-11-30  Paolo Molaro (lupus@ximian.com)
10127
10128         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
10129
10130 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
10131
10132         * icall.c: back out GetFields () fix until the serialization code is
10133         fixed to not depend on the incorrect behaviour.
10134
10135 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
10136
10137         * profiler.c: provide defaults if none are set.
10138
10139 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
10140
10141         * Makefile.am, attrdefs.h: new public header file with
10142         constants for attributes for use by embedders.
10143
10144 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
10145
10146         * icall.c: GetFields () fix for bug #80064.
10147
10148 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
10149
10150         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
10151         removed long unused icalls.
10152
10153 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
10154   
10155         * marshal.c: 
10156                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
10157                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
10158                 can be generated without a delegate class.
10159                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
10160         
10161         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
10162
10163 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10164
10165         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
10166         #80069.
10167
10168 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10169
10170         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
10171         icall-def.h: added icalls needed by System.GC.
10172
10173 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
10174
10175         * loader.c: ensure the class in catch clauses is handled
10176         correctly for generics methods (fixes bug#79980).
10177
10178 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
10179
10180         * monitor.h, monitor.c: added mono_locks_dump () function
10181         to help debug deadlocks involving managed locks.
10182
10183 2006-11-13  Dick Porter  <dick@ximian.com>
10184
10185         * file-io.c (get_file_attributes): If the file is a symlink try
10186         and get the stat data for the target, but also add the
10187         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
10188         the specs for the windows symlink support, but will probably have
10189         to be reworked when I have test data from a vista machine.  Fixes
10190         bug 79887.
10191
10192 2006-11-13  Dick Porter  <dick@ximian.com>
10193
10194         * gc.c (mono_domain_finalize): 
10195         * marshal.c (mono_delegate_begin_invoke): 
10196         * threadpool.c (socket_io_init, mono_thread_pool_init)
10197         (mono_thread_pool_finish): 
10198         * monitor.c (mono_monitor_try_enter_internal): 
10199         * threads.c (mono_thread_resume, mono_thread_init)
10200         (mono_thread_suspend_all_other_threads)
10201         (mono_thread_execute_interruption): 
10202         * appdomain.c (mono_domain_unload): Check for NULL error returns
10203         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
10204         75733.
10205
10206 2006-11-11  Miguel de Icaza  <miguel@novell.com>
10207
10208         * process.c
10209         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
10210         Only close the handle if the value of the handle is not
10211         INVALID_HANDLE_VALUE.  This just makes the process a bit more
10212         robust.
10213
10214         Improvement for #75733, so that we do not run into this problem. 
10215
10216         
10217         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
10218         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
10219         internal variables.  Fixes #79462 
10220         
10221
10222 2006-11-09  Dick Porter  <dick@ximian.com>
10223
10224         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
10225         Use poll() not select().  Fixes bug 79397.
10226
10227 2006-11-09  Raja R Harinath  <rharinath@novell.com>
10228
10229         Fix #79872
10230         * assembly.c (mono_assembly_load_from_full): Check that the given
10231         image has an assembly manifest.
10232
10233 2006-11-09  Ankit Jain  <jankit@novell.com>
10234
10235         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
10236         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
10237         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
10238
10239 2006-11-07  Dick Porter  <dick@ximian.com>
10240
10241         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
10242         Put the old resolver behaviour back for pre-2.0 profiles.
10243
10244 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
10245
10246         * threadpool.c: precise GC and locking fixes.
10247
10248 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
10249
10250         * class.c: don't load types that have an explicit unaligned
10251         managed reference. Provide better info in the TypeLoad exception.
10252         Part of the fix for bug #79744.
10253         * object.c: use the correct check for class type load issues.
10254
10255 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10256
10257         * class.c: enforce alignment of fields with managed references
10258         even when Pack=1 is forced by the user (bug #77788).
10259
10260 2006-11-03  Dick Porter  <dick@ximian.com>
10261
10262         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
10263         If the address reverse lookup fails, return it as the hostname
10264         anyway.  Fixes bug 79721.
10265
10266 2006-11-03  Dick Porter  <dick@ximian.com>
10267
10268         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
10269         Fix build on Windows.
10270
10271 2006-11-02  Dick Porter  <dick@ximian.com>
10272
10273         * icall-def.h: 
10274         * object-internals.h: 
10275         * exception.c (mono_get_exception_thread_interrupted): 
10276         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
10277         Fixes bug 74525.
10278
10279         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
10280         Check for pending Thread.Interrupt.
10281
10282 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
10283         * loader.c: Fixed bug 79684.
10284
10285 2006-10-27  Dick Porter  <dick@ximian.com>
10286
10287         * file-io.c (get_file_attributes): Force symlinks to directories
10288         to be returned as a regular file.  Fixes bug 79733.
10289 2006-10-26  Dick Porter  <dick@ximian.com>
10290
10291         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
10292         CreateFile to open a directory then we need to set the
10293         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
10294
10295 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
10298         friends.
10299
10300 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
10301
10302         * sgengc.c: small cleanup of timer code.
10303
10304 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
10305
10306         * sgen-gc.c: fix some warnings and start adding support for
10307         complete object removal on domain unload.
10308
10309 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
10310
10311         * assembly.c: build_assembly_name should not consider a version
10312         number without build or revision number invalid. Fixes bug #79715.
10313
10314 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
10315
10316         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
10317         call kernel32 function OutputDebugString directly.
10318         
10319         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
10320         
10321 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
10322
10323         * reflection.c: small cleanup, using a function to insert a MonoString
10324         in the string heap.
10325
10326 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
10327
10328         * reflection.c: moving GC fixes.
10329
10330 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
10331
10332         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
10333         all the objects with finalizers belonging to an unloading appdomain.
10334
10335 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
10336
10337         * sgen-gc.c: added ability to allocate even when the nursery is fully
10338         pinned and fixed a couple of bugs.
10339
10340 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * threads.h: Revert the last change for now.
10343
10344         * threads.h (mono_thread_get_pending_exception): Rename this to
10345         mono_thread_get_undeniable_exception ().
10346
10347 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
10348
10349         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
10350         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
10351         when fname does not refer to valid assembly. This result in a more
10352         meaningful error message.
10353         * exception.c: added mono_get_exception_bad_image_format2 which 
10354         constructs a BadImageFormatException using the ctor taking a custom
10355         message and the file name. Passing in a NULL msg results in a default
10356         message.
10357         * exception.h: define mono_get_exception_bad_image_format2 function.
10358         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
10359         when file name pointed to an invalid IL image. Use 
10360         mono_get_exception_file_not_found2 to construct FileNotFoundException,
10361         as this results in a more meaningful error message.
10362
10363 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
10364
10365         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
10366         #79465.
10367
10368 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * metadata.c (mono_type_size): Change the align parameter to guint32 for
10371         consistency with the other _size functions.
10372         (mono_type_stack_size): Ditto.
10373
10374         * class.c object.c icall.c: Fix warnings caused by the above change.
10375
10376         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
10377
10378         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
10379
10380         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
10381
10382 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
10383
10384         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
10385         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
10386         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
10387         threadpool.h, threads-types.h: mark more internal functions.
10388
10389 2006-10-11  Dick Porter  <dick@ximian.com>
10390
10391         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
10392         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
10393         reproduce the bug even before applying the fix.)
10394
10395 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
10396
10397         * reflection.c: allow retrieving attributes for arguments in generic
10398         methods (bug #79241).
10399
10400 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
10401
10402         * debug-mono-symfile.c: properly check fopen () result (found by
10403         coverity).
10404
10405 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
10406
10407         * reflection.c: make error message clearer and fixed two
10408         issuelets found by Coverity.
10409
10410 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
10413
10414 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
10415
10416         * object-internals.h, gc-internal.h, profiler-private.h:
10417         mark internal functions.
10418
10419 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
10420
10421         * reflection.c: put data in the text section.
10422         * icall.c: recognize more types in type_from_typename ().
10423         * process.c, marshal.c: added some GC FIXMEs.
10424
10425 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10426
10427         * loader.c: check for NULL before initializing.
10428
10429 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * gc.c (finalizer_thread): Use a non-alertable wait here.
10432
10433         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
10434         until the correct solution is found.
10435
10436 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * reflection.c (mono_module_get_object): Avoid an assert when operating on
10439         modules with no metadata. Fixes #79596.
10440
10441         * image.c (load_metadata_ptrs): Put back the error message when
10442         the #- heap is encountered since the support is not complete yet.
10443
10444 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
10445
10446         * gc.c: do not allow the user to SuppressFinalize () a
10447         delegate because it would leak the trampoline if present.
10448
10449 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
10450
10451         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
10452         PropertyPtr table.
10453
10454 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
10457
10458         * metadata.c (mono_metadata_get_param_attrs): Ditto.
10459
10460         * row-indexes.h: Add definitions for *Ptr tables.
10461
10462         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
10463
10464         * metadata.c (mono_metadata_translate_token_index): New helper function to
10465         translate table indexes used in uncompressed metadata.
10466         (mono_metadata_decode_table_row): Ditto.
10467         (mono_metadata_decode_table_row_col): Ditto.
10468
10469         * metadata.c: Add table schema for *Ptr tables.
10470
10471         * class.c loader.c: Use the new helper function to access the affected metadata
10472         tables.
10473         
10474         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
10475         #38532.
10476         
10477 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
10478
10479         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
10480         sequences which can be unbounded in size. Fixes #79583.
10481
10482 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
10485         static initialization.
10486
10487         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
10488
10489         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
10490
10491         * domain.c (mono_domain_free): Free up type_init_exception_hash.
10492
10493         * object.c (mono_runtime_class_init): Implement correct semantics when a static
10494         ctor fails, i.e. throw the same exception on subsequent accesses.
10495         
10496 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
10497
10498         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
10499         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
10500         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
10501         Handle marshalling of interfaces and VARIANTs contained in structs.
10502         
10503         Code is contributed under MIT/X11 license.
10504         
10505 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
10506
10507         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
10508         
10509         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
10510         mempool.
10511
10512 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10513
10514         * console-io.c: ignore previous SIGINT handler.
10515
10516 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
10517
10518         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
10519         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
10520         #79460, #79461, #79485.
10521
10522         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
10523
10524         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
10525         #79217.
10526
10527 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
10530         could be generated from it.
10531
10532 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
10533
10534         * rand.c: fix read loop to correctly handle EINTR.
10535
10536 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
10537
10538         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
10539         internal calls are defined to keep methods closer to the declaring
10540         type and allow a significant reduction in runtime relocations and
10541         memory usage.
10542
10543 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
10544
10545         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
10546         exception message to have FileNotFoundException use the default
10547         assembly load error message. Fixes bug #79426.
10548         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
10549
10550 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10551
10552         * threadpool.c: (start_thread_or_queue) use the root domain when
10553         creating the thread instead of the async object one.
10554
10555 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
10556
10557         * class.c, object.c, class-internals.h, reflection.c:
10558         for arrays, store element_size inside MonoClass (speedup
10559         for array object creation).
10560
10561 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
10562
10563         * icall.c: fixed CodeBase to use the file name and not the module
10564         name (bug #79365).
10565
10566 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
10567
10568         * mono-debug.c, mono-debug.h: export find_method as
10569         mono_debug_find_method ().
10570
10571 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
10572
10573         * debug-helpers.c, class-internals.h: added a few functions useful
10574         when debugging under gdb.
10575
10576 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10577
10578         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
10579         characters that need special handling.
10580
10581 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
10582
10583         * mono-config.c: make the os/cpu specification more flexible,
10584         allowing lists and negation.
10585
10586 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
10587
10588         * marshal.c: COM Interop fixes. Handle case where method->klass.
10589         is interface. Handle BSTR/MonoString when null. Use CDECL as 
10590         calling convention on non-windows platforms. This is for
10591         compatibility with XPCOM and MainWin COM.
10592         
10593         Code is contributed under MIT/X11 license.
10594         
10595
10596 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
10599         correctly. Fixes #79217.
10600
10601         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
10602
10603 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
10604
10605         * mono-config.c: allow both an os and cpu attribute for dllmap
10606         and dllentry elemnets to enable a single config file to be used
10607         for multiple architectures.
10608
10609 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
10610
10611         * loader.c: MonoLoaderError was cleared too soon on load failure.
10612         Fixes bug #79424.
10613
10614 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
10615
10616         * icall.c: use the defining class vtable when accessing a
10617         static field, not a pobblibly derived class.
10618
10619 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
10620
10621         * icall.c string-icalls.c: Remove references to unicode.h.
10622
10623         * unicode.h unicode.c Makefile.am: Remove these unused source files.
10624
10625         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
10626
10627         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
10628         indicating the image where custom marshaller types should be looked up.
10629         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
10630         custom marshallers, instead of corlib. Fixes #79425.
10631
10632 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
10635
10636 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
10637
10638         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
10639         Implement Environment.ProcessorCount.
10640         
10641         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
10642         Implement Environment.ProcessorCount.
10643         
10644         * icall.c: 
10645         Add Environment.ProcessorCount icall.
10646         
10647         Patch by Jason McFall.
10648
10649 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10650
10651         * assembly.c: don't append .exe/.dll when the filename already contains
10652         one of those extensions.
10653
10654 2006-09-12  Martin Baulig  <martin@ximian.com>
10655
10656         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
10657         to array interfaces.
10658
10659 2006-09-11  Martin Baulig  <martin@ximian.com>
10660
10661         * reflection.c (mono_image_build_metadata): Create the
10662         MethodImpl's after emitting all types and methods, so we don't
10663         need another fixup pass for them.
10664
10665 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
10666
10667         * class.c (mono_class_from_name_case): Fix regression introduced by the last
10668         change.
10669
10670 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
10671
10672         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
10673         unload.
10674
10675 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
10678         args is not set. Fixes #78926.
10679
10680 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
10683
10684         * image.c (load_class_names): Move this to class.c, and rename it to 
10685         'mono_image_init_name_cache'.
10686         (load_modules): Fix a warning.
10687
10688         * class.c icall.c image.c: Initialize image->name_cache lazily.
10689
10690         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
10691         on its name using information in the AOT file.
10692
10693         * class.c (mono_class_from_name): Use the new hook function.
10694
10695 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * reflection.c (mono_param_get_objects): Handle enum default parameter values
10698         correctly.
10699
10700         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
10701         Fixes #79289.
10702         
10703 2006-09-06  Martin Baulig  <martin@ximian.com>
10704
10705         * icall.c (mono_lookup_internal_call): Small fix.
10706
10707 2006-09-05  Raja R Harinath  <rharinath@novell.com>
10708
10709         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
10710         double g_free.
10711
10712 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
10713
10714         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
10715         when --debug is specified.
10716
10717 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * class.c (setup_generic_array_ifaces): Fix a warning.
10720
10721 2006-09-04  Miguel de Icaza  <miguel@novell.com>
10722
10723         * Temporarily remove the patch to assemly.c that checks the
10724         assembly versions as it breaks our gacutil.
10725
10726 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
10727
10728         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
10729
10730         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
10731         a net 1.0 runtime.
10732
10733         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
10734         created using the default ctor. Fixes #79152.
10735         (mono_string_builder_to_utf16): Ditto.
10736
10737 2006-09-01  Martin Baulig  <martin@ximian.com>
10738
10739         Fix handling of the generic array interfaces.
10740
10741         * class-internals.h
10742         (MonoDefaults): Removed `generic_array_class' and added
10743         `generic_ilist' class.
10744
10745         * class.c
10746         (mono_bounded_array_class_get): Add the new generic array interfaces.
10747         (setup_generic_array_ifaces): New static method; create vtable
10748         entries for each method in the generic array interfaces.
10749
10750         * metadata.c
10751         (select_container): Allow "parent-less" generic methods.
10752
10753         * marshal.c
10754         (mono_marshal_get_generic_array_helper): New public method.
10755
10756         * icall.c
10757         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
10758         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
10759         moved the interncall into System.Array.
10760
10761 2006-09-01  Raja R Harinath  <rharinath@novell.com>
10762
10763         A few more cases of avoiding work on types with ->byref set.
10764         Has the real fix for #79238
10765         * icall.c (is_generic_parameter): New helper.
10766         (ves_icall_Type_GetGenericParameterPosition): Use it.
10767         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
10768         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
10769         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
10770         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
10771         reference types.
10772         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
10773         reference types.
10774         (ves_icall_Type_get_IsGenericInstance): Likewise.
10775         (ves_icall_Type_get_IsGenericType): Likewise.
10776
10777 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
10780         class if possible.
10781
10782         * mempool.h (mono_mempool_get_allocated): New helper function.
10783
10784         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
10785         change.
10786
10787         * mempool.c: Fix warnings and the calculation of stats.
10788
10789         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
10790
10791         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
10792
10793         * loader.c (mono_get_method_from_token): Update method_count stat.
10794
10795         * class-internals.h (MonoStats): Add some stats.
10796
10797 2006-08-31 Robert Jordan  <robertj@gmx.net>
10798
10799         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
10800         with managed variants.
10801         All code is contributed under the MIT/X11 license.
10802         
10803 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
10804
10805         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
10806         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
10807
10808         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
10809
10810         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
10811         with cycles in classes.
10812
10813         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
10814
10815         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
10816         missing a [MarshalAs] directive. Fixes #79203.
10817
10818         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
10819         klass->marshal_info. Fixes #79217.
10820
10821 2006-08-30  Martin Baulig  <martin@ximian.com>
10822
10823         Committing a patch from Joachim Ante <joe@otee.dk>:
10824         Add support for binary data symbol stores.
10825
10826         * debug-mono-symfile.c
10827         (mono_debug_open_mono_symbol_file): Renamed into
10828         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
10829         arguments.
10830
10831         * mono-debug.c
10832         (mono_debug_open_image): Added `raw_contents' and `size' args.
10833         (mono_debug_init_2_memory): New public function.
10834
10835 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
10836
10837         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
10838
10839 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10840
10841         * appdomain.c: implement support for ShadowCopyFiles.
10842
10843 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
10844
10845         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
10846         when value is NULL (and should remove CID #51).
10847
10848 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10849
10850         * image.c: moved 2 functions to ../utils.
10851
10852 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
10853
10854         * gc.c: cope with the target object of a GC handle being NULL
10855         (bug #78877).
10856
10857 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
10858
10859         * class.c: recursively check parent's explicit implementations
10860         of interface methods (fixes bug #79125).
10861
10862 2006-08-19  Miguel de Icaza  <miguel@novell.com>
10863
10864         * filewatcher.c: Avoid warnings when building, do not redefine
10865         constants that are defined.
10866
10867         Remove warnings.
10868
10869 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10870
10871         * image.c: don't fail when the link points to an absolute path.
10872
10873 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
10874
10875         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
10876         Fix CID #3.
10877
10878 2006-08-17  Miguel de Icaza  <miguel@novell.com>
10879
10880         * image.c (full_path): A new method used to obtain the actual path
10881         of an assembly even in the presence of symbolic links.  
10882
10883         This is necessary for the case where we are running a binary that
10884         has been GACed, but we are using the "published" path name
10885         ($prefix/mono/1.0/blah.exe) which happens to point to the real
10886         file in the GAC.
10887
10888         This was the source of the failure for the `xsp' command with the
10889         recent AppDomain changes, as far as the runtime was concerned,
10890         there were two different assemblies: $prefix/mono/1.0/blah.exe and
10891         $prefix/mono/gac/blah/version/blah.exe.
10892
10893         (do_mono_image_open): use full path
10894
10895 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
10898
10899 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
10900
10901         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
10902         domain_id is supplied. Fix CID #241 and corlib's unit tests.
10903
10904 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10905
10906         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
10907         small structures. Fixes #78990.
10908
10909 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
10912
10913         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
10914
10915 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10916
10917         * appdomain.c:
10918         * marshal.c: don't load all the assemblies from a domain into newly
10919         created ones. The new domains might have different rules and load
10920         assemblies from different locations. Fixes bug #76757.
10921
10922         Patch by Lluis. Conflicts resolved by Brian Crowell.
10923
10924 2006-08-16  Alp Toker  <alp@atoker.com>
10925
10926         * socket-io.c: First half of the fix for #79084.
10927         Set sa_size to the length of the content, not that of the struct.
10928         Don't add NULL suffix to the content, this should be done in
10929         managed code if needed.
10930
10931 2006-08-14  Raja R Harinath  <rharinath@novell.com>
10932
10933         Fix part of #79012
10934         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
10935         mono_metadata_parse_type returns NULL.
10936
10937 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
10938
10939         * normalization-tables.h : new file for string normalization data.
10940         * locales.c, locales.h, icall.c :
10941           added load_normalization_resource() for string normalization,
10942           and icall as well.
10943         * Makefile.am : added normalization-tables.h to the sources.
10944
10945 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
10946
10947         * marshal.c: Add more helper functions to reduce code duplication and use them
10948         everywhere.
10949
10950 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
10951
10952         * marshal.c: Fix non-x86 stdcall warnings.
10953         
10954         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
10955         them everywhere.
10956
10957 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
10958
10959         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
10960         type check on multi-dimensional arrays. Fixes #79000.
10961
10962 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
10963
10964         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
10965         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
10966         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
10967         * class-internals.h: add is_com_object to class structure.
10968         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
10969         null checks to COM object marshalling. Fix .ctor call on RCW.
10970         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
10971         
10972         All code is contributed under the MIT/X11 license.
10973
10974 2006-08-09  Dick Porter  <dick@ximian.com>
10975
10976         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
10977         racing mono_monitor_allocator_lock() somewhere, so don't delete
10978         the critical section for now.  Found by running and exiting
10979         monodevelop.
10980
10981 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
10982
10983         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
10984         (ves_icall_System_ComObject_FindInterface): Ditto.
10985         (ves_icall_System_ComObject_CacheInterface): Ditto.
10986
10987         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
10988         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
10989
10990 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10991
10992         * threadpool.c: treat pipes from process asynchronous reads as sockets
10993         when reading from them, so we get select/poll or epoll to wait for
10994         data.
10995
10996 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
10997
10998         * loader.c: Fix a typo (CID #233) in the null check.
10999
11000 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
11003         Hopefully fixes #78949.
11004         
11005         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
11006         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
11007         bytes. Fixes #78972.
11008
11009 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11010
11011         * filewatcher.c: we need to set errno here.
11012
11013 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11014
11015         * filewatcher.c: let Win32Exception get the error value.
11016
11017 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11018
11019         * filewatcher.c: translate errno into win32 errors for Win32Exception
11020         to know what happened.
11021
11022 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * threadpool.c: Fix more warnings.
11025
11026         * assembly.c (search_loaded): Fix warnings.
11027
11028         * threadpool.c (mono_thread_pool_finish): Fix warnings.
11029         (mono_async_invoke): Ditto.
11030
11031 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
11032
11033         * object.c (mono_remote_class_vtable): Need to create proxy vtable
11034         entries for __ComObject type in addition to ComImport types.
11035         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
11036         about hash table.
11037         
11038         All code is contributed under the MIT/X11 license.
11039
11040 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
11041
11042         * image.c: avoid tentative loading of modulerefs that contain
11043         no metadata (P/Invoke library names).
11044
11045 2006-07-28  Dick Porter  <dick@ximian.com>
11046
11047         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
11048         mono_loader_lock() somewhere, so don't delete the critical section
11049         for now.  Found by running and exiting monodevelop.
11050
11051 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11052
11053         * filewatcher.c: define the inotify syscalls when we're building on
11054         linux and have sys/syscall.h. The build system might not have support
11055         for inotify but the target system might have it.
11056
11057 2006-07-26  Miguel de Icaza  <miguel@novell.com>
11058
11059         * domain.c: Documentation updates.
11060
11061         * loader.c (mono_free_method): Do not release the method
11062         information if we are being profiled, as profilers will use this
11063         information at shut down to present some data to the user.
11064
11065         This is needed so that the profiler does not crash, as the
11066         profiler tends to keep MonoMethods around, and they might become
11067         invalid if we free these.
11068
11069         (mono_get_method_constrained): Return the original CIL stream
11070         method as well, so verification can be performed against it.
11071
11072 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11073
11074         * filewatcher.[ch]: support for inotify file system watcher.
11075         * icall.c: add new internal calls for the inotify file system watcher.
11076
11077 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11078
11079         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
11080         #78888.
11081
11082 2006-07-20  Dick Porter  <dick@ximian.com>
11083
11084         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
11085         warning.
11086
11087 2006-07-20  Dick Porter  <dick@ximian.com>
11088
11089         * threads.c (start_wrapper): Do the thread cleanup while we still
11090         hold a reference to its object.  Fixes bug 78123.
11091
11092 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
11093
11094         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
11095         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
11096           "managed-to-managed".
11097         * icall.c: Redirect string constructors that take sbyte* to
11098           ves_icall_System_String_ctor_RedirectToCreateString.
11099         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
11100           to CreateString () methods with matching signature.
11101         * reflection.c: Use original security informations for
11102           MONO_WRAPPER_MANAGED_TO_MANAGED.
11103         * security-manager.c: Use original security informations for
11104           MONO_WRAPPER_MANAGED_TO_MANAGED.
11105         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
11106           that is a placeholder and only its address should be used.
11107         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
11108           that is a placeholder and only its address should be used.
11109
11110 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
11111
11112         Begin implementing COM Interop.
11113         * appdomain.c: Increment corlib version.
11114         * class.c: Set ComImport classes' parent to __ComObject.
11115         * loader.c: Mark cominterop methods as such.
11116         * domain.c: Add __ComObject class to MonoDefaults structure.
11117         * image.c: Add 2 hashtables to the image for COM Interop related methods
11118         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
11119         using the mempool allocator
11120         
11121         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
11122         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
11123         declaration for mono_metadata_type_dup_mp.
11124         
11125         * debug-helpers.c: Added strings for two additional wrapper types
11126         * object.c: Create proxy objects for ComImport classes
11127         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
11128         and added __ComObject class to MonoDefaults structure.
11129         
11130         * object-internals.h: Finish MonoRealProxy definition, and add definition of
11131         MonoComInteropProxy and MonoComObject.
11132         
11133         * marshal.c: Added support for COM Interop
11134         (signature_cominterop): Converts managed signature to corresponding
11135         unmanaged COM signature.
11136         (cominterop_get_function_pointer): gets unmanaged function pointer via
11137         COM object vtable
11138         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
11139         (cominterop_get_method_interface): returns interface type that method is defined on
11140         (mono_mb_emit_cominterop_call): emits native call to function pointer
11141         gotten from vtable
11142         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
11143         that matches signature of unmanaged function.
11144         (cominterop_get_native_wrapper): wrapper around adjusted method call.
11145         (cominterop_get_invoke): forwards call from proxy to __ComObject
11146         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
11147         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
11148         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
11149         
11150         * marshal.h: Added Marshal icall declarations.
11151         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
11152         so we can access them in finalizer
11153         
11154 2006-07-14  Dick Porter  <dick@ximian.com>
11155
11156         * object.c (mono_type_initialization_cleanup): Fix a race
11157         condition by temporarily commenting out the critical section
11158         deletion.
11159
11160 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * reflection.c (create_custom_attr): Fix some warnings.
11163         (create_custom_attr_data): Ditto.
11164         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
11165         types. Fixes #78855.
11166
11167 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
11168
11169         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
11170
11171         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
11172
11173 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
11174
11175         * reflection.c (resolve_object): Add support for DynamicMethod.
11176
11177         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
11178         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
11179
11180 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
11181
11182         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
11183         don't leak GPtrArray's pdata has we have no use (nor free) for it.
11184
11185 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
11186
11187         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
11188         Fixes #77888.
11189
11190 2006-06-30  Raja R Harinath  <rharinath@novell.com>
11191
11192         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
11193         slightly: remove a shadow local variable.
11194
11195 2006-06-29  Raja R Harinath  <rharinath@novell.com>
11196
11197         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
11198         definition that introduces the virtual function slot.
11199         Also fix Coverity #105.
11200
11201 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
11204         for dynamic assemblies. Fixes #78724.
11205
11206 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
11207
11208         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
11209         Fixes #78722.
11210
11211 2006-06-21  Martin Baulig  <martin@ximian.com>
11212
11213         * reflection.c
11214         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
11215         fixes #76484.
11216
11217 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
11220
11221 2006-06-20  Raja R Harinath  <rharinath@novell.com>
11222
11223         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
11224         nor TYPEREFs.
11225         * class.c (mono_class_create_from_typespec): Add 'context' argument.
11226         Inflate result if necessary.
11227         (mono_class_get_full): Remove old version.  Rename from
11228         'mono_class_get' and add 'context' argument.  Pass it to
11229         ..._create_from_typespec.
11230         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
11231         (mono_ldtoken): Revert change below.
11232
11233 2006-06-20  Martin Baulig  <martin@ximian.com>
11234
11235         * class.c (mono_ldtoken): Don't pass the generic context to
11236         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
11237
11238 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
11241         and later freeing it. Fixes #78638.
11242
11243 2006-06-15  Miguel de Icaza  <miguel@novell.com>
11244
11245         * icall.c (mono_class_get_throw): Revert over-zealous error
11246         throwing, the caller for mono_class_get_throw will cope with
11247         errors when classes are not properly initialized already.
11248
11249         The code still copes with loader exceptions though.
11250
11251         Fixes the regression in reftype1 and reftype3 from the CAS tests.
11252         
11253 2006-06-14  Miguel de Icaza  <miguel@novell.com>
11254
11255         Fixes the `make run1' version of RuntimeAbort (to be commited,
11256         source is in Bugzilla).
11257         
11258         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
11259         FALSE on class loading failure instead of returning true.
11260
11261         * class.c (mono_class_create_from_typedef): It is possible for
11262         mono_metadata_interfaces_from_typedef_full to fail if a class is
11263         not found, cope with this.
11264         
11265
11266 2006-06-14  Dick Porter  <dick@ximian.com>
11267
11268         * socket-io.c: 
11269         * process.c: Fix a bunch of signed/unsigned warnings from gcc
11270         4.1.1
11271
11272 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
11273
11274         * culture-info-table.h : oops, forgot to make it nsync with r61548.
11275
11276 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11277
11278         * icall.c: Another fix for building mono in Visual Studio.
11279
11280 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
11281
11282         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
11283         
11284 2006-06-09  Martin Baulig  <martin@ximian.com>
11285
11286         * debug-mono-symfile.c: Put this back and really fix it this
11287         time. Sorry for all the trouble.
11288
11289 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
11290
11291         * icall.c (mono_class_get_throw): Fix a warning.
11292         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
11293         ReflectionTypeLoadException if needed. Fixes #78606.
11294
11295         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
11296         (mono_class_init): Ditto.
11297
11298         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
11299         ref_only exceptions.
11300         (mono_loader_clear_error): Make this work even if there is no error.
11301
11302 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
11303
11304         * object-internals.h marshal.c marshal.h icall.c: Implement method 
11305         Marshal.GetComSlotForMethodInfo using internal call.
11306
11307 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
11308
11309         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
11310         a function for signalling it.
11311
11312         * class.c (mono_class_from_typeref): Use the new kind of loader error when
11313         a referenced assembly is not found.
11314
11315         * loader.c (mono_loader_error_prepare_exception): Add support for 
11316         LOADER_ERROR_ASSEMBLY. Fix formatting.
11317
11318 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
11319
11320         * domain.c appdomain.c class-internals.h marshal.c: Add support 
11321         for VARIANT marshalling on windows and increment corlib version
11322         since Variant struct was added.
11323
11324 2006-06-03  Miguel de Icaza  <miguel@novell.com>
11325
11326         * debug-mono-symfile.c: Revert Martin's previous patch which broke
11327         stack trace line information:
11328
11329         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
11330         (Martin) when looking up B which is between A and C, return A not C.
11331
11332         Bug is #78573.
11333
11334         Thanks to Alexander Olk for tracking this down.
11335
11336 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
11337
11338         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
11339         
11340         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
11341         avoid clobbering its value.
11342         (mono_string_to_lpstr): Fix a warning on windows.
11343
11344 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
11345
11346         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
11347
11348         * reflection.c loader.c: Removed references to 'dummy' flag.
11349
11350         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
11351
11352         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
11353         it gets GC tracking.
11354
11355         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
11356         GC tracking.
11357         
11358         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
11359
11360         * marshal.c threadpool.c: Update callers of mono_async_result_new.
11361
11362         * appdomain.c: Bump corlib version.
11363
11364 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
11365
11366         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
11367         CEE_STIND_REF when working with object references.
11368
11369 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
11372         Fixes #78539.
11373
11374 2006-05-30  Miguel de Icaza  <miguel@novell.com>
11375
11376         * loader.c (method_from_memberref): Fix argument value for
11377         mono_loader_set_error_method_load (I was passing the MonoClass
11378         instead of the class name char *).
11379
11380 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
11381
11382         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
11383         CEE_STIND_REF when working with object references.
11384
11385 2006-05-30  Martin Baulig  <martin@ximian.com>
11386
11387         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
11388         mono_method_full_name() change and replace the ':' with a '.'
11389         here.
11390
11391 2006-05-30  Martin Baulig  <martin@ximian.com>
11392
11393         * debug-mono-symfile.c
11394         (mono_debug_symfile_lookup_location): Fix the algorithm:
11395         when looking up B which is between A and C, return A not C.
11396
11397 2006-05-29  Martin Baulig  <martin@ximian.com>
11398
11399         * mono-debug.h
11400         (MonoDebugMethodInfo): Make the typedef public.
11401         (MonoDebugSourceLocation): New public struct.
11402
11403         * mono-debug.c
11404         (mono_debug_source_location_from_address): Removed.
11405         (mono_debug_source_location_from_il_offset): Removed.
11406         (mono_debug_il_offset_from_address): Removed.
11407         (mono_debug_address_from_il_offset): Removed.
11408         (mono_debug_lookup_method): New public function.
11409         (mono_debug_lookup_source_location): New public function; replaces
11410         the old mono_debug_source_location_from_*() functions; see the
11411         inline documentation.
11412         (mono_debug_free_source_location): New public function.
11413         (mono_debug_print_stack_frame): New public function; see the
11414         inline documentation.
11415
11416         * debug-mono-symfile.c
11417         (mono_debug_find_source_location): Renamed into
11418         mono_debug_symfile_lookup_location(); only take a
11419         `MonoDebugMethodInfo *' and an `offset' argument; added inline
11420         documentation.
11421         (mono_debug_find_method): Renamed into
11422         mono_debug_symfile_lookup_method().
11423
11424 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * assembly.c (mono_assembly_open_full): Dont overwrite the status
11427         returned by mono_image_open_full ().
11428
11429         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
11430         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
11431         #78517.
11432
11433         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
11434         #78518.
11435
11436 2006-05-27  Miguel de Icaza  <miguel@novell.com>
11437
11438         * class.c (mono_class_from_typeref): handle missing images
11439         earlier, deals with bug #78418.   Refactor code; 
11440
11441         Fix a warning introduced in my previous commit (some stale code
11442         from before I revisited my patch).
11443
11444         * class.c (mono_class_create_from_typedef): On failure, remove the
11445         class from the MonoImage->class_cache as the class is not
11446         initialized;   Fixes the leak pointed out by Paolo.
11447
11448 2006-05-25  Dick Porter  <dick@ximian.com>
11449
11450         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
11451         DeleteCriticalSections until I figure out which one may still be
11452         sometimes locked when mono_thread_cleanup is called.
11453
11454 2006-05-24  Dick Porter  <dick@ximian.com>
11455
11456         * threads.c (mono_thread_cleanup): Move the threading cleanup out
11457         of mono_thread_manage and back into its own function, so it can be
11458         called after the finalizer thread has finished.
11459
11460         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
11461
11462 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
11465         Fixes #78495.
11466
11467         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
11468         with non-blittable elements.
11469         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
11470
11471 2006-05-24  Martin Baulig  <martin@ximian.com>
11472
11473         * mono-debug-debugger.h (MonoDebuggerEvent): Added
11474         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
11475
11476         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
11477         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
11478         `mono_debugger_event_handler' to NULL.
11479
11480 2006-05-24  Martin Baulig  <martin@ximian.com>
11481
11482         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
11483
11484 2006-05-24  Martin Baulig  <martin@ximian.com>
11485
11486         * mono-debug-debugger.h
11487         (mono_debugger_create_notification_function): Added
11488         `MonoCodeManager *' argument.
11489
11490 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
11491
11492         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
11493
11494 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
11495
11496         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
11497         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
11498         implementation.
11499
11500 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
11501
11502         * icall.c: precise GC support: objects can't be stored in unmanaged
11503         memory anymore, even if they are kept alive by other references: since
11504         they can move the GC needs to be able to always find them.
11505
11506 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
11507
11508         * object.c: precise GC support for static fields. Support
11509         for moving GCs: write barriers and pinned allocation for interned
11510         strings.
11511
11512 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
11513
11514         * domain.c, domain-internals.h: precise GC support for the MonoDomain
11515         structure.
11516
11517 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
11518
11519         * class.c, gc.c: sgen and precise GC updates.
11520
11521 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
11522
11523         * marshal.h, marshal.c: added write barrier wrapper and precise type
11524         fixes.
11525
11526 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
11527
11528         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
11529         support.
11530
11531 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
11532
11533         * reflection.c: precise and sgen GC updates.
11534
11535 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
11536
11537         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
11538
11539 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
11540
11541         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
11542
11543 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
11546         MONO_TYPE_OBJECT. Fixes #78462.
11547
11548 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
11551         and blittable types.
11552
11553 2006-05-17  Miguel de Icaza  <miguel@novell.com>
11554
11555         * class.c (mono_class_get_exception_for_failure): Implement parts
11556         of a TODO: if the loader error is set (instead of the class
11557         error), we return a Loader exception that can be properly thrown
11558         elsewhere.
11559
11560         This was exposed by some Winforms 2.0 code that I tried to run
11561         (Atsushi pointed me to it).
11562
11563 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
11566         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
11567         
11568         * marshal.c (emit_marshal_vtype): Add limited support for 
11569         UnmanagedType.LPStruct. Fixes #78427.
11570
11571         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
11572         Applied a patch from kangaroo to fix #77523.
11573
11574 2006-05-17  Martin Baulig  <martin@ximian.com>
11575
11576         * threads.c
11577         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
11578         (debugger_thread_created): Removed.
11579         (debugger_thread_exited): Removed.
11580
11581 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
11582
11583         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11584
11585         * object-internals.h (MonoReflectionResource): Sync with managed version.
11586
11587 2006-05-12  Wade Berrier <wberrier@novell.com>
11588
11589         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
11590
11591 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
11594         functions try to allocate from the image mempool.
11595
11596 2006-05-12  Dick Porter  <dick@ximian.com>
11597
11598         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
11599
11600 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
11601
11602         * object.c: The FieldGetter and FieldSetter methods require the full
11603         name of the class, not only the name. Fixes bug #78277.
11604
11605 2006-05-11  Miguel de Icaza  <miguel@novell.com>
11606
11607         * loader.c (method_from_memberref): Do not pass the NULL klass to
11608         mono_loader_set_error_() methods.  Pass the non-NULL value
11609         (class). 
11610
11611 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
11612
11613         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
11614         (mono_assembly_close): Null out assembly->image->references after freeing it.
11615
11616         * image.c (mono_image_close): Free image->references.
11617         
11618         * reflection.c (mono_image_basic_init): Fix a small memory leak.
11619
11620 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
11621
11622         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
11623         before checking if it's NULL (g_assert).
11624
11625 2006-05-10  Martin Baulig  <martin@ximian.com>
11626
11627         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
11628         I thought I already killed that two months ago, but now it somehow reappeared.
11629
11630 2006-05-10  Martin Baulig  <martin@ximian.com>
11631
11632         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
11633
11634 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
11635
11636         * reflection.c: Allocate memory for dynamically created methods in the image
11637         mempools.
11638
11639 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
11640
11641         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
11642         don't use the ad pointer before checking if it's NULL (g_assert).
11643
11644 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
11645
11646         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
11647         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
11648
11649         * marshal.c: Allocate all signatures from mempools.
11650
11651         * marshal.c: Allocate some more signatures from mempools.
11652
11653 2006-05-09  Miguel de Icaza  <miguel@novell.com>
11654
11655         * object.c (mono_load_remote_field): The code used to provide a
11656         temporary variable for returning results if the user did not
11657         provide a result pointer.  But our temporary variable was allocted
11658         on the satck.
11659
11660         Fix calling code to always pass a result area.   Coverity ID 103.
11661
11662 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
11663
11664         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
11665         value, not the old. Fixes #78312.
11666         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
11667
11668         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
11669         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
11670         per-image cache.
11671
11672         * assembly.c (mono_assembly_close): Free image->references.
11673
11674         * assembly.c (mono_assembly_names_equal): Fix a warning.
11675         (mono_assemblies_cleanup): Cleanup more global data.
11676
11677         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
11678
11679         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
11680         ptr_cache and image->modules.
11681
11682         * image.c (mono_image_init): Allocate array_cache lazily.
11683         
11684 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11685
11686         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
11687         behavior was changed recently and has bad side effects.
11688
11689 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
11690
11691         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
11692         
11693         * assembly.c (mono_assembly_close): Remove a debug printf.
11694
11695         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
11696
11697         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
11698         to also allow for temporary references between mono_image_open ()/close ().
11699
11700         * domain.c (get_runtimes_from_exe): Add a FIXME.        
11701
11702 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * marshal.c: Fix support for dynamic methods.
11705
11706         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
11707
11708         * marshal.c (mono_marshal_cleanup): New cleanup function.
11709
11710         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
11711         image mempools.
11712
11713         * class.c (mono_class_init): Fix leaking class->nested_classes.
11714
11715         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
11716
11717         * image.c (mono_image_init): Initialize the new cashes.
11718
11719         * image.c (mono_image_close): Destroy the new cashes.
11720
11721         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
11722
11723         * mempool.c (mono_mempool_strdup): New helper function.
11724
11725         * class-internals.h: Add prototype for mono_loader_unlock ().
11726
11727         * domain.c (mono_jit_info_table_find): Fix a warning.
11728         (mono_debugger_check_runtime_version): Ditto.
11729
11730         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
11731         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
11732         functions to these modules.
11733
11734         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
11735         metadata modules.
11736         
11737         * marshal.c (mono_free_bstr): Fix a warning.
11738
11739         * assembly.c (mono_assembly_open_full): Fix another small leak.
11740
11741         * object.c: Fix some unload leaks in the remoting code.
11742
11743         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
11744         function.
11745
11746         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
11747
11748         * reflection.c: Fix some unload leaks in dynamic assemblies.
11749
11750 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
11751
11752         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
11753         * marshal.h: Add BSTR support on Win32
11754         * icall.c: Add BSTR icalls
11755         * metadata.h: Add BSTR enums
11756
11757 2006-04-28  Miguel de Icaza  <miguel@novell.com>
11758
11759         Work to catch the crash from #76795 and turn it into an
11760         exception.   As I stubbed out pieces of the VisualBasic support,
11761         I found a number of places where the code was failing and I added
11762         checks to those places. 
11763         
11764         * metadata.c (do_mono_metadata_parse_generic_class): Make this
11765         function return a status code.  If we fail to parse the signature
11766         from mono_metadata_parse_generic_inst, return FALSE.
11767
11768         * loader.c (mono_get_method_from_token): If we fail to load the
11769         method (mono_class_get) return NULL.   
11770
11771         * (method_from_memberref): Return NULL if we are unable to parse
11772         the method signature
11773
11774         (mono_loader_error_prepare_exception): Since we now use the
11775         loader_error flag internally to stop processing, and obtaining
11776         exceptions that might be thrown will walk this code path the
11777         proper way of going from a MonoLoaderError into a
11778         MonoException was convoluted.   This new routine encapsulates the
11779         process of turning the error into an exception and *clearing* the
11780         error afterwards.
11781         
11782 2006-04-27  Miguel de Icaza  <miguel@novell.com>
11783
11784         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
11785         with missing assemblies), and to cope with:
11786
11787                 * Missing fieldref from a non-existing assembly.
11788                 * Missing methodref from a non-existing assembly.
11789
11790         The first batch of work to address *some* of the issues from 76661.
11791         
11792         * object.c (mono_class_create_runtime_vtable): If we fail to
11793         initialize the class raise the exception here. 
11794
11795         * metadata.c (mono_class_get_overrides_full): If any methods fail
11796         to load return the failure to the caller.
11797
11798         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
11799         flagging assemblies that failed to load.   
11800
11801         Do not crash if we are unable to load the assembly.
11802
11803         (mono_assembly_close): Do nothing with REFERENCE_MISSING
11804         assemblies. 
11805
11806         * loader.c (mono_loader_set_error_type_load): Change the
11807         convention to always pass unallocated strings, so we make our own
11808         copies (I know our own code had duplicated strings before, but
11809         this keeps the normal conventions).
11810         (method_from_memberref): Call mono_loader_set_error_method_load
11811         for all possible failures of loading the class. 
11812         Remove assert, turn into a loader error.
11813
11814         (mono_loader_error_to_exception): Move this routine from mini
11815         (mini_loader_error_to_exception) there was no need to have that in
11816         mini. 
11817
11818         * class.c (mono_class_from_typeref): If we were not able to load
11819         the assembly with mono_assembly_load_reference, call the
11820         mono_loader_set_error_type_load to register the problem.
11821
11822         (mono_class_setup_fields): If we fail to load the type from
11823         mono_metadata_parse_type_full, call mono_class_set_failure and
11824         break from the loop.
11825
11826         If class->exception_type is set, we do not layout the fields as
11827         that might crash the runtime, and instead return (from breaking
11828         from the previous loop).
11829
11830         (mono_class_setup_vtable): This now returns a boolean indicating
11831         whether the table was properly setup.   The decision is driven by
11832         mono_class_get_overrides_full which might run into non-existing
11833         methods. 
11834         
11835         (mono_class_init): Returns TRUE on success or FALSE if there was a
11836         problem in loading the type (incorrect assemblies, missing
11837         assemblies, methods, etc).
11838
11839         When we call mono_class_setup_fields we also check for a potential
11840         error inside this call (either a class exception or a general
11841         loader exception).
11842
11843         (mono_class_create_from_typedef): If the parent fails to load
11844         (calling mono_class_get_full) return NULL.
11845         
11846         ** Important **
11847
11848         calls to mono_metadata_parse_type_full should be checked
11849         everywhere and set the mono_class_set_failure
11850         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
11851
11852         The current patch checks the places where my manually constructed
11853         tests show the errors are showing up, but we should do it
11854         everywhere. 
11855
11856         ** Important2 **
11857
11858         mono_class_init return values should be tested everywhere, like
11859         the previous case this is something that we should audit
11860         everywhere and not only on the cases exposed by the tests I
11861         created. 
11862
11863 2006-04-26  Miguel de Icaza  <miguel@novell.com>
11864
11865         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
11866         boolean parameter and instead pass the information on `options'
11867         parameter (FileOptions).
11868
11869         * icall.c: Register the new signature for MonoIO.Open.
11870
11871         * debug-helpers.c (dis_one): Trying to understand how coverity
11872         works.  Fix Run 5, item 78.
11873
11874 2006-04-26  Dick Porter  <dick@ximian.com>
11875
11876         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
11877         dereference.
11878
11879 2006-04-25  Martin Baulig  <martin@ximian.com>
11880
11881         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
11882
11883         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
11884         debugger_thread_created().
11885         (debugger_gc_push_all_stacks): Don't handle the main thread in any
11886         special way.
11887         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
11888         (mono_debugger_finalize_threads): New function; undo the effects
11889         of mono_debugger_init_threads().
11890         (mono_debugger_create_all_threads): Removed.
11891
11892 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * image.c (mono_image_close): Tidy up trace messages.
11895
11896         * assembly.c (mono_assembly_close): Ditto.
11897
11898         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
11899         no longer references an already freed assembly. Fixes #78168.
11900
11901 2006-04-21  Dick Porter  <dick@ximian.com>
11902
11903         * threads.c (mono_thread_detach): Fix reference counting when
11904         detaching threads.
11905
11906 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
11909         #78155.
11910
11911 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
11914         (mono_type_to_stind): Ditto.
11915
11916         * marshal.c: Use the new helper functions to simplify code.
11917
11918         * image.c (mono_image_close): Add some code for help debug assembly unloading
11919         problems.
11920
11921         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
11922         image mempool.
11923
11924         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
11925         assembly was already loaded in another appdomain. Fixes #78083.
11926
11927 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
11930         referenced assemblies.
11931         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
11932
11933         * domain.c (mono_domain_free): Add a trace message.
11934
11935         * appdomain.c (add_assemblies_to_domain): Ditto.        
11936
11937         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
11938         field.  
11939
11940 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11941
11942         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
11943
11944 2006-04-12  Martin Baulig  <martin@ximian.com>
11945
11946         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
11947         `USE_INCLUDED_LIBGC'.   
11948
11949 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
11950
11951         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
11952         the patch contains ../ and a small directory name later. Hopefully fixes
11953         #78035.
11954
11955 2006-04-10  Martin Baulig  <martin@ximian.com>
11956
11957         Clean up the debugger's thread-handling code.
11958
11959         The debugger's thread-handling code has been moved from
11960         ../mini/debug-debugger.c to threads.c.  We now iterate directly
11961         over the `threads' hash, keep track of exiting threads and also
11962         use proper locking.
11963
11964         We can now debug XSP and XSP based applications with the debugger.
11965
11966         * object-internals.h (MonoThread): Added `gpointer end_stack'.
11967
11968         * threads.h
11969         (MonoThreadCallbacks): Removed; this was only used by the debugger.
11970         (mono_install_thread_callbacks): Likewise.      
11971
11972         * threads.c (mono_thread_callbacks): Removed.
11973         (debugger_thread_created, debugger_thread_exited): New static functions.
11974         (start_wrapper): Call debugger_thread_created().
11975         (thread_cleanup): Call debugger_thread_exited().
11976         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
11977         (mono_debugger_init_threads): New public function.
11978         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
11979         iterate directly over the `threads' hash and also use proper locking.
11980
11981         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
11982
11983         * mono-debug-debugger.h
11984         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
11985
11986 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
11987
11988         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
11989         argument type=array. Fixes #78057.
11990
11991 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
11992
11993         * culture-info-table.h : regenerated. Fixed bug #69652.
11994
11995 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * loader.c metadata.c: Reapply a variant r59116.
11998         
11999         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
12000
12001         * class.c (mono_class_setup_interface_offsets): New internal function.
12002
12003         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
12004         interfaces too. Fixes #77398.
12005
12006         * reflection.c (encode_cattr_value): Add support for 
12007         parameter type=object, argument type=array.
12008         (load_cattr_value): Ditto. Fixes #77916.
12009
12010         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
12011         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
12012
12013         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
12014         a byval char array and CharSet is Ansi.
12015
12016         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
12017
12018 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * metadata.c: Add some locking comments.
12021         
12022         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
12023         mempool.
12024         (mono_metadata_free_method_signature): Don't free the signature itself.
12025
12026         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
12027
12028         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
12029         reference the same MonoImage.
12030         (mono_assembly_load_from_full): Add an assert.
12031
12032 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
12033
12034         * image.c (mono_image_close): Don't put the image we are about to free into the
12035         loaded_images_guid_hash.
12036
12037         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
12038         to reduce code duplication.
12039
12040         * marshal.c: Register the native functions called by this module as icalls, to
12041         somewhat centralize the creation of MonoMethodSignature's.
12042
12043         * loader.c (mono_method_signature): Add a cache for method signatures.
12044
12045         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
12046         the parameter attributes of a method.
12047         (mono_metadata_parse_method_signature_full): Refactored the computation of
12048         parameter attributes into a separate function. Also avoid one allocation in
12049         most cases.
12050
12051         * assembly.c (mono_assembly_close): Ditto.
12052
12053         * image.c (mono_image_close): Log trace messages with INFO level.
12054
12055         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
12056
12057         * image.c reflection.c: Correct reference counting of image modules.
12058         
12059         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
12060         of this function from the image mempool.
12061         
12062         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
12063         to allow more cached types to be used.
12064
12065         * mono-debug.c (mono_debug_add_method): Appled patch from
12066         David S. Miller  <davem@sunset.davemloft.net>: Access 
12067         minfo->lexical_blocks[] entry elements using read32().
12068
12069 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * loader.c (mono_free_method): No longer free the method header for non-dynamic
12072         methods as it is allocated from the mempool.
12073
12074         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
12075         image mempool.
12076
12077         * metadata-internals.h: Add comments describing the reference counting scheme
12078         used for MonoImage and MonoAssembly.
12079
12080         * image.c assembly.c reflection.c: Rework reference counting of images and 
12081         assemblies so they are freed when the runtime is shut down. Free some 
12082         additional memory structures when an image is unloaded.
12083         
12084 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
12085
12086         * class.c loader.c reflection.c: Allocate more data structures in
12087         the image mempool.
12088
12089 2006-03-31  Miguel de Icaza  <miguel@novell.com>
12090
12091         * icall.c
12092         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
12093         build on pre glib 2.4 systems.
12094
12095 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
12096
12097         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
12098
12099         * icall.c: Fix some warnings.
12100
12101 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
12102
12103         * culture-info-table.h : regenerated.
12104
12105 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
12106
12107         * threads.c, object-internals.h, verify.c: changed the culture caching
12108         code to use a normal MonoArray for storage so the GC can keep track of
12109         them easily. Fixed bits of the cache logic, too and simplified the
12110         code.
12111
12112 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
12113
12114         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
12115         thread for non-Boehm GCs.
12116
12117 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12118
12119         * domain.c, object.c, domain-internals.h: reduce the amount of memory
12120         needed to keep track of the data for static fields.
12121
12122 2006-03-29  Raja R Harinath  <rharinath@novell.com>
12123
12124         Fix #75172
12125         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
12126         for interface classes.  Use 'num_methods' instead.
12127         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
12128         before using '->vtable_size' field.
12129
12130 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
12131
12132         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
12133         doesn't contain managed pointers, so use a normal hashtable.
12134
12135 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
12136
12137         * reflection.c, class-internals.h, domain.c: fixed handling of types
12138         used as values for objects in custom attributes (bug #77915):
12139
12140 2006-03-24  Martin Baulig  <martin@ximian.com>
12141
12142         * class.c (mono_class_setup_fields): Added support for generic
12143         instances; fixes #77580.
12144
12145 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12146
12147         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
12148
12149 2006-03-24  Dick Porter  <dick@ximian.com>
12150
12151         * file-io.c (get_file_attributes): More stat macro breakage.
12152         Fixes bug 77759.
12153
12154 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
12155
12156         * profiler.c: added the file=filename option in the default profiler
12157         to output the profile data to filename.
12158
12159 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12160
12161         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
12162         bug #77877.
12163
12164 2006-03-22  Martin Baulig  <martin@ximian.com>
12165
12166         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
12167         allocated `MonoClassField *' in `fb->handle'.
12168
12169 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12170
12171         * class.c, image.c, metadata-internals.h: implemented new mechanism to
12172         allocate interface ID to save memory and allow better ID reuse on
12173         appdomain unload. setup_generic_vtable () removal from Martin.
12174
12175 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
12176
12177         * object.h, appdomain.c, domain.c, exception.c, icall.c,
12178         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
12179         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
12180         write barriers for reference stores with managed objects accessed with
12181         C structures in the runtime and in embedding programs.
12182
12183 2006-03-20  Raja R Harinath  <rharinath@novell.com>
12184
12185         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
12186         'interface_id' and 'max_interface_id' fields of MonoClasses
12187         representing open generic types.
12188
12189 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
12190
12191         * object.h, object.c, icall.c: added functions to deal with
12192         storing valuetypes that contain references in managed objects.
12193         * reflection.c, string-icalls.c, threads.c, marshal.c: small
12194         fixes and comments around uses of mono_array_addr ().
12195
12196 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
12197
12198         * object.h, icall.c, monitor.c: object.GetHashCode ()
12199         implementation that supports the moving garbage collector.
12200
12201 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12202
12203         * icall.c, threads-types.h, threads.c: implemented finalizer for
12204         LocalDataStoreSlot.
12205
12206 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
12207
12208         * metadata.c (mono_type_size): Add a fixme.
12209         (mono_type_stack_size): Ditto.
12210
12211         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
12212         'type_forwarders' field.
12213
12214         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
12215         attribute from net 2.0.
12216
12217         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
12218         from class.c.
12219
12220         * class.c (mono_class_setup_fields): Fix a warning.
12221         
12222         * class.c (mono_class_from_name): Add support for assemblyref entries
12223         in the EXPORTEDTYPE table.
12224
12225         * reflection.c: Add support for handling type forwarders under net 2.0.
12226
12227         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
12228         
12229 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
12230
12231         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
12232         overwriting entries in ModuleBuild->types, also clean up the code
12233         a little. Fixes #77774.
12234
12235 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12236
12237         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
12238         load friend assembly info when present.
12239
12240 2006-03-14  Raja R Harinath  <rharinath@novell.com>
12241
12242         Fix crasher on gtest-158.cs.
12243         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
12244         the return value if the MonoClass we want is yet in an
12245         inconsistent state.
12246         * class.c (mono_class_create_from_typedef): Add an comment
12247         explaining an order dependency between mono_class_setup_parent and
12248         mono_class_setup_mono_type.
12249
12250 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12251
12252         * class.c: documentation updates and events bug fix.
12253
12254 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
12255
12256         * class.c: some cleanup, locking fixes.
12257
12258 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12259
12260         * class.c: fix the generics code to setup nested
12261         type info to the instantiated type (bug #77770).
12262
12263 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12264
12265         * marshal.c: fixed a few type correctness issues.
12266
12267 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12268
12269         * loader.c: the Set/Get/Addrtess array methods should be public.
12270
12271 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
12272
12273         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
12274         
12275         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
12276         info->wrapper.
12277
12278 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
12281
12282         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
12283
12284         * mempool.c (mono_mempool_alloc): Speed this up a bit.
12285         (mono_mempool_alloc0): Ditto.
12286
12287 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12288
12289         * socket-io.c:
12290         (create_object_from_sockaddr): it was allocating 4 extra bytes
12291         for the AF_UNIX data. Fixes bug #77747.
12292
12293 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
12294
12295         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
12296
12297 2006-03-09  Dick Porter  <dick@ximian.com>
12298
12299         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
12300         Fixes bug 76966 again.
12301
12302 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
12303
12304         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
12305         names from r57532
12306         * appdomain.c: Bumped corlib version to 48 (due to r57532)
12307
12308 2006-03-07  Martin Baulig  <martin@ximian.com>
12309
12310         * object.c
12311         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
12312
12313 2006-03-07  Martin Baulig  <martin@ximian.com>
12314
12315         * class.c
12316         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
12317         regression introduced in r56970; see gtest-252.cs.
12318
12319         * loader.c (mono_get_method_constrained): Correctly handle generic
12320         methods; see gtest-253.cs.
12321
12322 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
12325
12326 2006-03-04  Martin Baulig  <martin@ximian.com>
12327
12328         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
12329         compute the parent type at runtime, just like we're already doing
12330         it for interfaces.
12331
12332         * reflection.c
12333         (mono_reflection_bind_generic_parameters): Don't compute the
12334         parent type anymore.
12335
12336         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
12337
12338 2006-03-04  Martin Baulig  <martin@ximian.com>
12339
12340         * mono-debug-debugger.h
12341         (mono_debugger_create_notification_function): Allocate memory at
12342         runtime and return a pointer to it.
12343
12344 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
12345
12346         * assembly.c: Fix windows build.
12347         
12348         * assembly.c: Fix build.
12349
12350         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
12351
12352         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
12353         
12354 2006-03-03  Dick Porter  <dick@ximian.com>
12355
12356         * process.c
12357         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
12358         Check parameters before dereferencing them.  Fixes Aaron's part of
12359         bug 77393.
12360
12361 2006-03-03  Raja R Harinath  <rharinath@novell.com>
12362
12363         Fix performance regression.
12364         * loader.c (find_method_in_class): Add 'from_class' argument.
12365         Rename 'klass' argument to 'in_class'.  The signature is compared
12366         against the method in 'in_class', and the corresponding method is
12367         returned from 'from_class'.
12368         (find_method): Walk both 'in_class' and 'from_class' in parallel.
12369         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
12370         type definition and generic instantiation in parallel.
12371         (mono_get_method_constrained): Update to changes.
12372
12373 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12374
12375         * threads.c: make sure the domain is correct, too when doing
12376         mono_thread_attach ().
12377
12378 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
12379
12380         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
12381         windows. Fixes #77683.
12382
12383 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
12384
12385         * object.h, *: introduced specific way to set elements of an array
12386         of references to be used as write barrier. Still need to audit the
12387         uses of mono_array_addr.
12388
12389 2006-03-01  Miguel de Icaza  <miguel@novell.com>
12390
12391         * object-internals.h: New field to cache the assmebly name, patch
12392         from Tambet Ingo (tambet@ximian.com)
12393
12394 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
12395
12396         * decimal.h, class-internals.h, metadata-internals.h,
12397         file-io.h: mark a few function declarations as internal, to
12398         reduce the number of PLT entries.
12399
12400 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12401
12402         * file-io.c: fix typo in warning message.
12403
12404 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
12405
12406         * loader.c: on unix, lookup the "*A" version of a function
12407         if charset is auto as a second option before failing.
12408
12409 2006-02-28  Raja R Harinath  <rharinath@novell.com>
12410
12411         * class.h (mono_class_inflate_generic_method): Revert to two
12412         argument version.
12413         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
12414         (mono_class_inflate_generic_method_full): Add.
12415         * class.c (mono_class_inflate_generic_method_full): Rename from
12416         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
12417         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
12418         * loader.c, reflection.c: Update to changes.
12419
12420 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
12421
12422         * icall.c: const fixes and small improvements.
12423
12424 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12425
12426         * threadpool.c: for asynchronous connect(), enable the same workaround
12427         for BSD 6 as for the Mac. Fixes bug #77637.
12428
12429 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
12432         formatted classes. Fixes #77524.
12433
12434 2006-02-24  Raja R Harinath  <rharinath@novell.com>
12435
12436         * class.c (inflate_generic_type): Add a couple more
12437         micro-optimizations.
12438         (inflate_generic_context): Don't use the 'gmethod' from
12439         'inflate_with'.
12440         (mono_class_inflate_generic_method): If the method has generic
12441         parameters, but the passed-in context doesn't have a 'gmethod',
12442         create one.  Use the possibly simplified generic instantiation
12443         from the declaring class instead of the one passed in.
12444
12445 2006-02-24  Raja R Harinath  <harinath@gmail.com>
12446
12447         Make generic method signature and method header handling lazy.
12448         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
12449         (inflate_generic_header): Likewise.
12450         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
12451         parameter to avoid inflating types.
12452         (mono_get_inflated_method): Empty out.
12453         * class.h (mono_class_inflate_generic_method): Update to changes.
12454         * loader.c (mono_get_method_from_token): Don't parse signature for
12455         generic methods, nor methods of generic classes.
12456         (mono_method_signature): Rename from 'mono_method_signature'.
12457         Inflate signature on demand.
12458         (mono_method_get_header): Inflate method header on demand.
12459         * reflection.c: Update to changes.
12460
12461 2006-02-23  Raja R Harinath  <rharinath@novell.com>
12462
12463         * metadata.c (mono_metadata_inflate_generic_inst): If the
12464         instantiation is closed, don't bother expanding it in the new
12465         context.
12466         * class.c (inflate_generic_class): If the generic instantiation
12467         doesn't change after inflation, return the argument itself.
12468         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
12469         Add bounds checks.
12470         (inflate_generic_context): If neither the generic class nor the
12471         generic method instantiations change, return the original context.
12472         * reflection.c (mono_method_get_object): Do
12473         'mono_get_inflated_method' before accessing the ->klass field.
12474         (inflate_mono_method): Don't create a MonoGenericMethod unless
12475         necessary.
12476         (inflate_method): Don't pass a constructed type as the declaring
12477         type of a methodbuilder.
12478
12479 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
12480
12481         * object.c: fix memory overwrite.
12482
12483 2006-02-22  Dick Porter  <dick@ximian.com>
12484
12485         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
12486         it doesn't work any more.
12487         (mono_threads_request_thread_dump): Fix unused variable warnings.
12488
12489 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12490
12491         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
12492         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
12493         the public header file.
12494
12495 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
12496
12497         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
12498
12499 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12500
12501         * class-internals.h, object.c: reduce the size of MonoVTable
12502         and store the interface_offsets array at negative offsets.
12503
12504 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12505
12506         * metadata.c: tweak table descriptors data structures to reduce
12507         size and runtime relocations.
12508
12509 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12510
12511         * marshal.c: fix some types and opcodes to be type-safe
12512         in marshaling wrappers.
12513
12514 2006-02-21  Ankit Jain  <jankit@novell.com>
12515
12516         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
12517
12518 2006-02-21  Raja R Harinath  <rharinath@novell.com>
12519
12520         * metadata.c (get_constraints): Relax debugging checks for monodis.
12521
12522 2006-02-21  Ankit Jain  <jankit@novell.com>
12523
12524         * metadata.c (mono_metadata_load_generic_params): Move the code
12525         checking for ambiguous generic params from here to mono/dis/get.c
12526         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
12527
12528 2006-02-21  Raja R Harinath  <harinath@gmail.com>
12529
12530         Fix assertion triggered when compiling nemerle.
12531         * class.c (mono_get_shared_generic_inst): Rename from
12532         get_shared_inst and make non-static.
12533         * loader.c (mono_get_shared_generic_method): New.  Used to create
12534         the MonoGenericContext-equivalent of a MonoGenericContainer.
12535         (mono_get_method_from_token): Initialize the 'context' field of
12536         the created MonoGenericContainer.
12537         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
12538         * metadata.c (get_constraints): Add sanity check.
12539         * class-internals.h: Add new internal methods.
12540
12541         * reflection.c (verify_safe_for_managed_space): New sanity check.
12542         Currently checks that owner-less generic parameters aren't allowed
12543         in managed space.
12544         (mono_type_get_object): Use it.
12545         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
12546         that are now in mono_type_get_object.
12547         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
12548
12549 2006-02-19  Raja R Harinath  <harinath@gmail.com>
12550
12551         * metadata.c (mono_type_create_from_typespec): Rename from
12552         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
12553         argument and caching of types in the generic container.
12554         (unwrap_arrays, find_generic_param): Remove.
12555         * metadata-internals.h: Update.
12556         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
12557
12558 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
12559
12560         * class.c (mono_class_get_exception_for_failure): Fix a warning.
12561
12562         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
12563         return values. Fixes #77581.
12564
12565         * class.c (mono_fnptr_class_get): Switch name and name_space.
12566
12567         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
12568         classes and add support for [In, Out] attributes.
12569         (mono_marshal_free_asany): Ditto. Fixes #77524.
12570
12571 2006-02-18  Raja R Harinath  <harinath@gmail.com>
12572
12573         * class.c (mono_class_from_generic_parameter): Make more robust to
12574         incomplete MonoGenericContainers from monodis.
12575
12576 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12577
12578         * class-internals.h: added some more exception types.
12579         * class.c, metadata.c: added a few checks to handle missing
12580         types.
12581
12582 2006-02-17  Raja R Harinath  <rharinath@novell.com>
12583
12584         Use owner-less generic-params some more.
12585         * class.c (my_mono_class_from_generic_parameter): Remove.
12586         (mono_class_from_generic_parameter): Handle null image,
12587         param->name and param->owner.
12588         (mono_class_from_mono_type): Update.
12589         (mono_class_create_from_typespec): Remove 'container' parameter.
12590         If that parameter is non-null, the result is always inflated by
12591         'mono_class_get_full' anyway.
12592         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
12593         parameter.
12594         (mono_class_get_full): Update.
12595
12596         * class.c (inflate_generic_type) [GENERICINST]: If the generic
12597         instance is not open, don't bother inflating.
12598         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
12599         parse metadata for inflated classes.
12600         (_mono_class_get): Change GenericContext* parameter to
12601         GenericContainer*.
12602         (mono_class_create_from_typespec): Likewise.  Simplify, and
12603         implement trivially.  All the cases are handled in
12604         mono_class_from_mono_type.  Don't inflate returned class.
12605         (mono_class_get_full): Delegate GENERICINST optimization to
12606         inflate_generic_type.
12607         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
12608
12609 2006-02-16  Dick Porter  <dick@ximian.com>
12610
12611         * socket-io.c (create_object_from_sockaddr): Fix typo.
12612         (create_sockaddr_from_object): Check array lengths before
12613         potentially accessing items off the end.
12614         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
12615         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
12616         (ves_icall_System_Net_Sockets_Socket_Send_internal)
12617         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
12618         length checks to avoid wraparound overflows.
12619         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
12620         contents of the array of sockets
12621         (hostent_to_IPHostEntry2)
12622         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
12623         Check return value of inet_ntop ().
12624         (addrinfo_to_IPHostEntry): Fix typo
12625
12626 2006-02-16  Raja R Harinath  <rharinath@novell.com>
12627
12628         Type metadata parsing doesn't use generic-instantiation information.
12629         * metadata.c (mono_metadata_parse_array_full): Change
12630         MonoGenericContext* parameter to MonoGenericContainer*.
12631         (mono_metadata_parse_type_full): Likewise.
12632         (mono_type_create_from_typespec_full): Likewise.
12633         (mono_metadata_parse_mh_full): Likewise.
12634         (mono_metadata_parse_generic_inst): Likewise.
12635         (do_mono_metadata_parse_generic_class): Likewise.
12636         (do_mono_metadata_parse_type): Likewise.
12637         * metadata-internals.h: Update to changes.
12638         * class.c (mono_class_find_enum_basetype): Likewise.
12639         (mono_class_setup_fields): Likewise.
12640         (mono_class_create_from_typespec): Likewise.
12641         * loader.c (method_from_methodspec): Likewise.
12642         (mono_get_method_from_token): Likewise.
12643         (mono_method_get_header): Likewise.
12644
12645 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12646
12647         * marshal.c: handle additional GENERICINST case (patch from
12648         Thong Nguyen <tum@veridicus.com>).
12649         Fix a few cases where LDIND_I/STIND_I was used for references.
12650
12651 2006-02-16  Raja R Harinath  <rharinath@novell.com>
12652
12653         * reflection.c (mono_reflection_get_token): Remove unused variable.
12654
12655 2006-02-16  Martin Baulig  <martin@ximian.com>
12656
12657         * reflection.c (mono_reflection_get_token): Add support for fields
12658         in instantiated generic types.
12659
12660         * icall.c
12661         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
12662
12663 2006-02-15  Martin Baulig  <martin@ximian.com>
12664
12665         * icall.c
12666         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
12667         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
12668         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
12669         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
12670
12671 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12672
12673         * class.c, metadata.c, metadata.h, object.c, icall.c,
12674         marshal.c: changed mono_type_get_underlying_type () to do
12675         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
12676         Fixed handling of instantiated generic valuetypes (bug #75479).
12677
12678 2006-02-15  Raja R Harinath  <rharinath@novell.com>
12679
12680         * metadata.c (mono_metadata_decode_signed_value): Simplify.
12681         Delegate to mono_metadata_decode_value, and work on the returned value.
12682
12683         * icall.c (ves_icall_MonoType_GetGenericArguments):
12684         Add consistency check here too.
12685         
12686 2006-02-15  Ankit Jain  <jankit@novell.com>
12687
12688         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
12689         char/short etc.
12690
12691 2006-02-15  Ankit Jain  <jankit@novell.com>
12692
12693         * metadata.c (mono_metadata_decode_signed_value): New function to decode
12694         signed values, used only for representing lower bounds of arrays.
12695         (mono_metadata_parse_array_full): Use new
12696         mono_metadata_decode_signed_value to decode lower bounds.
12697
12698 2006-02-14  Martin Baulig  <martin@ximian.com>
12699
12700         * reflection.c
12701         (mono_reflection_get_token): Support "MonoGenericMethod" and
12702         "MonoGenericCMethod" and allow generic instances / methods.
12703
12704 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
12705
12706         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
12707         to obtain the terminal size using an ioctl.
12708
12709         * object.c (mono_nullable_init): Revert this as nullable reference
12710         types are not valid.
12711         (mono_nullable_box): Ditto.
12712
12713 2006-02-09  Dick Porter  <dick@ximian.com>
12714
12715         * threads.c (mono_thread_detach): Drop a reference to the thread
12716         we're detaching.
12717
12718 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
12719
12720         * object.c (mono_nullable_init): Handle nullable reference types.
12721         (mono_nullable_box): Ditto. Fixes #77446.
12722
12723 2006-02-07  Martin Baulig  <martin@ximian.com>
12724
12725         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
12726
12727 2006-02-07  Ankit Jain  <jankit@novell.com>
12728
12729         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
12730         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
12731         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
12732         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
12733         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
12734         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
12735
12736 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * class.c (mono_class_create_generic): Set type_token as well.
12739
12740         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
12741         compatible with MS.
12742
12743 2006-02-02  Martin Baulig  <martin@ximian.com>
12744
12745         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
12746         has never been used so far.
12747
12748 2006-02-02  Martin Baulig  <martin@ximian.com>
12749
12750         * mono-debug-debugger.h: Changed comment at the top of this file;
12751         the header is not installed, but it's safe to #include it from
12752         within the JIT.
12753
12754         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
12755         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
12756
12757 2006-02-02  Martin Baulig  <martin@ximian.com>
12758
12759         * mono-debug.h
12760         (MonoSymbolTable): Removed the `metadata_info' field.
12761
12762         * mono-debug.c
12763         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
12764
12765         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
12766         (mono_debugger_add_builtin_types): Removed.
12767         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
12768         (mono_debugger_create_notification_function): We now operate on a
12769         pre-allocated area; take a `gpointer' and return `void'.
12770
12771         * mono-debug-debugger.c
12772         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
12773         (mono_debugger_add_builtin_types): Removed.
12774
12775 2006-02-02  Martin Baulig  <martin@ximian.com>
12776
12777         * threads.c (mono_debugger_create_all_threads): New public method.
12778
12779 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12780
12781         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
12782         breaks on several platforms.
12783
12784 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
12785
12786         * assembly.c: the VS.NET build doesn't supply default values for
12787         MONO_ASSEMBLIES and MONO_CFG_DIR.
12788
12789 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
12790
12791         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
12792         helper function.
12793
12794         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
12795
12796         * loader.c (method_from_memberref): Fix a warning.
12797
12798         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
12799
12800         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
12801         with explicit layout. Fixes #77433.
12802
12803 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
12804
12805         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
12806         max_interface_id is initialized before using it. Fixes #77398.
12807         (ves_icall_Type_GetInterfaces): Ditto.
12808
12809 2006-01-30  Raja R Harinath  <rharinath@novell.com>
12810
12811         * metadata.c (mono_metadata_parse_method_signature_full): Don't
12812         allocate memory for parameter attributes when parsing memberref
12813         signatures.
12814         * loader.c (mono_loader_set_error_method_load): Don't warn.
12815         (method_from_memberref): Ensure MissingMethodException gets thrown
12816         if method is not found.  Make warning more informative.
12817
12818 2006-01-29  Raja R Harinath  <harinath@gmail.com>
12819
12820         Fix #77397
12821         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
12822         return true if is byref.
12823         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12824         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
12825         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
12826
12827 2006-01-27  Raja R Harinath  <rharinath@novell.com>
12828
12829         Fix tests/find-method.2.il
12830         * loader.c (find_method, find_method_in_class): Remove is_inflated
12831         argument.  Revert 2006-01-18 change.
12832         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
12833         is generic, search for method in its generic definition.
12834         * class.c (mono_class_setup_vtable_general): Print generic
12835         arguments of generic types in debugging printf.
12836
12837 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
12840
12841         * threads.c (mono_threads_request_thread_dump): New helper function.
12842
12843 2006-01-25  Raja R Harinath  <rharinath@novell.com>
12844
12845         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
12846
12847 2006-01-25  Ankit Jain  <jankit@novell.com>
12848
12849         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
12850         move definition to ..
12851         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
12852         
12853 2006-01-25  Ankit Jain  <jankit@novell.com>
12854             Raja R Harinath  <rharinath@novell.com>
12855
12856         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
12857         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
12858         as necessary.
12859
12860 2006-01-25  Martin Baulig  <martin@ximian.com>
12861
12862         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
12863         `MonoDebuggerThread' into debug-debugger.c.
12864
12865 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12866
12867         * profiler.c: fix printing of data.
12868
12869 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
12870
12871         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
12872           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
12873
12874 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12875
12876         * object.c: fix deadlock related to string interning.
12877
12878 2006-01-23  Martin Baulig  <martin@ximian.com>
12879
12880         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
12881
12882         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
12883
12884 2006-01-23  Martin Baulig  <martin@ximian.com>
12885
12886         * mono-debug.h: Moved the prototypes of some functions which are
12887         used by the JIT here from mono-debug-debugger.h.
12888
12889 2006-01-21  Martin Baulig  <martin@ximian.com>
12890
12891         * Makefile.am: Don't install mono-debug-debugger.h.
12892
12893 2006-01-21  Martin Baulig  <martin@ximian.com>
12894
12895         * mono-debug-debugger.h: Enforce the private status of this header
12896         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
12897         Moved some stuff from mono-debugger-jit-wrapper.h here.
12898
12899 2006-01-20  Raja R Harinath  <rharinath@novell.com>
12900
12901         * class.c (mono_class_from_typeref): Add a sanity test to help
12902         catch lack of assembly load/search hooks.
12903
12904 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * marshal.c (emit_struct_conv): Relax the fields with same offset
12907         check even more. Fixes #77230.
12908
12909 2006-01-18  Martin Baulig  <martin@ximian.com>
12910
12911         * loader.c (find_method_in_class): Added `gboolean is_inflated'
12912         argument; if false, we compare the uninstantiated signatures.
12913         (method_from_memberref): Compare the uninstantiated signatures;
12914         fixes #76417.
12915
12916 2006-01-18  Robert Jordan  <robertj@gmx.net>
12917
12918         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
12919         Clear the weak link. Fixes bug #77170.
12920
12921         * gc.c (mono_gchandle_free):
12922         Reflect *-gc.c changes (tiny optimization).
12923
12924 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * metadata.c (mono_metadata_signature_dup): Applied patch from
12927         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
12928         Fixes #77288.
12929
12930 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * marshal.c (emit_struct_conv): Allow fields with the same offset when
12933         marshalling from native to managed code. Fixes #77230.
12934
12935 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12936
12937         * threadpool.c: fix problem (Mac only) when more than one asynchronous
12938         connect. Fixes bug #77020.
12939
12940 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12941
12942         * class.c: fixed id assignement for nested interfaces (bug #77275).
12943         Added also better info for --print-vtable debugging.
12944
12945 2006-01-12  Martin Baulig  <martin@ximian.com>
12946
12947         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
12948         interfaces on-the-fly; fixes #76625.
12949
12950         * class-internals.h
12951         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
12952         don't need that anymore.
12953
12954 2006-01-12  Miguel de Icaza  <miguel@novell.com>
12955
12956         * socket-io.c
12957         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
12958         To avoid initing the nested_classes when not needed I turned the
12959         PeerCredData as a toplevel internal class, as it has to be shared
12960         anyways. 
12961
12962         Fixes the CASA issue.
12963
12964 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
12965
12966         * domain.c: Accessors for MonoJitInfo
12967
12968         * profiler-private.h: Add jitinfo to the end jit hook
12969
12970         * profiler.[ch]: Define new hooks, called after jitting which give
12971         the MonoJitInfo that was compiled
12972
12973 2006-01-10  Martin Baulig  <martin@ximian.com>
12974
12975         * class.c (mono_class_setup_events): Add support for generic
12976         classes; fixes #76440.
12977
12978 2006-01-06  Raja R Harinath  <rharinath@novell.com>
12979
12980         Fix #77160.
12981         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
12982         on passed-in method.
12983
12984 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * object.c (mono_runtime_invoke_array): Add Nullable support.
12987
12988         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
12989
12990 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
12991
12992         * file-io.c: Don't consider sockets as directory and avoid an endless
12993         loop. Fix bug #76966.
12994
12995 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * object.c (mono_nullable_init): New helper function.
12998         (mono_nullable_box): Ditto.
12999
13000         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
13001
13002         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
13003
13004         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
13005         
13006 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
13007
13008         * class.c (mono_class_is_assignable_from): Make T assignable to 
13009         Nullable<T>.
13010
13011 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
13012
13013         * appdomain.c: Bump corlib version to 46.
13014         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
13015         serialization purpose) and changed ves_icall_System_Reflection_
13016         Assembly_get_code_base signature to accept a boolean (to escape, or 
13017         not, the assembly code base).
13018
13019 2005-12-23  Dick Porter  <dick@ximian.com>
13020
13021         * icall.c: 
13022         * threads-types.h: 
13023         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
13024         CreateEvent icall now returns "created" boolean parameter.
13025
13026 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
13027
13028         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
13029         #76967.
13030
13031         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
13032         when attr_klass is an interface. Fixes #77045.
13033
13034 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
13035
13036         * marshal.c (emit_struct_conv): Fix previous patch.
13037         
13038         * marshal.c (emit_struct_conv): Add a check for fields with the same
13039         offset.
13040
13041 2005-12-20  Raja R Harinath  <rharinath@novell.com>
13042
13043         Fix regression in Mono.C5.
13044         * class.c (mono_class_create_generic): If 'klass' is an interface
13045         set up the interface offsets.
13046         (mono_class_is_assignable_from): Don't throw away generic arguments.
13047
13048 2005-12-19  Raja R Harinath  <rharinath@novell.com>
13049
13050         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
13051         type parameters.
13052
13053 2005-12-15  Raja R Harinath  <rharinath@novell.com>
13054
13055         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
13056         dead store.
13057         (do_mono_metadata_parse_generic_class): Don't pass the current
13058         generic context when parsing the type being instantiated: it
13059         cannot use it, anyway.
13060
13061         * loader.c (method_from_memberref): Don't inflate a signature if
13062         it doesn't contain any type parameters.
13063
13064 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
13065
13066         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
13067
13068 2005-12-14  Martin Baulig  <martin@ximian.com>
13069
13070         * class.c
13071         (mono_type_get_name_recurse): Don't return null for type
13072         parameters and open generic classes.
13073         (mono_class_setup_methods): Don't exclude generic instances.
13074         (mono_get_unique_iid): Use different IDs for different
13075         instantiations of the same generic type.
13076         (mono_class_setup_vtable): Only use setup_generic_vtable() for
13077         open generic instances; create a normal vtable for closed generic
13078         instances.
13079         (mono_class_setup_vtable_general): We're now also called for
13080         closed generic instances.
13081
13082         * reflection.c
13083         (mono_reflection_bind_generic_parameters): Correctly use
13084         mono_metadata_lookup_generic_inst() everywhere.
13085
13086 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
13087
13088         * object.c (mono_class_create_runtime_vtable): Call 
13089         mono_class_setup_vtable ().
13090
13091         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
13092         function.
13093         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
13094         #76959.
13095
13096         * loader.c (mono_loader_set_error_type_load): Print the type load
13097         warnings to the console so they are more visible to the user.
13098         (mono_loader_set_error_method_load): Ditto.
13099
13100         * reflection.c (ensure_runtime_vtable): Revert the last change as it
13101         is still broken.
13102         
13103         * reflection.c (ensure_runtime_vtable): Fix build.
13104
13105         * reflection.c (ensure_runtime_vtable): Disable an optimization which
13106         doesn't work in all cases.
13107
13108 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * object.c (mono_array_new_full): Treat a single dimensional array
13111         with 0 lower bounds as an szarray. Fixes #76973.
13112
13113         * reflection.c (custom_attr_visible): Really fix this.
13114
13115 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
13116
13117         * reflection.c (custom_attr_visible): Allow nested public attributes
13118         as well.
13119
13120         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
13121         interface check.
13122
13123 2005-12-12  Raja R Harinath  <harinath@gmail.com>
13124
13125         * class.c (set_generic_param_owner): Delete.
13126         (mono_class_create_from_typedef): Don't set ->owner field of
13127         generic parameters to "param containers" of enclosing classes.
13128         * reflection.c (mono_reflection_initialize_generic_parameter):
13129         Likewise.
13130
13131 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * reflection.c (custom_attr_visible): Fix build.
13134
13135 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
13136
13137         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
13138         private attributes.
13139         
13140         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
13141         handling of null parameter defaults.
13142
13143 2005-12-09  Raja R Harinath  <rharinath@novell.com>
13144
13145         * class.c (mono_class_from_generic_parameter): Don't set
13146         klass->generic_container.
13147         (my_mono_class_from_generic_parameter): Likewise.
13148
13149 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * reflection.c (load_public_key): Fix a warning.
13152         (method_encode_code): Fix unaligned accesses.
13153
13154 2005-12-07  Martin Baulig  <martin@ximian.com>
13155
13156         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
13157
13158         * reflection.c
13159         (write_generic_param_entry): Encode our custom attrs.
13160
13161         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
13162
13163 2005-12-07  Martin Baulig  <martin@ximian.com>
13164
13165         * reflection.c (encode_new_constraint): Removed; we don't use the
13166         `NewConstraintAttribute' anymore.
13167
13168 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
13169
13170         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
13171         not fire a TypeResolve event when Assembly.GetType () is called.
13172
13173 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
13174
13175         Beginning of support for nullable types in the runtime. Parts of
13176         this patch are from Martin.
13177
13178         * appdomain.c (MONO_CORLIB_VERSION): Bump
13179
13180         * domain.c (mono_init_internal): get the nullable type
13181
13182         * class.c (mono_class_is_nullable): New method
13183         (mono_class_get_nullable_param): New mehod
13184         (mono_class_create_generic): In types T? set cast_class to T
13185
13186         * class-internals.h (MonoDefaults): new nullable default class
13187         (mono_class_get_nullable_param, mono_class_get_nullable_param):
13188         new methods.
13189
13190 2005-12-05  Raja R Harinath  <rharinath@novell.com>
13191
13192         * metadata.c (select_container): New.  Refactor code to select the
13193         appropriate GenericContainer given the type of generic parameter
13194         we are looking for.
13195         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
13196         not a MonoGenericContext.  Use select_container.  Update parameters.
13197         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
13198         and MONO_TYPE_MVAR.
13199         (unwrap_arrays): Remove duplicate tests.
13200         (find_generic_param): Rename from 'has_same_context'.  Now walks a
13201         generic instantiated class to find any arguments that are generic
13202         parameters.
13203         (mono_type_create_from_typespec_full): Use find_generic_param to
13204         avoid evicting some generic instantiations from the typespec
13205         cache.
13206
13207 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
13208
13209         * reflection.c: fixed writing of doubles on ARM FPA.
13210
13211 2005-12-02  Robert Jordan  <robertj@gmx.net>
13212
13213         * icall.c: Fixed EventInfo.ReflectedType (#76829).
13214
13215 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13216
13217         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
13218         least on SUSE 10 they are not the same (on debian, they are just the
13219         same thing).
13220
13221 2005-12-01  Raja R Harinath  <rharinath@novell.com>
13222
13223         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
13224         DeclaringType for VARs and MVARs.
13225         * class.c (set_generic_param_owner): Fix initialization of owner
13226         fields.
13227
13228 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
13229
13230         * icall.c: fixed Enum.ToObject() to correctly convert the values.
13231
13232 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13233
13234         * threadpool.c: workaround for a bug that shows up on the Mac:
13235         select()+connect() on a blocking socket is not like it should
13236         be, so we proceed to connect() in that case, wasting the I/O
13237         threadpool thread until connect succeedes. Fixes bug #75436.
13238
13239 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13240
13241         * threadpool.c: fix typo when setting file descriptor states.
13242
13243 2005-11-28  Raja R Harinath  <rharinath@novell.com>
13244
13245         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
13246         * metadata.c (mono_metadata_parse_method_signature_full): Don't
13247         create a temporary signature container.
13248         (mono_metadata_parse_generic_param): Update to changes.
13249         (mono_type_create_from_typespec_full): Update to changes.
13250         * loader.c (method_from_memberref): Don't use a
13251         MonoGenericContainer while parsing a memberref signature.
13252         (method_from_methodspec): Remove dead-store of the 'container'
13253         variable.  It's overwritten before use.
13254
13255         * metadata.c (mono_type_create_from_typespec_full): Make debugging
13256         checks tighter.
13257         (mono_metadata_parse_generic_param): Likewise.
13258         * loader.c (find_method_in_class): Does not need a
13259         MonoGenericContainer.  Use 'mono_method_signature' rather than
13260         'mono_method_signature_full'.
13261         (find_method, mono_get_method_constrained, method_from_memberref):
13262         Update to changes.
13263
13264         * metadata.c (mono_type_create_from_typespec_full): Ensure that
13265         owner-less generic-parameters are never evicted from the typespec
13266         cache.
13267
13268         * loader.c (method_from_memberref): Don't use the current context
13269         when parsing signatures.
13270         (method_from_methodspec, mono_get_method_from_token): Update to changes.
13271
13272         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
13273         side-effects in g_assert.
13274         * loader.c (mono_get_method_from_token): Resolve klass earlier so
13275         that we don't potentially lose information.
13276
13277 2005-11-26  Dick Porter  <dick@ximian.com>
13278
13279         * icall.c:
13280         * threads.c: icalls to implement basic (ie, not named)
13281         System.Threading.Semaphore.
13282
13283 2005-11-24  Dick Porter  <dick@ximian.com>
13284
13285         * process.c
13286         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
13287         Use GetProcessId() if it's available.
13288
13289 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
13292
13293 2005-11-23  Raja R Harinath  <rharinath@novell.com>
13294             Ankit Jain  <jankit@novell.com>
13295
13296         * loader.c (mono_get_method_from_token): Initialize 'method' field
13297         of all generic parameters before parsing the signature.  Remove
13298         code that "fixed"-up MVAR references.
13299
13300 2005-11-23  Ankit Jain  <jankit@novell.com>
13301
13302         * metadata.c (mono_metadata_has_generic_params):
13303         (mono_metadata_load_generic_param_constraints):
13304         (mono_metadata_load_generic_params): Move duplicate code ...
13305         (mono_metadata_get_generic_param_row): ... here. Returns the
13306         first row-id in GenericParam table for a given owner (token).
13307         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
13308         prototype.
13309
13310 2005-11-23  Raja R Harinath  <rharinath@novell.com>
13311             Ankit Jain  <jankit@novell.com>
13312
13313         * metadata.c (mono_metadata_class_equal): Pass signature_only when
13314         comparing VARs too.
13315         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
13316         type->data.generic_param only if the type is an MVAR.
13317         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
13318         leak owner-less VARs and MVARs into managed space.
13319
13320 2005-11-21  Martin Baulig  <martin@ximian.com>
13321
13322         * class-internals.h
13323         (MonoMethod): Moved the `generic_container' here from
13324         `MonoMethodNormal' since we now also need it for
13325         `MonoMethodPInvoke';
13326         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
13327         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
13328         an union containing both `MonoMethodNormal' and
13329         `MonoMethodPInvoke'.
13330
13331         * loader.c
13332         (mono_get_method_from_token): Allow implementing generic methods
13333         as interncalls.
13334
13335         * threads.c
13336         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
13337         icall.
13338
13339 2005-11-17  Dick Porter  <dick@ximian.com>
13340
13341         * icall.c: 
13342         * process.h: 
13343         * process.c: Split the Process Start_internal icall into
13344         ShellExecuteEx_internal and CreateProcess_internal, which are
13345         called depending on whether UseShellExecute is true.  Fixes bug
13346         76670.
13347
13348         * appdomain.c (MONO_CORLIB_VERSION): Incremented
13349
13350 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
13351
13352         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
13353         'msize' parameters, use the information in 'mspec' instead.
13354         (emit_object_to_ptr_conv): Ditto.
13355
13356         * marshal.c (emit_struct_conv): Handle explicit layout structs with
13357         fields out of order. Fixes #76733.
13358
13359 2005-11-17  Ankit Jain  <jankit@novell.com>
13360
13361         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
13362
13363 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
13364
13365         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
13366           bug #76575.
13367
13368 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
13369
13370         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
13371         for types with non-auto layout. Fixes #76717.
13372
13373 2005-11-16  Ankit Jain  <jankit@novell.com>
13374
13375         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
13376         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
13377         if generic_context is null.
13378           (mono_metadata_generic_param_equal): param->owner can be null.
13379           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
13380         null.
13381
13382 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
13385         the correct value.
13386
13387 2005-11-15  Martin Baulig  <martin@ximian.com>
13388
13389         * object.c (set_value): Use mono_class_from_mono_type() instead of
13390         the hack for generic instances; fixes #76136.
13391
13392 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
13393
13394         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
13395         fields.
13396
13397         * image.c (load_metadata_ptrs): Initialize the new fields.
13398
13399         * reflection.c (create_dynamic_mono_image): Ditto.
13400
13401         * reflection.c (build_compressed_metadata): Use the new fields.
13402
13403         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
13404         icall.
13405
13406         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
13407         icall.
13408         
13409 2005-11-15  Ankit Jain  <jankit@novell.com>
13410             Raja R Harinath  <harinath@gmail.com>
13411
13412         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
13413         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
13414         new per-generic_container cache if the cached MonoType's context matches
13415         the current context.
13416           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
13417         to the expected context.
13418           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
13419
13420 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13421
13422         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
13423         we changed the signature of an icall.
13424         * icall.c: Modify to mono_double_ParseImpl return true/false 
13425         depending on the success, instead of throwing the exception. This will
13426         help us in Double.TryParse methods.
13427         
13428 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * marshal.c (emit_marshal_object): Throw an exception when
13431         marshalling 'object' instead of crashing. Fixes #76696.
13432
13433 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13434
13435         * class-internals.h: Add prototype for mono_type_get_full_name ().
13436
13437 2005-11-11  Dick Porter  <dick@ximian.com>
13438
13439         * threads.c (mono_thread_manage): Make sure the main thread has
13440         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
13441
13442 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * loader.c (mono_loader_set_error_type_load): Log a warning to the
13445         console about the missing type.
13446         (mono_loader_set_error_method_load): Ditto.
13447
13448 2005-11-09  Miguel de Icaza  <miguel@novell.com>
13449
13450         * mono-config.c (mono_get_config_dir): Set the system defaults if
13451         none is specified.
13452
13453         * assembly.c (mono_set_dirs): New API entry point to set the
13454         assembly and the config directory in one call
13455
13456 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
13459         the ftnptr was created from a delegate in a domain other than the
13460         current domain. Fixes #75377.
13461
13462         * exception.h exception.c: Add mono_get_exception_not_supported ().
13463
13464 2005-11-08  Martin Baulig  <martin@ximian.com>
13465
13466         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
13467
13468 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
13469
13470         * security-manager.h: Added definitions to deal with strongname key 
13471         pairs bigger (and smaller) than 1024 bits.
13472         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
13473         adjust wrt the public key length being used.
13474
13475 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
13476
13477         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
13478           Windows build (r51396-51397).
13479
13480 2005-11-03  Martin Baulig  <martin@ximian.com>
13481
13482         * class.c (mono_class_setup_vtable_general): Also add generic
13483         methods to the vtable; fixes #76581.
13484
13485 2005-11-01  Miguel de Icaza  <miguel@novell.com>
13486
13487         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
13488         sure that we lookup GetString method from the System.Text.Encoding
13489         class, not the derived class or we get an empty method.
13490
13491         Fixed class #76612.
13492
13493 2005-10-25  Miguel de Icaza  <miguel@novell.com>
13494
13495         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
13496         if it has been previously set (embedders). 
13497
13498         Make mono_set_rootdir available also on Unix.
13499
13500 005-10-24  Robert Jordan  <robertj@gmx.net>
13501
13502         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
13503
13504 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
13505
13506         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
13507         only calls which are made to native code use this flag.
13508
13509         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
13510
13511 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
13512
13513         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
13514         Add support for FieldBuilders.
13515
13516 2005-10-29  Martin Baulig  <martin@ximian.com>
13517
13518         * mono-debug.c
13519         (mono_debug_using_mono_debugger): New public method; returns
13520         whether we're running inside the debugger.
13521
13522 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
13523
13524         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
13525         for Method/Constructor/FieldBuilders.
13526
13527 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13528
13529         * reflection.c (module_add_cattrs): Save custom attributes for global methods
13530         and fields as well.
13531
13532 2005-10-26  Martin Baulig  <martin@ximian.com>
13533
13534         * mono-debug-debugger.c
13535         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
13536
13537 2005-10-24  Raja R Harinath  <harinath@gmail.com>
13538
13539         * icall.c (base64_to_byte_array): Don't pass an out-of-range
13540         integer to isspace.
13541
13542 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
13545         when passing valuetypes byref. Fixes #76502.
13546
13547 2005-10-19  Jackson Harper  <jackson@ximian.com>
13548
13549         * profiler.c: Don't put a . in front of types that are not in a
13550         namespace.
13551
13552 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
13553
13554         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
13555
13556 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
13557
13558         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
13559         #76436.
13560         (mono_marshal_get_ldflda_wrapper): Fix a warning.
13561
13562 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13563
13564         * assembly.c metadata-internals.h icall.c: Define an additional
13565         parameter for mono_assembly_name_parse_full, so we can avoid creating
13566         S.R.AssemblyName.Version when no version info wasn't passed.
13567         
13568 2005-10-09  Miguel de Icaza  <miguel@novell.com>
13569
13570         * class.c (mono_type_get_full_name): Reimplement method that was
13571         removed. 
13572
13573         * image.c: Some docs
13574
13575 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
13576
13577         * profiler.c (output_newobj_profile): Fix printing of Total memory
13578         on x86.
13579
13580 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13581
13582         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
13583
13584 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
13585
13586         * threads.c: remove debug output.
13587
13588 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
13589
13590         * threads.c (mono_thread_manage): Fix crashes if more than 64
13591         threads need to be aborted. Hopefully fixes #75899.
13592
13593         * assembly.c (mono_stringify_assembly_name): New helper function.
13594
13595         * class.c: Use mono_stringify_assembly_name instead of the similar
13596         static function.
13597
13598         * assembly.h assembly.c: Add support for calling a postload search 
13599         hook if an assembly cannot be loaded.
13600
13601         * appdomain.c: Register new search hooks which call the AssemblyResolve
13602         events in AppDomain. Fixes #75231
13603
13604 2005-10-07  Martin Baulig  <martin@ximian.com>
13605
13606         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
13607         methods without debug info.
13608
13609 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
13610
13611         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
13612         wrappers.
13613
13614 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13615
13616         * file-io.c: now that we return symlinks, use lstat and, when the file
13617         is a symbolic link, stat, to get the file attributes. Also avoid the
13618         conversion to/from utf16/external.
13619
13620 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
13621
13622         * class.c (mono_class_layout_fields): Compute klass->has_references
13623         correctly if an embedded valuetype is not yet initialized. Fixes
13624         #76331.
13625
13626 2005-10-04  Martin Baulig  <martin@ximian.com>
13627
13628         * metadata.c
13629         (mono_metadata_load_generic_param_constraints): New public
13630         function; splitted the constraints loading out from
13631         mono_metadata_load_generic_params().
13632
13633         * class.c (mono_class_create_from_typedef): Call
13634         mono_metadata_load_generic_param_constraints() after setting up
13635         the type and creating our parent; fixes #75329.
13636
13637 2005-10-04  Martin Baulig  <martin@ximian.com>
13638
13639         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
13640         non-dynamic parent classes.
13641
13642 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
13643
13644         * file-io.c : win32 build fix (ETXTBSY seems not found).
13645
13646 2005-10-04  Martin Baulig  <martin@ximian.com>
13647
13648         * reflection.c
13649         (mono_image_get_methodspec_token): Make the cache actually work;
13650         fixes #75974.
13651
13652 2005-10-04  Martin Baulig  <martin@ximian.com>
13653
13654         * class.c (mono_class_name_from_token): Removed the unneccessary
13655         `MonoGenericContext *' argument.
13656
13657 2005-10-04  Martin Baulig  <martin@ximian.com>
13658
13659         * loader.c
13660         (method_from_methodspec): Make the caching work again; fixes the
13661         performance regression from #76262.
13662
13663 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13664
13665         * file-io.c:
13666         * file-io.h:
13667         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
13668         GetFileSystemEntries that performs the same work but without going
13669         into io-layer, locking, etc.
13670
13671 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
13674         ThreadState_Stopped as well. Fixes #76047.
13675
13676 2005-09-29  Martin Baulig  <martin@ximian.com>
13677
13678         * class.c
13679         (inflate_generic_context): If the new context has a `gmethod', set
13680         its `container' that that gmethod's `container'.
13681
13682         * metadata.c
13683         (mono_metadata_parse_generic_param): Simplify things;
13684         `generic_container = generic_context->container;' is just fine.
13685
13686         * loader.c (method_from_methodspec): Code cleanups.
13687
13688 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
13689
13690         * decimal.c: fix warning (and let gcc generate correct
13691         code on ARM with optimizations).
13692
13693 2005-09-28  Martin Baulig  <martin@ximian.com>
13694
13695         * loader.c
13696         (method_from_memberref): Added `MonoGenericContext *class_context'
13697         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
13698         (method_from_methodspec): If we're a memberref, use the enclosing
13699         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
13700
13701 2005-09-28  Martin Baulig  <martin@ximian.com>
13702
13703         * object.c (mono_runtime_invoke_array): Added support for
13704         MONO_TYPE_GENERICINST; fixes #75917.
13705
13706 2005-09-27  Martin Baulig  <martin@ximian.com>
13707
13708         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
13709         `k->byval_arg.type' to determine the actual type.
13710
13711         * loader.c (method_from_methodspec): Removed some hacks.
13712
13713 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
13714
13715         * class-internals.h (mono_field_is_deleted): Do the test for
13716         rtspecialname before we check the actual name of the field. This
13717         prevents us from dereferencing a pointer into the string table,
13718         saving us from accessing a few pages
13719
13720         * *.c: Replace the use of {Enter,Leave}CriticalSection with
13721         macros. This will allow a deadlock debugger to easily be plugged
13722         in.
13723
13724 2005-09-27  Martin Baulig  <martin@ximian.com>
13725
13726         * loader.c (method_from_methodspec): Create a "signature"
13727         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
13728
13729 2005-09-27  Martin Baulig  <martin@ximian.com>
13730
13731         * class.c
13732         (inflate_generic_class): Correctly set the new context's
13733         container.
13734
13735         * loader.c
13736         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
13737         instead of a `MonoGenericContext *'.
13738         (mono_method_signature_full): Take a `MonoGenericContainer *'
13739         instead of a `MonoGenericContext *'.
13740
13741         * metadata.c
13742         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
13743         instead of a `MonoGenericContext *'.
13744         (mono_metadata_parse_method_signature_full): Likewise.
13745
13746 2005-09-26  Martin Baulig  <martin@ximian.com>
13747
13748         * class.c
13749         (mono_class_from_generic_parameter): Set `klass->generic_container'
13750         (mono_class_from_generic_parameter): Likewise.
13751         (mono_bounded_array_class_get): We inherit the generic container
13752         from the element class.
13753
13754         * loader.c
13755         (find_method, find_method_in_class): Take a `MonoGenericContext *'
13756         argument rather than computing it here.
13757         (method_from_memberref): Correctly set the generic context before
13758         parsing the signature.  Fixes #75681.
13759
13760 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
13761
13762         * object.c (mono_class_has_special_static_fields): Fix warnings.
13763
13764 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13765
13766         * assembly.c: Add parse_public_key function, to
13767         par the public keys. Also added mono_assembly_name_parse_full,
13768         to define it the parsed key should be freed or not.
13769         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
13770         to parse a long format assembly name.
13771         * metadata-internals.h: Keep mono_assembly_name_parse_full as
13772         private, since calling it to preserve the key requires
13773         freeing it manually.
13774         
13775 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
13776
13777         * locales.c : removed HAVE_ICU part.
13778
13779 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
13780
13781         * object.c (mono_class_create_runtime_vtable): Avoid calling 
13782         field_is_special_static if the klass has no special static fields.
13783
13784         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
13785         (MonoCachedClassInfo): Likewise.
13786
13787         * object.c (mono_class_has_special_static_fields): New helper function.
13788
13789 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * class.c (mono_class_create_from_typedef): Don't call 
13792         interfaces_from_typedef_full for enums.
13793         (mono_class_create_from_typedef): Compute the base types of enums directly
13794         without calling mono_class_setup_fields ().
13795         (mono_class_find_enum_basetype): New helper function.
13796
13797         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
13798         one place inside the string heap.
13799         
13800 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
13801
13802         * class.c: locking fixes, code cleanups, some docs added.
13803         Allocate some data structures in the image mempool.
13804
13805 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13806
13807         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
13808         the example code.
13809         
13810 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
13811
13812         * class-internals.h, class.c, reflection.c: reduce memory taken by
13813         MonoClass.
13814
13815 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
13816
13817         * metadata.c, metadata.h, loader.h: documentation updates, code and
13818         API cleanups.
13819
13820 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
13821
13822         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
13823         the example code.
13824
13825         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
13826         page faults caused by the runtime while reading metadata.
13827
13828 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13829
13830         * socket-io.c: the field names were changed 3 months ago and no one
13831         realized until bug #76077 got filed!
13832
13833 2005-09-20  Martin Baulig  <martin@ximian.com>
13834
13835         * icall.c (assembly_icalls): Removed some unused debugger icalls.
13836
13837 2005-09-20  Martin Baulig  <martin@ximian.com>
13838
13839         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
13840         write the rank into the class entry.
13841
13842 2005-09-20  Martin Baulig  <martin@ximian.com>
13843
13844         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
13845
13846 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13849
13850         * icall.c (custom_attrs_defined_internal): New icall.
13851
13852         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
13853         function.
13854         (mono_custom_attrs_construct_by_type): New helper function.
13855
13856 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
13857
13858         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
13859         terminate the resulting string. Fixes #76123.
13860
13861 2005-09-16  Martin Baulig  <martin@ximian.com>
13862
13863         * mono-debug.c
13864         (mono_debug_add_method): Ignore inflated methods for the moment.
13865
13866 2005-09-14  Martin Baulig  <martin@ximian.com>
13867
13868         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
13869
13870 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
13873         return a success/failure indication.
13874         (mono_metadata_interfaces_from_typedef_full): Ditto.
13875         (get_constraints): Ditto.
13876
13877 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * marshal.c (emit_marshal_array): Fix handling of null arrays.
13880         
13881         * marshal.c (emit_marshal_array): Add support for returning string
13882         arrays from delegates. Fixes #76063.
13883
13884         * marshal.c: Use the emit_ldloc/stloc macros where possible.
13885
13886 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
13887
13888         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
13889         icall.
13890
13891 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * reflection.c icall.c: Fix after mono_get_exception_type_load
13894         signature change.
13895
13896         * assembly.c (mono_assembly_get_assemblyref): New helper function.
13897         (mono_assembly_load_reference): Use the new helper.
13898
13899         * class-internals.h (MonoLoaderError): New structure containing 
13900         information about type loading errors.
13901
13902         * class-internals.h loader.c: Add APIs to store per-thread loader
13903         error information.
13904
13905         * loader.c class.c: Set the loader error if needed.
13906
13907         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
13908
13909 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
13910
13911         * decimal.c: fixed to handle the broken ARM fp format.
13912
13913 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
13914
13915         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
13916         broken.
13917
13918 2005-09-06  Martin Baulig  <martin@ximian.com>
13919
13920         * domain.c (supported_runtimes): Added v2.0.50727.
13921
13922 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
13923
13924         * culture-info.h: reduce the size of some structures.
13925
13926 2005-09-05  Martin Baulig  <martin@ximian.com>
13927
13928         Reflect latest API changes in the August CTP.
13929
13930         * icall.c
13931         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
13932         ("MonoType.HasGenericArguments"): Removed.
13933         ("MonoMethod.BindGenericParameters"): Renamed to
13934         "MakeGenericMethod".
13935         ("MethodBuilder.BindGenericParameters"): Renamed to
13936         "MakeGenericMethod".    
13937
13938 2005-09-05  Martin Baulig  <martin@ximian.com>
13939
13940         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
13941
13942 2005-09-05  Martin Baulig  <martin@ximian.com>
13943
13944         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13945
13946         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
13947         generic_container is non-NULL.
13948
13949 2005-09-05  Martin Baulig  <martin@ximian.com>
13950
13951         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13952
13953         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
13954
13955 2005-08-29  Michal Moskal  <malekith@nemerle.org>
13956
13957         * reflection.c (encode_locals,
13958         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
13959         for large generic types.
13960
13961 2005-09-05  Martin Baulig  <martin@ximian.com>
13962
13963         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13964
13965         * class.c (mono_dup_array_type): New public method.
13966         (mono_metadata_signature_deep_dup): New public method.
13967         (dup_type): Correctly duplicate array and function types.
13968
13969 2005-09-05  Martin Baulig  <martin@ximian.com>
13970
13971         Applying a patch from Michal Moskal <malekith@nemerle.org>.
13972
13973         * reflection.c (get_default_param_value_blobs): Handle generic types
13974         and generic methods.
13975
13976 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
13977
13978         * class.c: Fixed error reporting (method/class were inversed) for 
13979         inheritance demands.
13980         * security-manager.c|h: Added the AppDomain when calling the managed
13981         System.Security.SecurityManager.InheritanceDemand method.
13982
13983 2005-09-01  Raja R Harinath  <rharinath@novell.com>
13984
13985         * reflection.c (encode_marshal_blob): 'marshaltype' and
13986         'marshaltyperef' are alternate sources for the custom marshaler
13987         name.
13988
13989 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
13990
13991         * class.c: fix creation of array classes with rank == 1
13992         (patch by Ankit Jain <jankit@novell.com>).
13993
13994 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
13995
13996         * object.c: fix check for creating the bound data for arrays vs
13997         szarrays.
13998
13999 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14000
14001         * object.c: configuration file name is now based on the executable name,
14002         not the image name. Fixes bug #75931.
14003
14004 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
14007         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
14008
14009 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
14010
14011         * rand.c: Use wincrypt.h instead of WinCrypt.h.
14012
14013 2005-08-24  Ankit Jain  <jankit@novell.com>
14014             Raja R Harinath  <rharinath@novell.com>
14015
14016         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
14017           called by it recursively.
14018           (mono_class_init): Remove special case in pending_init handling, since it's
14019           superseded by the fix to mono_class_from_typeref.
14020
14021 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
14022
14023         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
14024         BROKEN_THREAD_START stuff.
14025
14026 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
14027
14028         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
14029         trampoline.
14030
14031         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
14032         
14033         * object.c (mono_delegate_ctor): Replace the original function address with
14034         a delegate trampoline.
14035
14036 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
14037
14038         * icall.c: add boolean argument to base64_to_byte_array and 
14039         InternalFromBase64String to control whether a whitespace-only string
14040         is allowed (or should casue a FormatException to be thrown). We need
14041         this as the behavior has changed between MS.NET 1.x and 2.0, and we
14042         to match the MS behaviour in both profiles.
14043         * appdomain.c: Bump corlib version.
14044
14045 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14046
14047         This patch implements a big portion of publisher policy
14048         support, used to bind assembly versions and redirect
14049         one assembly from version A to version B.
14050
14051         * assembly.c:
14052         New GSList loaded_assembly_bindings, for storing the cached
14053         assembly bindings.
14054         (assembly_binding_maps_name): New static function for checking if a 
14055         assembly binding information maps an assembly name.
14056         (mono_assembly_binding_info_free): New function for freeing
14057         assembly binding information resources.
14058         (get_publisher_policy_info): New static function for retrieving 
14059         assembly binding information from a MonoImage.
14060         (compare_versions): New static function for comparing an assembly
14061         binding information data and the version of an assembly name.
14062         (check_policy_versions): New static function for checking if an
14063         assembly binding info mapping an assembly name is valid for it.
14064         (mono_assembly_load_publisher_policy): New static function for
14065         loading the 'policy.major.minor.MyAssembly' image for an assembly
14066         with an assembly name 'aname'.
14067         (mono_assembly_bind_version): New static function for updating
14068         assembly redirection.
14069         (mono_assembly_apply_binding): New static function for applying
14070         assembly binding.
14071         (search_binding_loaded): New static function for searching 
14072         loaded assembly binding infos in the cache domain.
14073         (mono_assembly_load_full): Don't apply assembly binding for
14074         reflection only assemblies.
14075
14076         * metadata-internals.h: Add MonoAssemblyBindingInfo,
14077         which contains information about assembly binding. Also
14078         declare signature for mono_config_parse_publisher_policy ()
14079         function, used to retrieve pub policy info.
14080         
14081         * mono-config.c:
14082         (publisher_policy_start): New static function used to parse publisher 
14083         policy config files.
14084         (publisher_policy_parser): New static MonoParseHandler containing 
14085         the functions used when parsing config files.
14086         (mono_config_parse_publisher_policy): New function for parsing
14087         publisher policy files.
14088         
14089 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
14090
14091         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
14092
14093         * marshal.c (mono_delegate_free_ftnptr): Ditto.
14094
14095         * object.c (mono_get_addr_from_ftnptr): New helper function.
14096
14097         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
14098
14099         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14100
14101 2005-08-19  Dick Porter  <dick@ximian.com>
14102
14103         * threads.c, threads.h, appdomain.c, appdomain.h,
14104         profiler-private.h, monitor.c, object.c, object-internals.h,
14105         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
14106         store the thread ID, so it can hold a 64 bit value if needed.
14107
14108 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
14109
14110         * reflection.c (mono_reflection_create_dynamic_method): Store the
14111         handle class into the method references as well so ldtoken works in
14112         dynamic methods.
14113
14114         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
14115         types.
14116
14117 2005-08-19  Ankit Jain <jankit@novell.com>
14118
14119         Fix #75847.
14120         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
14121           here rather than using the method signature of a arbitrary function
14122           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
14123           two arguments.
14124           Hack done with Harinath.
14125
14126 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14127
14128         * threadpool.c: disable printing stack traces when we get a exception
14129         in a threadpool thread. I need to do more testing to figure out which
14130         cases actually print this. Fixes bug #75828.
14131
14132 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14133
14134         * icall.c: there might be ignored whitespace after the last '='. This
14135         fixes length computation and bug #75840.
14136
14137 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
14138
14139         * assembly.c (mono_assembly_load_full): Consider .exe extension as
14140         well. Fixes #75809.
14141
14142         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
14143         #75784.
14144         
14145         * reflection.c (create_custom_attr_data): Ditto.
14146
14147 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
14148
14149         * locales.c, culture-info.h : removed RegionLCIDMap.
14150         * culture-info-tables.h : regenerated.
14151
14152 2005-08-16  Martin Baulig  <martin@ximian.com>
14153
14154         * class.c (mono_type_get_name_recurse): Small fix.
14155
14156 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
14157
14158         * locales.c : indentation fixie.
14159
14160 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
14161
14162         * object-internals.h,
14163           locales.h,
14164           locales.c,
14165           culture-info.h,
14166           icall.c : added RegionInfo table support.
14167         * culture-info-table.h : regenerated for region support.
14168
14169 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
14170
14171         * reflection.c (resolve_object): handle all kinds of MonoMethod
14172         including generic ones
14173
14174 2005-08-12  Ankit Jain <jankit@novell.com>
14175
14176         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
14177           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
14178
14179 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
14180
14181         * process.c: Don't close a thread handle when it's NULL. This is a
14182         workaround for bug #75733.
14183
14184 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
14185
14186         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
14187
14188 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
14189
14190         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
14191
14192 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14193
14194         * threadpool.c: if a work item in the thread pool has a callback that
14195         catches a exception, don't propagate it after invoking the callback.
14196         Fixes bug #75336.
14197
14198 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
14199
14200         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
14201
14202         * class-internals.h (MonoCachedClassInfo): Add some new fields.
14203
14204         * class.c (mono_class_init): Load field info lazily in the AOT case.    
14205
14206         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
14207
14208 2005-08-03  Ankit Jain  <jankit@novell.com>
14209
14210         Fix #75683.
14211         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
14212           PInvoke calling convention is 0.
14213
14214 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
14215
14216         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
14217         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
14218
14219 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
14220
14221         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
14222         to handle threads not started by the GC (patch by Michael Meeks
14223         <michael.meeks@novell.com>).
14224
14225 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
14226
14227         * reflection.c: Make buffer used in emitting types larger for some
14228         big generic types (patch by Michal Moskal).
14229
14230 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
14231
14232         * mono-debug.c: Fix some (not all) alignment problems.
14233
14234 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14235
14236         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
14237         Invoke mono_image_load_from_data_full passing the refonly
14238         parameter.
14239
14240         * assembly.c
14241         (mono_assembly_open_from_bundle): Add the refonly argument, 
14242         in order to pass it to other methods it calls to.
14243         (do_mono_assembly_open): Add the refonly argument, in order 
14244         to pass it to other methods it calls to.
14245         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
14246         the refonly parameter to it.
14247
14248         * image.c: Add loaded_images_refonly_hash and
14249         loaded_images_refonly_guid_hash to cache the reflection
14250         only loaded images.
14251         (mono_images_init): Initialize the hash tables used for
14252         caching the reflection only images.
14253         (load_modules): Invoke mono_image_open_full passing the refonly
14254         parameter to load the modules the correct way.
14255         (build_guid_table): Add the refonly argument, to re-build the 
14256         correct hash table.
14257         (do_mono_image_open): Added the refonly argument, in order to
14258         define it for the loaded image.
14259         (mono_image_loaded_full): New function, which receives an
14260         additional parameter to look for the image in the refonly or
14261         non-refonly section.
14262         (mono_image_loaded): Updated, using mono_image_loaded_full.
14263         (mono_image_loaded_by_guid_full): The same case that happens
14264         with mono_image_loaded_full.
14265         (mono_image_loaded_by_guid): Likewise.
14266         (register_image): Use the ref_only variable inside MonoImage
14267         to decide in which hash table store the current image.
14268         (mono_image_open_from_data_full): Rename
14269         mono_image_open_from_data to mono_image_open_from_data_full,
14270         adding the refonly argument, to define the ref_only variable 
14271         inside MonoImage.
14272         (mono_image_open_from_data): Return 
14273         mono_image_open_from_data_full.
14274         (mono_image_open_full): Rename mono_image_open to
14275         mono_image_open_full, receiving the new refonly argument,
14276         to pass it to inner methods.
14277         (mono_pe_file_open): Update this function, to open
14278         a MonoImage as a non-refonly image.
14279         (mono_image_close): Use the refonly variable inside
14280         MonoImage to remove the image from the correct caches.
14281
14282         * image.h: Add the signatures of mono_image_open_full,
14283         mono_image_open_from_data_full, mono_image_loaded_full,
14284         mono_image_loaded_by_guid_full.
14285
14286         * metadata-internals.h: Add the ref_only field to 
14287         MonoImage.
14288         
14289 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14290
14291         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
14292         Fix the last behavior, which used to load the assemblies and
14293         extract MonoReflectionAssemblyName information, instead of
14294         extract it from the metadata tables. Needed for Reflection
14295         Only assemblies.
14296         
14297 2005-07-29  Martin Baulig  <martin@ximian.com>
14298
14299         * mono-debug-debugger.c
14300         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
14301         not initialized.
14302
14303         * mono-debug.c
14304         (mono_debug_address_from_il_offset): Check whether we have
14305         debugging support before attempting to take the lock.
14306         (mono_debug_source_location_from_address): Likewise.
14307         (mono_debug_source_location_from_il_offset): Likewise.
14308         (mono_debug_il_offset_from_address): Likewise.
14309         (mono_debug_address_from_il_offset): Likewise.
14310
14311 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
14312
14313         * class.c (mono_class_from_name_case): Add support for dynamic images.
14314         Fixes #75650.
14315
14316         * object.c (mono_class_compute_gc_descriptor): Add a workaround
14317         for #75479.
14318
14319 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14320         
14321         * reflection.c (mono_method_get_object): Fix warning.
14322
14323 2005-07-28  Martin Baulig  <martin@ximian.com>
14324
14325         * mono-debug.c
14326         (mono_debug_add_wrapper): Also write the wrapper type.
14327
14328 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
14329
14330         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
14331         
14332         * class.c (mono_class_init): Avoid reading nested classes if the AOT
14333         data indicates the class has none.
14334
14335 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
14336
14337         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
14338         loader lock with the debugger lock. Prevents deadlocks for beagle.
14339
14340         Beagle can now run on an smp box for a weekend without any
14341         issues. Woohoo!
14342
14343 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
14344
14345         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
14346         in a module. Fixes #75629.
14347
14348 2005-07-26  Martin Baulig  <martin@ximian.com>
14349
14350         * mono-debug.c (mono_debug_add_wrapper): New static method.
14351         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
14352         interncall or a wrapper.
14353
14354         * mono-debug.h (MonoDebugWrapperData): New public typedef.
14355         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
14356         (MONO_DEBUGGER_VERSION): Bump to 51.
14357
14358         * mono-debug-debugger.c
14359         (mono_debugger_add_type): Removed this empty function.
14360         (mono_debugger_add_method): Likewise.
14361
14362 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
14363
14364         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
14365         before accessing method->slot.
14366
14367 2005-07-21  Jb Evain  <jbevain@gmail.com>
14368
14369         * reflection.c (method_encode_clauses/class): Handle filters clauses.
14370         Fixes #75010.
14371
14372 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
14373
14374         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
14375         #75587.
14376
14377 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
14378
14379         * image.h image.c: Add mono_image_get_guid () API function.
14380
14381 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
14382
14383         There were issues when multiple threads tried to load
14384         assemblies. A deadlock was created between assemblies_mutex and
14385         mono_domain_assemblies_lock. This fixes the issue by making the
14386         assembly ref counting be lock free. See bug 75586.
14387         
14388         * image.c (mono_image_close): The add ref function here was using
14389         Interlocked operations while the unref was using a mutex and a
14390         --. I don't think this was ever a bug that would be exposed in a
14391         non-pendantic way (ie, by an embedder doing a ref on one thread
14392         and an unref on another), but for the sake of correctness, this is
14393         now Interlocked.
14394
14395         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
14396         (mono_assembly_load_reference): Call mono_assembly_addref rather
14397         than touching the refcount ourselves.
14398         (mono_assembly_close): Use InterlockedDecrement to unref the
14399         assembly. Don't acquire the lock unless it is actually needed.
14400
14401 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
14402
14403         * class.c (mono_class_layout_fields): Fix calculation of has_references
14404         for generic types.
14405
14406 2005-07-12  Martin Baulig  <martin@ximian.com>
14407
14408         Applying a patch from Michal Moskal <malekith@nemerle.org>.
14409
14410         * metadata.c
14411         (mono_type_hash): Provide better hashing for generic instances.
14412         (mono_generic_inst_hash): Improve hashing.
14413         (mono_generic_class_hash): Likewise.
14414
14415         * reflection.c (mymono_metadata_type_hash): Improve hashing for
14416         generic instances.
14417
14418 2005-07-12  Martin Baulig  <martin@ximian.com>
14419
14420         * reflection.c (mono_reflection_create_runtime_class): Remove the
14421         hack for generic type definitions and non-`Run' assemblies.
14422         (mono_reflection_bind_generic_parameters): Also use
14423         `klass->wastypebuilder' to check for TypeBuilders.
14424
14425 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
14426
14427         * class.c (mono_class_layout_fields): Fix calculation of has_references
14428         for generic types.
14429
14430         * class.c (inflate_generic_class): Fix a leak.
14431         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
14432         for generic types.
14433
14434 2005-07-11  Martin Baulig  <martin@ximian.com>
14435
14436         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
14437         on error.
14438
14439 2005-07-11  Martin Baulig  <martin@ximian.com>
14440
14441         * loader.c (find_method): Also lookup in
14442         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
14443
14444 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14445
14446         * appdomain.c (mono_domain_unload): Don't free the error message
14447         before passing it to mono_get_exception_...
14448
14449         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
14450         
14451 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
14452
14453         * threads.c: try to better guess an available RT signal (bug #75387).
14454
14455 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14456
14457         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
14458         and CACHE_OBJECT.
14459
14460 2005-07-07  Martin Baulig  <martin@ximian.com>
14461
14462         * class.c (mono_type_get_name_full): Return NULL for
14463         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
14464         fixes #75408.
14465
14466 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
14467
14468         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
14469         exit the appdomain as well being aborted.
14470
14471         * threadpool.c: Create all threadpool threads inside the root appdomain, and
14472         change back to the root domain after calling managed code. This enables
14473         appdomains using threadpools to be unloaded.
14474
14475 2005-07-07  Martin Baulig  <martin@ximian.com>
14476
14477         * class-internals.h
14478         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
14479         into `MonoDynamicGenericClass' since we only need it for dynamic
14480         types.
14481
14482         * reflection.c (mono_class_bind_generic_parameters): We don't need
14483         to compute the `parent' here.
14484
14485 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
14486
14487         * culture-info-table.h : regenerated.
14488
14489 2005-07-06  Martin Baulig  <martin@ximian.com>
14490
14491         * icall.c
14492         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
14493
14494         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
14495
14496 2005-07-06  Martin Baulig  <martin@ximian.com>
14497
14498         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
14499         we're doing a signature-only comparision; fixes #74945.
14500
14501 2005-07-06  Martin Baulig  <martin@ximian.com>
14502
14503         * class-internals.h (MonoGenericClass): Moved some things out into
14504         a new `MonoInflatedGenericClass' type.  
14505         (MonoInflatedGenericClass): New type; the `klass' of a
14506         `MonoGenericClass' is now computed lazyly in
14507         mono_get_inflated_generic_class().      
14508
14509         * class.c (mono_get_inflated_generic_class): New public function.
14510         (mono_class_inflate_generic_method): Removed the unused
14511         `MonoClass *' argument.
14512         (setup_generic_vtable): Don't call mono_get_inflated_method() on
14513         all the methods.
14514         (mono_class_create_generic): Make this static and merge it with
14515         mono_class_create_generic_2(); we're now called automatically from
14516         mono_get_inflated_generic_class().
14517
14518         * loader.c (mono_method_signature): Call
14519         mono_get_inflated_method() here.
14520
14521 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
14522
14523         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
14524         type of fields with RVA.
14525
14526         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
14527         for this pseudo class.
14528         (my_mono_class_from_generic_parameter): Likewise.
14529         (mono_class_init): Allow interfaces to have cctors.
14530
14531 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14532
14533         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
14534         lazily for AOT methods.
14535
14536 2005-07-05  Martin Baulig  <martin@ximian.com>
14537
14538         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
14539         returns FALSE for a successful match, not TRUE.
14540
14541 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
14542
14543         * loader.c (mono_method_get_index): Optimize this a bit.
14544
14545 2005-07-04  Martin Baulig  <martin@ximian.com>
14546
14547         * class.c
14548         (class_compute_field_layout): Move the check for generic type
14549         definitions into mono_class_layout_fields().  Fixes #74684.
14550         (mono_class_from_generic_parameter): Correctly compute
14551         `klass->parent'; fixes #75457.
14552
14553         * reflection.c (register_assembly, register_module): Make sure
14554         `domain->rejobject_hash' is already created.
14555
14556 2005-07-02  Martin Baulig  <martin@ximian.com>
14557
14558         * class-internals.h
14559         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
14560         `MonoDynamicGenericClass'.      
14561
14562 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
14563
14564         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
14565         returned by a field getter is null, since null is a valid value.
14566
14567 2005-07-01  Martin Baulig  <martin@ximian.com>
14568
14569         * reflection.c (mono_reflection_generic_class_initialize): Update
14570         the `dgclass->fields [i].parent' to the correct class.
14571         (mono_image_get_fieldref_token): Use the declaring type, not the
14572         reflected type.
14573
14574 2005-07-01  Martin Baulig  <martin@ximian.com>
14575
14576         * loader.c (find_method): Also look in the interfaces; fixes #75429.
14577
14578 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
14579
14580         * threads.c (thread_cleanup): assert that thread != NULL
14581         (wait_for_tids_or_state_change): We were using the wrong variable
14582         when accessing wait->threads. `i' was always out of the bounds of
14583         the array.
14584
14585 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14586
14587         * loader.c: map user32 and kernel32 to libMonoSupportW
14588
14589 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
14590
14591         * appdomain.c (unload_thread_main): Mark this as WINAPI.
14592
14593 2005-06-28  Martin Baulig  <martin@ximian.com>
14594
14595         * loader.c (method_from_methodspec): Fix #75334.
14596
14597 2005-06-28  Martin Baulig  <martin@ximian.com>
14598
14599         Fix #74953 - Arrays now implement the generic IList<T> interface
14600         on the 2.0 platform.
14601
14602         * class-internals.h (MonoDefaults): Added `generic_array_class'.
14603
14604         * reflection.c (mono_class_bind_generic_parameters): New public
14605         function; similar to mono_reflection_bind_generic_parameters(),
14606         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
14607
14608         * domain.c (mono_init_internal): Try to initialize.
14609         `mono_defaults.generic_array_class' here; this'll only succeed if
14610         we're using the 2.0 corlib.
14611
14612         * icall.c
14613         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
14614         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
14615         (mono_lookup_internal_call): Added support for nested classes.
14616
14617         * loader.c
14618         (mono_get_method_from_token): Set `result->signature->pinvoke' if
14619         we're an interncall and have generic arguments.
14620
14621         * class.c
14622         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
14623         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
14624         instance of System.Array.InternalArray<T> for arrays, so they
14625         implement the generic IList<T> interface.
14626
14627 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
14628
14629         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
14630         (chastamar@yahoo.com). Fixes #75374.    
14631
14632 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
14633
14634         * culture-info-table.h: regenerated.
14635
14636 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14637
14638         * icall.c: handle spaces correctly for base64 strings.
14639
14640 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
14641
14642         * *.c: Kill some warnings.
14643
14644 2005-06-23  Duncan Mak  <duncan@novell.com>
14645
14646         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
14647         that this builds on Solaris 10 (x86).
14648
14649 2005-06-23  Martin Baulig  <martin@ximian.com>
14650
14651         * class.c
14652         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
14653         generic type definitions.
14654
14655 2005-06-23  Martin Baulig  <martin@ximian.com>
14656
14657         Fix #75331.
14658
14659         * metadata.c (mono_class_get_overrides): Renamed to
14660         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
14661         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
14662         pass it to mono_get_method_full().
14663
14664 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
14665
14666         * reflection.c (mono_reflection_create_runtime_class): take the
14667         mono_domain_lock in this method. Prevents deadlocks
14668
14669 2005-06-22  Martin Baulig  <martin@ximian.com>
14670
14671         * loader.c (method_from_methodspec): Fix #75330.
14672
14673 2005-06-22  Martin Baulig  <martin@ximian.com>
14674
14675         * reflection.c (type_get_qualified_name): Use
14676         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
14677         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
14678         argument; use it if we don't have an assembly name.
14679
14680 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
14681
14682         * object.c: In mono_message_init, set "copy out" flag for in
14683         parameters with the [Out] flag.
14684
14685 2005-06-21  Martin Baulig  <martin@ximian.com>
14686
14687         * class.c
14688         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
14689         and MONO_TYPE_PTR.
14690
14691 2005-06-21  Martin Baulig  <martin@ximian.com>
14692
14693         * class.c (mono_class_init): Don't initialize `class->fields' for
14694         generic instances since they're initialized again in
14695         compute_field_layout(). 
14696         (compute_field_layout): Set the field's `generic_info' here; fix
14697         #75320. 
14698
14699 2005-06-21  Martin Baulig  <martin@ximian.com>
14700
14701         * class-internals.h
14702         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
14703
14704         * metadata.c (mono_metadata_generic_method_equal): Also
14705         distinguish the `generic_class'; fixes #75334.
14706
14707 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14708
14709         * domain.c:
14710         * appdomain.c:
14711         * domain-internals.h:
14712         * reflection.c: 'domain_assemblies' field is now protected by its own
14713         lock. Don't call into managed code to run the AssemblyLoad event if we
14714         now there are no registered delegates for it.
14715
14716 2005-06-20  Martin Baulig  <martin@ximian.com>
14717
14718         * class.c (mono_class_is_assignable_from): Use a custom version of
14719         mono_class_has_parent() to make things work for generic instances;
14720         fix #75300.
14721
14722 2005-06-20  Martin Baulig  <martin@ximian.com>
14723
14724         * loader.c (method_from_methodspec): Apply a patch from
14725         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
14726
14727 2005-06-20  Martin Baulig  <martin@ximian.com>
14728
14729         * class.c (mono_class_init): Reverted Zoltan's last change; it
14730         breaks generics.
14731
14732 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
14733
14734         * threads.c (wait_for_tids_or_state_change): Add missing locking.
14735
14736 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14737
14738         * socket-io.c: fix the index in the socket array for writable/error
14739         sockets. Fixes bug #75306.
14740
14741 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
14742
14743         * class.c (mono_class_init): Allow interfaces to have static ctors.
14744
14745 2005-06-17  Martin Baulig  <martin@ximian.com>
14746
14747         * loader.c (method_from_methodspec): Use `context->container' when
14748         parsing the `gmethod->inst'.
14749
14750 2005-06-17  Martin Baulig  <martin@ximian.com>
14751
14752         * class.c (mono_type_get_name_recurse): Don't add the assembly
14753         name for type arguments.
14754
14755 2005-06-15  Martin Baulig  <martin@ximian.com>
14756
14757         * reflection.c (mono_image_get_inflated_method_token): Encode
14758         correct klass; fixes #75260.
14759
14760 2005-06-13 Michal Moskal <malekith@nemerle.org>
14761
14762         * icall.c: Make GetCorrespondingMethod/Constructor take
14763         MonoReflectionMethod method not MonoMethod. Removed
14764         MonoType.GetCorrespondingField, and make
14765         MonoGenericType.GetCorrespondingField take name not
14766         MonoClassField.
14767
14768 2005-06-13  Michal Moskal <malekith@nemerle.org>
14769
14770         * reflection.c (field_encode_signature, encode_locals):
14771          Make sizes of buffers for types larger (for big generic types).
14772          (create_generic_typespec,
14773          mono_reflection_sighelper_get_signature_local,
14774          mono_reflection_sighelper_get_signature_field):
14775          Add asserts for too small buffers.
14776
14777 2005-06-15  Martin Baulig  <martin@ximian.com>
14778
14779         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
14780         if our parent is not a dynamic type.
14781
14782 2005-06-15  Martin Baulig  <martin@ximian.com>
14783
14784         * class-internals.h (MonoTypeNameFormat): New enum.
14785
14786         * class.c
14787         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
14788         (mono_type_get_full_name): Removed.
14789         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
14790         argument instead of the boolean's.
14791
14792         * icall.c (ves_icall_System_MonoType_getFullName):
14793         Added `gboolean assembly_qualified'.    
14794
14795         * reflection.h
14796         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
14797
14798         * reflection.c (mono_reflection_parse_type): Parse the new type
14799         name format.
14800
14801 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14802
14803         * icall.c: no need to convert from utf16 to utf8 and then back again
14804         after the call to GetLogicalDrives.
14805
14806 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14807
14808         * icall.c: frombase64. Fix problems exposed by new tests.
14809
14810 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14811
14812         * icall.c: added internal calls for converting char [] and strings in
14813         base64 into byte [].
14814
14815 2005-06-10  Martin Baulig  <martin@ximian.com>
14816
14817         * class.c (mono_class_create_generic_2): Read the nested classes
14818         from the metadata rather than from `gklass->nested_classes' since
14819         `gklass' might not be initialized yet.
14820
14821 2005-06-09  Duncan Mak  <duncan@novell.com>
14822
14823         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
14824         all public headers. Fixes #74919.
14825
14826 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
14827
14828         * domain.c: The key for proxy_vtable_hash is now a pointer
14829         array. Added new GHashFunc and GCompareFunc functions for this.
14830
14831         * class.h: The list of interfaces in MonoRemoteClass is known in
14832         advance and can't grow (we create a new MonoRemoteClass if needed),
14833         so now the interface array can be allocated together with
14834         MonoRemoteClass.
14835         
14836         * object.c: Added a new method create_remote_class_key.
14837         Fixed mono_remote_class so it does not depend on
14838         mono_upgrade_remote_class.
14839         Removed extend_interface_array.
14840         Added new method clone_remote_class(), which makes a copy of a remote
14841         class and adds a new interface or class to it.
14842         mono_upgrade_remote_class() now creates a new remote class (or gets
14843         it from the cache) if an vtable upgrade is needed. In this way
14844         we make sure that other objects sharing the same remote class
14845         don't get the new vtable with unwanted interfaces.
14846         
14847         * object-internals.h:
14848         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
14849         
14850         * marshal.c: Track changes in mono_upgrade_remote_class().
14851
14852 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
14853         * icall.c: Add runtime methods for obtaining members of inflated
14854         class, which were created from supplied non-inflated members. It
14855         is used in internal Get{Method,Constructor,Field} methods in
14856         System.Type
14857
14858 2005-06-09  Martin Baulig  <martin@ximian.com>
14859
14860         * reflection.c
14861         (mono_reflection_bind_generic_method_parameters): Fix #75169.
14862
14863 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14864         * reflection.c (mono_image_basic_init): Define
14865         Version in MonoDynamicAssembly. 
14866         
14867 2005-06-08  Martin Baulig  <martin@ximian.com>
14868
14869         Fix #75136.
14870
14871         * loader.c
14872         (mono_method_signature_full): New public method; takes a
14873         `MonoGenericContext *'.
14874         (find_method): Use mono_method_signature_full() and pass the
14875         klass'es context to it.
14876
14877         * class.c (mono_class_is_inflated_method): Use
14878         mono_method_signature_full() and pass the context to it.
14879
14880 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
14881
14882         * object.c: add proper locking in mono_remote_class_vtable(),
14883         fixes possible memory corruption.
14884
14885 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
14886
14887         * marshal.c (mono_remoting_marshal_init): set
14888         initialized after initialization.
14889
14890 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
14891
14892         * locales.c : hush.
14893
14894 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
14895
14896         * object.c (extend_interface_array): fix really silly
14897         memory corrupting / comparison bug.
14898
14899 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14900
14901         * reflection.c: Functions added to support the creation
14902         of CustomAttributeData, which includes Attribute data
14903         used by ReflectionOnly methods.
14904
14905         * reflection.h:  mono_reflection_get_custom_attrs_data and
14906          mono_custom_attrs_data_construct added (functions exposed).
14907
14908          * icall.c: Added mono_reflection_get_custom_attrs_data
14909          as icall.
14910         
14911 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
14912
14913         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
14914         lupus's request.
14915
14916 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
14917
14918         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
14919
14920         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
14921         dynamic DllImportAttribute.
14922
14923         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
14924         dynamic DllImportAttribute.
14925
14926         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
14927         Fixes #75162.
14928
14929 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14930
14931         * threads.c: avoid segfault when an unstarted thread is aborted.
14932
14933 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
14934
14935         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
14936         Returns the name and version of the runtime for reporting.
14937
14938 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14939
14940         * appdomain.c: bump corlib version.
14941         * object-internals.h: new field in MonoReflectionAssembly.
14942
14943 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14944
14945         * object-internals.h: Carlos forgot to add this field.
14946
14947 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
14948
14949         * icall.c: Added create_version to create instances
14950         of Version of MonoReflectionAssemblyName. This change helps
14951         the AssemblyName tests to keep running fine.
14952         
14953 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
14954   
14955         * object.c (mono_method_return_message_restore): A somehow less
14956         intrusive fix for #75138.
14957
14958 2005-06-03  Raja R Harinath  <rharinath@novell.com>
14959
14960         * object.c (mono_method_return_message_restore): Fix computation
14961         of expected number of out args.
14962
14963 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
14964
14965         * reflection.c (mono_image_get_method_info): Fix the case when the
14966         charset is empty.
14967
14968 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
14969
14970         * object.c: Added missing null check in
14971           mono_method_return_message_restore.
14972
14973 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
14974
14975         * reflection.c (mono_image_get_method_info): Handle the case when
14976         dllentry is empty.
14977
14978 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
14979
14980         * object.c: When creating the vtable for a proxy, take into account
14981         all inherited interfaces, not only the ones registered in
14982         iclass->interfaces. This fixs bug #74996.
14983         Also, in mono_method_return_message_restore, verify that the array
14984         of out args has the expected lengh.
14985
14986 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14987
14988         * socket-io.c: update the timeout in Poll when the call is interrupte.
14989
14990 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14991
14992         * socket-io.c: support abort/suspend in Select_internal after last
14993         change.
14994
14995 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14996
14997         * threadpool.c: remove warning.
14998
14999 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15000
15001         * icall.c:
15002         * socket-io.[ch]: Select_internal uses poll() now when available, thus
15003         removing the 1024 limit from select(). Runtime part of the fix for
15004         bug #71203.
15005
15006 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15007
15008         * socket-io.c: when resolving the addresses for the same
15009         host returned by gethostname(), get the local IPs from the interface
15010         list. Loopback addresses are discarded if the are interfaces up with
15011         non-loopback ones. Fixes bug #63265.
15012
15013 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
15014
15015         * appdomain.c, verify.c, object-internals.h, reflection.c:
15016         bumped corlib number to 36, and added new extra_flags field
15017         to ReflectionMethodBuilder and friends.  Fixes #75060.
15018
15019 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
15020
15021         * gc.c: register a new weak link only if the object is non-null
15022         (fixes bug#75047).
15023
15024 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15025
15026         * culture-info.h : short time pattern too.
15027
15028 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
15029
15030         * culture-info.h : expand long time pattern string length.
15031
15032 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
15033
15034         * culture-info-table.h : update (more French date format; #72788).
15035
15036 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
15037
15038         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
15039         the method is static. Fixes #75029.
15040
15041 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
15042
15043         * reflection.c: Update the table_idx field of method builders after
15044         saving the module, since it can change. This is a workaround for
15045         bug #74914. 
15046
15047 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
15048
15049         * culture-info-table.h : update (additional French date format).
15050
15051 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
15052
15053         * icall.c (ves_icall_type_Equals): Revert last change.
15054         
15055         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
15056
15057         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
15058
15059 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
15060
15061         * class-internals.h: Added executioncontext_class field to 
15062         MonoDefaults structure.
15063         * domain.c: Cache System.Threading.ExecutionContext class in 
15064         mono_defaults.
15065         * object.c: Capture the ExecutionContext for asynchroneous calls in
15066          mono_async_result_new.
15067         * object-internals.h: Added execution_context and original_context 
15068         fields to MonoAsyncResult. Added execution_context to MonoThread.
15069         * security-manager.c|.h: Added mono_get_context_capture_method to 
15070         return the capture method (if required by the security manager or by
15071         the framework version used).
15072         * threadpool.c: Apply capture (if present) ExecutionContext in 
15073         mono_async_invoke and revert to original context after it completes.
15074
15075 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
15076
15077         * culture-info-table.h : updated (real hacky solution for zh-CHT).
15078
15079 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
15080
15081         * culture-info-table.h : zh-CHT related workaround.
15082
15083 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
15084
15085         * marshal.c (emit_marshal_custom): Add some error checking and call the
15086         methods in the ICustomMarshaler interface. Fixes #74875.
15087         
15088         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
15089         native->managed wrappers.
15090
15091 2005-05-12  Martin Baulig  <martin@ximian.com>
15092
15093         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
15094         here and use the loader lock.
15095
15096         * mono-debug.c: Properly lock when the debugger is not attached.
15097         (mono_debug_init): Release the initial lock if we're not running
15098         in the debugger.
15099
15100 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
15101
15102         * marshal.c (emit_marshal_custom): Pass through NULL values without
15103         calling the custom marshalling routines.
15104
15105         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
15106         conversion in structures. Fixes #74882.
15107
15108 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
15109
15110         * culture-info-table.h : zh-* cultures were missing.
15111
15112 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
15113
15114         * threads.c: Added a new event background_change_event which is signaled
15115         when a thread changes its background mode.
15116         Moved here several checks previously done in managed code. The checks
15117         require the thread lock, and using the thread lock in managed code
15118         can result in deadlocks.
15119         Merged Start_internal and Thread_internal into a single method. Now 
15120         Thread_internal does all work of creating and starting a thread.
15121         Added icalls for setting and getting the state of the object. Moved from
15122         managed code to avoid locking there.
15123         Added wait_for_tids_or_state_change() which is called instad of
15124         wait_for_tids when waiting for non-backround threads to end. This method
15125         will return if one of the threads ends or the background_change_event
15126         is signaled.
15127         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
15128         the background mode. This method signals the background_change_event
15129         event.
15130         * icall.c:
15131         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
15132         removed Start_internal.
15133         
15134 2005-05-11  Martin Baulig  <martin@ximian.com>
15135
15136         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
15137         to order of some fields to get proper alignment on 64-bit machines.
15138
15139 2005-05-11  Martin Baulig  <martin@ximian.com>
15140
15141         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
15142         changes as they're broken and completely fuck up the debugger.
15143
15144         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
15145
15146 2005-05-10  Martin Baulig  <martin@ximian.com>
15147
15148         * reflection.c (mono_reflection_generic_class_initialize): Don't
15149         call mono_class_setup_parent() here.
15150
15151 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15152
15153         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
15154         send/receive timeout use an integer in milliseconds. We were using a
15155         struct timeval.
15156
15157 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15158
15159         * locales.c:
15160         (internal_get_cultures): reserve the first slot of the array for the
15161         InvariantCulture, which will be filled in managed code.
15162
15163 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
15164
15165         * reflection.c (mono_image_fill_module_table): Initialize the
15166         GENERATION field as well.
15167
15168 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15169
15170         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
15171         Monitor.Enter on the object.
15172
15173 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
15174
15175         * threads.c: Enable the wait for running threads when exiting.
15176         * icall.c: Suspend all threads before exiting.
15177
15178 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * assembly.c (mono_assembly_load_reference): Fix warning.
15181
15182 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15183
15184         * threadpool.c: changed the default number of threads per cpu. From now
15185         on, the default will be 20 + (5 * number of cpus) instead of 50.
15186
15187 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
15188
15189         * loader.c (mono_method_get_signature_full): Add locking here.
15190
15191 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
15192
15193         * appdomain.c: Moved methods for parsing and freeing assembly
15194         names to assembly.c.
15195         * assembly.c, domain-internals.h: Created public methods for parsing
15196         assembly names. Fixed mono_assembly_load_with_partial_name:
15197         it now finds the best match, taking into account the version,
15198         token and culture specified in the partial name. Also return
15199         the latest version if no version information is specified.
15200
15201 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
15202
15203         * threadpool.c: replace check for SocketAsyncCall class.
15204
15205 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15206
15207         * threadpool-internals.h:
15208         * Makefile.am: added threadpool-internals.h
15209
15210         * threadpool.c: call mono_unhandled_exception on exceptions not handled
15211         that happen in threadpool threads (tested on MS).
15212         (mono_thread_pool_remove_socket): new function that dispatch any pending
15213         AIO call on a socket that is closing. By now only epoll really needs it,
15214         as select/poll wake up when the socket closes.
15215
15216
15217         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
15218
15219 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
15220
15221         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
15222
15223 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
15224
15225         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
15226
15227 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
15228
15229         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
15230         has an abort request, convert it into a suspend request.
15231
15232 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
15233
15234         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
15235         warning for the usage of `UnmanagedFunctionPointerAttribute' which
15236         is not supported yet.
15237
15238 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15239
15240         * image.c: register assemblies loaded from data (bundles) in the loaded
15241         assemblies hash. Fixes bug #74772.
15242
15243 2005-04-29  Martin Baulig  <martin@ximian.com>
15244
15245         * class.c (mono_type_get_name_recurse): Update to the new naming
15246         schema from the latest .NET 2.x beta2.
15247         (mono_class_setup_vtable_general): If we're a generic instance,
15248         copy the vtable from our generic type definition and inflate all
15249         the methods in it.
15250
15251         * loader.c (find_method): Update to the new naming schema from the
15252         latest .NET 2.x beta2.
15253
15254 2005-04-29  Raja R Harinath  <harinath@gmail.com>
15255
15256         * class.c (mono_class_init): Add a mono_loader_unlock to the
15257         #74734 fix.
15258
15259 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
15260
15261         * icall.c (ves_icall_System_Environment_Exit): Remove the 
15262         suspend_all_other_threads () call for the time being, since it can hang.
15263
15264         * threads.c (mono_thread_manage): Similarly, disable the waiting for
15265         the background threads to exit, since it can also hang.
15266
15267         * class.c (mono_class_init): Applied patch from Ankit Jain 
15268         (radical@gmail.com). Avoid pending init errors when a field refers
15269         to a nested class using a typeref. Fixes #74734.
15270
15271         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
15272         this for dynamic modules.
15273
15274 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15275
15276         * threads.c: don't wait for threads that are in the process of aborting
15277         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
15278         and waiting for background threads to finish. This makes xsp and
15279         mod-mono-server exit without random length delays and/or hangs.
15280
15281 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15282
15283         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
15284
15285 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
15286
15287         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
15288         dynamic types to prevent infinite loops. Fixes #74727.
15289
15290         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
15291         ..._is_assignable_to.
15292
15293 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
15294
15295         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
15296
15297 2005-04-25  Martin Baulig  <martin@ximian.com>
15298
15299         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
15300
15301         * domain.c
15302         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
15303
15304         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
15305
15306         * reflection.c (build_compressed_metadata): Set metadata header
15307         version to 2.0.
15308
15309 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
15310
15311         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
15312         number into an integral and a decimal part. Fixes #70473.
15313
15314         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
15315
15316 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
15317
15318         * culture-info-table.h : reflected the latest locale-builder output.
15319
15320 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15321
15322         * threadpool.c: check for SuspendRequested too when deciding if
15323         mono_thread_interruption_checkpoint should be called.
15324
15325 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15326
15327         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
15328         * threads.c: remove interruption_mutex and use Interlocked instead. When
15329         suspending all the threads, wait for all the suspended events at once.
15330         If we're shutting down and get an APC that is going to be queued,
15331         call mono_thread_execute_interruption immediately, as the thread might
15332         be sleeping on a pthread condition or mutex.
15333
15334         * icall.c: call mono_runtime_set_shutting_down before suspending the
15335         threads.
15336
15337         Fixes bug #74693. And now xsp is happier when exiting.
15338
15339 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
15340
15341         * loader.c (mono_stack_walk): Fix #74690.
15342
15343 2005-04-22  Martin Baulig  <martin@ximian.com>
15344
15345         * mono-debug.h (MonoDebugMethodJitInfo): Added
15346         `MonoDebugMethodJitInfo *jit'.
15347
15348         * mono-debug.c (mono_debug_read_method): Cache the
15349         MonoDebugMethodJitInfo in `address->jit'.
15350         (mono_debug_free_method_jit_info): New public method.
15351
15352 2005-04-22  Martin Baulig  <martin@ximian.com>
15353
15354         * class.c (mono_class_is_assignable_from): Disallow
15355         type parameter -> interface.
15356
15357 2005-04-21  Dick Porter  <dick@ximian.com>
15358
15359         * threads.c (mono_thread_create): Turn an assertion into an error.
15360
15361 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
15362
15363         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
15364         
15365         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
15366         Fix some gcc 4.0 warnings.
15367
15368 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
15369
15370         * file-io.c: fix alt dir separator char on unix systems
15371         and cleanup (fixes bug #71214).
15372
15373 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
15374
15375         * marshal.c: Use CALLVIRT instead of CALL when dispatching
15376         a call to a remote domain, since the method may be an
15377         interface method in the client domain. This fixes bug #74192.
15378
15379 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15380
15381         * threadpool.c: recv/send are now performed before going back to managed
15382         code to save one transition.
15383
15384 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15385
15386         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
15387
15388         * metadata/threadpool.c: removed hack to workaround the bug above.
15389
15390         Fixes bug #74618.
15391
15392 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
15393
15394         * reflection.c reflection.h: Fix handling of parameter defaults in
15395         dynamic methods. Also fixes handling of parameter attributes.
15396         Fixes #74609.
15397
15398         * mono-debug.c (mono_debug_close_image): Fix warning.
15399
15400 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15401
15402         * socket-io.h: replaced old unused field with new 'blocking'.
15403         * threadpool.c: restore socket blocking state on windows(tm).
15404
15405 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
15406
15407         * icall.c: don't return the codebase in the AssemblyName[] returned by
15408         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
15409         * object-internals.h: Removed FIXME (fields were presents) and fixed
15410         versioncompat declaration.
15411
15412 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15413
15414         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
15415         not closed, so don't cleanup when it happens.
15416
15417 2005-04-13  Chris Toshok  <toshok@ximian.com>
15418
15419         * mono-debug-debugger.h: change prototype for
15420         mono_debugger_lookup_type.
15421
15422         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
15423         this function, although it should probably be named
15424         mono_debugger_init_type.
15425
15426 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15427
15428         * threadpool.c: fix non-AIO case.
15429
15430 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
15431
15432         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
15433         the built-in profiler to measure just JIT compilation times.
15434
15435 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15436
15437         * threadpool.c: the epollfd might be closed by another thread at
15438         any time, so ignore EBADF at treat it as a "we're closing" sign.
15439
15440 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15441
15442         * threadpool.c: release the semaphores with a count equals to the number
15443         of working threads in both IO and regular pools. Fixed typo that messed
15444         up the count of IO pool threads. Don't initialize the pipe handles if
15445         we're using epoll.
15446
15447 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15448
15449         * threadpool.c: some systems don't like a NULL when deleting the socket
15450         from epoll.
15451
15452 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15453
15454         * threadpool.c: fix semaphore allocation.
15455
15456 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15457
15458         * threadpool.c: added epoll() based implementation for asynchronous IO
15459         that is used instead of the default poll() when available.
15460         It can be disabled by setting MONO_DISABLE_AIO.
15461
15462 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15463
15464         * threadpool.c: windows needs 'closesocket' and instead of returning
15465         0 when the stream is closed while in select, it returns -1. Fixes bug
15466         #74573.
15467
15468 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
15469
15470         * class.c (class_compute_field_layout): Fix the regression caused by
15471         the previous try.
15472
15473 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15474
15475         * threadpool.c: separate pool for socket async. IO.
15476         * threadpool.h: mono_max_worker_threads is not a global any more.
15477
15478 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
15479
15480         * class.c (class_compute_field_layout): Fix #74549.
15481
15482 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15483
15484         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
15485         use 2 connected sockets instead.
15486
15487 2005-04-08  Miguel de Icaza  <miguel@novell.com>
15488
15489         * mono-config.c: Add new entry point for mkbundle
15490         mono_config_parse_memory. 
15491
15492 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15493
15494         * threadpool.c: removed another unused function.
15495
15496 2005-04-08  Ankit Jain  <radical@corewars.org>
15497
15498         * reflection.c (get_default_param_value_blobs): Add 'types'
15499         parameter to get the types encoded in the constant table.
15500         (mono_param_get_objects): Use the type from the constant table,
15501         not the type of the parameter, when creating default values.
15502         Handle null default values correctly.
15503
15504 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15505
15506         * file-io.c:
15507         * file-io.h:
15508         * threadpool.c:
15509         * threadpool.h:
15510         * icall.c:
15511         * socket-io.c: removed dead code for async IO.
15512
15513 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15514
15515         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
15516
15517         * threadpool.c: intercept socket async. calls and pass them to a thread
15518         that is polling and dispatching the job items to the threadpool as
15519         socket become ready. Fixes bugs #71217, #71933.
15520
15521         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
15522         between char and short/ushort arrays.
15523
15524         * socket-io.c: remove dead code.
15525
15526 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
15527
15528         * locales.c,
15529           icall.c : removed InternalToUpper_Comp() and
15530           InternalToLower_Comp().
15531
15532 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
15533
15534         * char-conversions.h : The tables were incorrectly generated. Should
15535           be generated against invariant culture.
15536
15537 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
15538
15539         * object.c (mono_runtime_invoke_array): Fix return value when 
15540         passing pre-created valuetype objects to ctors.
15541
15542         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
15543         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
15544         Fixes #74338.
15545
15546 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
15547
15548         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
15549         only used with --security and hides the wrong corlib version error.
15550
15551 2005-03-30  Joshua Tauberer  <tauberer@for.net>
15552
15553         * class.c: Changed mono_class_name_from_token so that types
15554         outside of a namespace don't have an initial period.  Improved
15555         the g_warning message used in _mono_class_get when loading
15556         fails.
15557         * assembly.c: In mono_assembly_load_reference, when an assembly
15558         can't be found, "No such file or directory" is misleading and
15559         unhelpful because a few paths were checked for the presence of
15560         the assembly.  When that happens (ENOENT), display a nicer
15561         message indicating the directories that were searched.  In all
15562         cases, the warning is made easier to read for non-hackers.
15563
15564 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
15565
15566         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
15567         project/solution.
15568         * appdomain.h|domain.c: Removed inline from functions.
15569         * appdomain.c: Reduced warnings when compiling on windows.
15570         * icall.c: Fixed output_debug declaration to gunichar2*.
15571         * mono-config.c: Reduced warnings when compiling on windows.
15572         * rand.c: Added missing "windows.h". Added missing return value.
15573         * rawbuffer.c: Added missing winsock2.h for windows.
15574         * sysmath.h: Added mono-compiler.h header to allow/ease 
15575         compilation with non-GCC compilers.
15576         * threads.c: Fixed declarations to compile with VS.NET C compiler.
15577         Removed cast warnings.
15578
15579         Adapted from the work of J Lothian (for VC6).
15580
15581 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
15582
15583         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
15584         from default_path.
15585
15586 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
15587
15588         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
15589         the 2.0 profile.
15590
15591 2005-03-27  Raja R Harinath  <harinath@gmail.com>
15592
15593         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
15594         has to be in $(exec_prefix).  $(prefix) is for arch-independent
15595         stuff, and it would probably use $(prefix)/share rather than
15596         $(prefix)/lib.
15597
15598 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15599
15600         * console-io.c: added 2 includes that might be missing.
15601
15602 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
15603
15604         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
15605         profile.
15606
15607         * reflection.c (create_custom_attr): Allocate the params array using
15608         alloca so it gets GC tracking.
15609
15610 2005-03-23  Chris Toshok  <toshok@ximian.com>
15611
15612         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
15613         out some spew.
15614
15615 2005-03-24  Raja R Harinath  <rharinath@novell.com>
15616
15617         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
15618         changes to pick up any changes in prefix, etc.
15619
15620 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15621
15622         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
15623         
15624         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
15625         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
15626
15627 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * class-internals.h object-internals.h class.c reflection.c: Extend the
15630         mono_lookup_dynamic_token () function to return the class of the
15631         token as well. 
15632
15633         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
15634         well. Fixes #73848.
15635
15636 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
15637
15638         * security-manager.c: Skip inheritance checks for intra-corlib
15639         class inheritance and method overrides. This skips a lot of checks
15640         and (anyway) permissions cannot work until corlib is loaded.
15641
15642 2005-03-23  Martin Baulig  <martin@ximian.com>
15643
15644         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
15645         MONO_TYPE_GENERICINST.  
15646
15647 2005-03-23  Martin Baulig  <martin@ximian.com>
15648
15649         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
15650
15651 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
15652
15653         * class.c: added locking comments to some functions.
15654         Cache the interface offsets arrays (saves about 20 KB
15655         of runtime memory in a typical app).
15656         Reduce the time overhead in mono_class_setup_supertypes ().
15657
15658 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
15659
15660         * icall.c: speedup and fix leaks in GetMethodsByName and
15661         GetPropertiesByName.
15662
15663 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
15664
15665         * reflection.c: some locking fixes.
15666
15667 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
15668
15669         * metadata.c: added missing break in case statement.
15670
15671 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
15672
15673         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
15674         typedbyref return values. Fixes #73941.
15675
15676 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
15677
15678         * security-manager.c|h: Added demandunmanaged method and 
15679         suppressunmanagedcodesecurity class to MonoSecurityManager.
15680         Renamed aptc class to allowpartiallytrustedcallers.
15681
15682 2005-03-17  Martin Baulig  <martin@ximian.com>
15683
15684         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
15685
15686 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15687
15688         * file-io.c: disabled file async. IO using aio_*. It uses the
15689         threadpool now. Workaround for bug #73718.
15690
15691 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
15692
15693         * assembly.h, mono-config.c: added code to deal with bundled configs
15694         for bundled assemblies.
15695
15696 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
15697
15698         * *.c, private.h: cleanup, removing old private.h header file.
15699
15700 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
15701
15702         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
15703         and throw_on_unmappable_char attributes.
15704
15705 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
15706
15707         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
15708         _ProcessName_internal.
15709
15710 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
15711
15712         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
15713         #73631.
15714
15715         * icall.c threads.c threads-types.h: Remove slothash icalls as they
15716         are no longer used.
15717
15718 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
15719
15720         * object.c (compute_class_bitmap): Add support for generics. Fixes
15721         #73527.
15722
15723 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
15724
15725         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
15726
15727 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15728
15729         * filewatcher.c: commented out the code for windows watcher, as we don't
15730         use it (we use the managed implementation instead).
15731
15732 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
15733
15734         * object-internals.h (MonoThread): Remove 'unused1' field.
15735
15736         * appdomain.c: Bump corlib version.
15737
15738         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
15739
15740         * reflection.c (mono_reflection_create_runtime_class): Remove the
15741         AssemblyBuilder.Save optimization since it causes too many problems.
15742
15743 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
15744
15745         * exception.c|h: Added mono_get_exception_reflection_type_load to
15746         create a ReflectionTypeLoadException object.
15747         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
15748         to return NULL is a InheritanceDemand fails during reflection. Updated
15749         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
15750         ReflectionTypeLoadException if an InheritanceDemand fails during 
15751         reflection. Added icall mapping for GetLinkDemandSecurity.
15752         * security-manager.c|h: Added ves_icall_System_Security_
15753         SecurityManager_GetLinkDemandSecurity internal call to return the
15754         class and methods permissions set for a LinkDemand. Removed unused
15755         fields in MonoSecurityManager.
15756
15757 2005-03-10  Martin Baulig  <martin@ximian.com>
15758
15759         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
15760         it's a generic instance.
15761
15762 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
15763
15764         * reflection.c (mono_get_object_from_blob): Applied patch from
15765         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
15766
15767         * class.c (mono_class_is_assignable_from): Another try at fixing 
15768         #73469 without breaking anything.
15769
15770 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
15771
15772         * class.c: (mono_class_is_assignable_from): Revert the last changes
15773         since they don't work with generics.
15774         
15775         * class.c (mono_class_is_assignable_from): Fix build bustage.
15776
15777         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
15778         the managed IsAssignableFrom method. Fixes #73469.
15779
15780         * reflection.c (mono_reflection_call_is_assignable_from): New helper
15781         function.
15782
15783 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
15784
15785         * object.c (mono_load_remote_field_new): Fix returning uninitialized
15786         memory when the remoting callback does not sets the out arguments.
15787         Fixes #73007.
15788
15789         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
15790         by mistake.
15791
15792         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
15793
15794         * object-internals.h (MonoStackFrame): Sync with managed object layout.
15795
15796         * appdomain.c: Bump corlib version.
15797
15798 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
15799
15800         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
15801         function.
15802
15803         * threads.c (mono_thread_attach): Detect threads which are not started
15804         by the GC pthread wrappers.
15805
15806 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
15807
15808         * icall.c: Added new icall for RNG.
15809         * rand.c|h: Added new icall to open the RNG. This allows to share a 
15810         single handle on Linux to access /dev/urandom and fix #73183.
15811
15812 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
15813
15814         * object.c: setting the new vtable in a transparent proxy object must
15815         not change the GC descriptor.
15816
15817 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
15818
15819         * object.c: fixed compilation without GCJ support.
15820         * reflection.c: for runtime-created types ensure klass->has_references
15821         is correct (bug #73215).
15822
15823 2005-03-02  Martin Baulig  <martin@ximian.com>
15824
15825         * class.c (mono_class_is_assignable_from): Make this work if
15826         `oklass' is a generic instance; fixes #72831.
15827
15828 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
15829
15830         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
15831         with hasthis set.
15832         
15833         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
15834
15835         * marshal.c: Reorganize native->managed marshalling code to also use
15836         the emit_marshal_... functions.
15837
15838 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
15839
15840         * object.c: typed allocs have issues with bitmap sizes > 30,
15841         so check for max_set >= 30.
15842
15843 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
15844
15845         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
15846         managed code. Fixes #73012.
15847
15848         * metadata.h (MonoMarshalSpec): Add elem_mult field.
15849
15850         * metadata.c reflection.c: Load/Emit elem_mult as well.
15851         
15852         * metadata.h (MonoMarshalSpec): Add comment.
15853
15854         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
15855
15856         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
15857         num_elem to -1 if not given.
15858
15859         * object-internals.h (MonoReflectionMarshal): Add has_size field.
15860
15861         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
15862         given values.
15863
15864 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
15865
15866         * null-gc.c (mono_gc_free_fixed): Was not compilable.
15867
15868 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
15869
15870         * reflection.c (encode_marshal_blob): Encode param_num field as well.
15871
15872         * object-internals.h (MonoReflectionMarshal): Add param_num field.
15873
15874 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
15875
15876         * object.c: generalized the reference bitmap creation
15877         and added hooks for the new GC.
15878         * class-internals.c: removed the gc_bitmap field from MonoClass.
15879
15880 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15881
15882         * domain.c: help the compiler to produce better code
15883         in mono_jit_info_table_find ().
15884
15885 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
15886
15887         * object.c: make all allocations look typed.
15888
15889 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
15890
15891         * socket-io.c: load Mono.Posix if it's not loaded already
15892         (fixes bug#73033).
15893
15894 2005-02-24  Martin Baulig  <martin@ximian.com>
15895
15896         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
15897         * reflection.c (dup_type): Likewise.
15898
15899 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
15900
15901         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
15902         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
15903
15904 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15905
15906         * domain.c, threads.c, object-internals.h: make the critical thread
15907         local vars use the fast access mode (even when we're compiled in
15908         a lib). Provide accessors to be used by the jit during codegen.
15909
15910 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15911
15912         * appdomain.c: Changed hook functios behavior to include
15913         support for the reflection only assemblies. Some icalls were changed
15914         to support the mentioned assemblies too. Signatures of static methods
15915         try_assembly_resolve and real_load now have an additional parameter:
15916         refonly.
15917
15918         * assembly.c: General changes to mono_assembly_ methods to support
15919         reflection only api. Functions mono_assembly_open, mono_assembly_load,
15920         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
15921         suffix, to support an additional gbool parameter to specify whether
15922         the assembli is reflection only or not. Created some new hook functions 
15923         to add support for reflection only assemblies. Signatures of static 
15924         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
15925         have now an additional parameter: refonly.
15926
15927         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
15928         indicating whether the assembly is reflection only or not.
15929
15930         * exception.c: Add mono_get_exception_invalid_operation.
15931
15932         * icall.c: Throw an InvalidOperationException when trying to invoke
15933         a property/method/event, or trying to set/get the value of a field.
15934         Also add an icall to retrieve the ref_only flag to the
15935         MonoReflectionAssembly.
15936
15937 2005-02-23  Chris Toshok  <toshok@ximian.com>
15938
15939         Part of fix for #72827.
15940         * mono-debug.c (mono_debug_add_method): add lexical block data to
15941         the info we write.  Kind of a hack at the moment - we copy the
15942         lexical block info from the MonoDebugMethodInfo to the
15943         MonoDebugMethodJitInfo here, before writing it.
15944         (mono_debug_read_method): read the lexical block info.
15945
15946         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
15947
15948         * debug-mono-symfile.h: add lexical block support.
15949
15950         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
15951         support.
15952
15953 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15954
15955         * loader.c (mono_lookup_pinvoke_call): Fix warning.
15956
15957         * object.c (mono_runtime_free_method): Call mono_free_method () and
15958         put the TODOs there.
15959
15960         * loader.c (mono_free_method): Free up most memory allocated for 
15961         dynamic methods.
15962
15963 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
15964
15965         * reflection.c: properly flag a Type argument to a
15966         named custom attr value (bug #72248).
15967
15968 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
15969
15970         * reflection.c: reduce code duplication in named custom
15971         attribute encoding.
15972
15973 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
15974
15975         * reflection.c: properly encode custom attrs of type object
15976         (bug #72649).
15977
15978 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
15979
15980         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
15981
15982 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
15983
15984         * socket-io.c: load System.dll if it's not loaded already
15985         (bug #72850 and #70477).
15986
15987 2005-02-21  Martin Baulig  <martin@ximian.com>
15988
15989         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
15990         generic instances.
15991
15992 2005-02-21  Martin Baulig  <martin@ximian.com>
15993
15994         * reflection.c (mono_image_build_metadata): We also need to
15995         "fixup" the MethodImpl table after we computed the final method
15996         indices.  Call fixup_methodimpl() to do that.
15997         (fixup_methodimpl): New private method.
15998
15999 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
16000
16001         * assembly.c: special case mscorlib.dll (bug#72536),
16002         patch from Carlos Alberto Cortez.
16003
16004 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16005
16006         * threads-types.h threads.c: Fix build bustage.
16007
16008         * threads.c: Use a union for long<->double conversions.
16009
16010         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
16011         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
16012
16013         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
16014         containing the checkpoint call with NOT_TAKEN.
16015         
16016         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
16017         checkpoint before pushing the arguments, so they won't have to be
16018         spilled to stack.
16019
16020 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
16021
16022         * domain.c, assembly.c, domain-internals.h: make some data
16023         const and relocation-free.
16024
16025 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16026
16027         * object.c, appdomain.c, class-internals.h: introduce the
16028         MonoClassRuntimeInfo structure to hold the info needed to
16029         use a class at runtime. Made mono_class_vtable() lock-free
16030         for all the appdomains.
16031
16032 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
16033
16034         * metadata-internals.h, image.c: introduce a per-image mempool to
16035         be used for memory that has the same lifetime as the image.
16036
16037 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
16038
16039         * domain.c: In mono_init_internal(), instead of selecting the first
16040         runtime version supported by an executable, get a list of all
16041         supported versions and select the one for which an mscorlib exists
16042         (since even if the runtime supports a given version, it doesn't mean
16043         that the framework for that version is installed).
16044         Modified get_runtimes_from_exe to support this behavior.
16045         In supported_runtimes, added information about additional system
16046         assembly versions.
16047         
16048         * assembly.c: Added support for more than one system assembly version
16049         per runtime version. Updated the assembly list.
16050         In mono_assembly_remap_version, removed the initial version check,
16051         since we don't know to which version we need to compare until we
16052         get the version set on which the assembly is based.
16053         Moved the code for loading corlib into the new method
16054         mono_assembly_load_corlib(), so it can be used by the initialization
16055         code.
16056         
16057         * domain-internals.h: Updated data structures and added declaration
16058         for mono_assembly_load_corlib.
16059
16060 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16061
16062         * reflection.c (resolve_object): Fix the creation of the signature in 
16063         the SignatureHelper case.
16064
16065         * assembly.c (mono_assembly_remap_version): Fix binary search.
16066         
16067 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
16068  
16069         * class.c: Added inheritance check when a method is overloaded (from a
16070         virtual method or when implementing an interface) and when a class is
16071         inherited. Added functions to set a failure for a class and to 
16072         retreive the exception from a failure.
16073         * class-internals.h: Added fields to MonoClass to keep the exception
16074         information status for inheritance (or other exceptions) to be thrown
16075         later (i.e. not at load time).
16076         * object.c: Throw the inheritance SecurityException when a type is to 
16077         be created with either class or method inheritance violations.
16078         * reflection.c|h: Fix when getting declsec from a class. Removed 
16079         unrequired code for class. Improved sanity in parameter naming.
16080         * security-manager.c|h: Added functions to check for class and method
16081         inheritance.
16082
16083 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16084
16085         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
16086         and has_finalize in dynamic types as well.
16087
16088 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
16089
16090         * culture-info-table.h : fixed currency format for en-GB (and so on).
16091
16092 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
16093
16094         * gc.c: ensure the GC handles never have 0 as a value.
16095
16096 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
16097
16098         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
16099         a pointer to a struct to unmanaged code. Fixes #72625.
16100
16101 2005-02-16  Martin Baulig  <martin@ximian.com>
16102
16103         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
16104
16105 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
16106
16107         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
16108
16109 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
16110
16111         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
16112
16113         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
16114         UnmanagedFunctionPointerAttribute, use it for determining calling convention
16115         etc. Fixes #71471.
16116
16117         * reflection.c (mono_custom_attrs_get_attr): New helper function.
16118
16119         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
16120
16121 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
16122
16123         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
16124         changes to make the current context a field in MonoThread.
16125
16126 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
16127
16128         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
16129         the last change.
16130         
16131         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
16132         extracted from mono_marshal_get_native_wrapper.
16133
16134         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
16135         to create wrappers around native functions.
16136
16137         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
16138         delegates for arbitrary function pointers. Fixes #71472.
16139
16140 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
16141
16142         * threads.c: cleaned up the code a little.
16143
16144 2005-02-15  Martin Baulig  <martin@ximian.com>
16145
16146         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
16147         the data table.
16148
16149         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
16150         allocate larger chunks if needed.
16151
16152 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16153
16154         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
16155         in by mistake.
16156
16157 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
16158
16159         * domain.c: keep the domains in an array and ensure the domain ids
16160         are kept small, so they can be used as indexes to domain-specific data
16161         with a small memory overhead.
16162
16163 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * icall.c: Handle byref types in Type icalls. Fixes #72544.
16166
16167 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
16168
16169         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
16170
16171 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16172
16173         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
16174
16175         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
16176         values.
16177
16178         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
16179         
16180 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16181
16182         * domain-internals.h: add the hashtable here.
16183
16184         * class-internals.h: Remove `info' from MonoMethod
16185
16186         * domain.c: Add a new hashtable, jit_trampoline_hash
16187
16188 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16189
16190         * object.c: don't set the value of static fields
16191         (fixes bug#72494).
16192
16193 2005-02-11  Martin Baulig  <martin@ximian.com>
16194
16195         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
16196         (mono_debug_add_method): Silently ignore the method if it's too big.
16197         (mono_debug_add_type): Likewise.
16198
16199 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
16200
16201         * threads.c, appdomain.c: remove #ifdefs from the code.
16202
16203 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16204
16205         * metadata-internals.h: Added flags to MonoAssembly to cache the most
16206         common security informations. This allows us to stay in unmanaged code
16207         when doing LinkDemand and it's special cases (except for the first 
16208         time for initialization). The flags a very much used with --security.
16209         * reflection.c|h: Added code to get declarative security attributes 
16210         for LinkDemand and InheritanceDemand. This required to refactor the
16211         existing code for Demand.
16212         * security-manager.c|h: Added new method fields for the special cases
16213         of LinkDemand.
16214
16215 2005-02-10  Martin Baulig  <martin@ximian.com>
16216
16217         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
16218         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
16219
16220 2005-02-10  Martin Baulig  <martin@ximian.com>
16221
16222         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
16223         debugging code; this is almost a complete rewrite.
16224
16225         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
16226
16227 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16228
16229         * domain.c, object.h: expose mono_string_equal () and 
16230         mono_string_hash ().
16231         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
16232         it's implemented in managed code.
16233
16234 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
16235
16236         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
16237         lo leak objects between appdomains.
16238
16239 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
16240
16241         * assembly.c: old compilers compilation fix from 
16242         robertj@gmx.net (Robert Jordan).
16243
16244 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
16245
16246         * class-internals.h: Little reminder for the future.
16247
16248         * debug-helpers.c: Fix up wrapper_type_names
16249
16250 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
16251
16252         * image.c, metadata-internals.h: when loading an image from a file,
16253         mmap all of it and use the same codepaths as when using a
16254         in-memory image: the code is simpler and we use less memory
16255         (both writable and readonly).
16256
16257 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
16258
16259         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
16260         API to alloc runtime data structures that need to be tracked by the
16261         GC and contain pointers.
16262         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
16263         make the code more readable and eventually use a different GC.
16264
16265 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
16268         for out arguments.
16269         
16270 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
16271
16272         * object.c: In release_type_locks(), don't release the cctor lock
16273         if it has already been released. This fixes a crash in the
16274         thread5 test.
16275
16276 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
16277
16278         * gc.c, marshal.c, icall.c: register a delegate for finalization
16279         only when the native function pointer has been allocated for it.
16280
16281 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16282
16283         * object.c: cleaned up some code, allocate objects that are
16284         pointer free with the atomic malloc variant. Allocate memory
16285         for static data from the mempool if it's pointer-free.
16286         Allocate the bounds array at the end of the array data, when needed.
16287         * object-internals.h, object.h: move a private function in a private
16288         header.
16289         * class.c: handle missing case in tracking references in fields.
16290
16291 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
16292
16293         * class.c, class-internals.h: keep track if a type has
16294         reference fields in either the instance or static fields.
16295
16296 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
16297
16298         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
16299         and renamed to MonoRuntimeInfo. Added fields to store the expected
16300         framework assembly version. Changed mono_get_framework_version and
16301         mono_get_runtime_version for a single mono_get_runtime_info method.
16302         
16303         * assembly.c: Added method to remap system assembly versions to the
16304         current executing runtime version. Removed old mapping code.
16305         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
16306         
16307         * icall.c, reflection.c: Track api changes.
16308
16309 2005-02-06  Miguel de Icaza  <miguel@novell.com>
16310
16311         * loader.c (method_from_memberref): Improve error reporting,
16312         produce the class name instead of the typeref/typedef index. 
16313
16314 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
16315
16316         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
16317
16318 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16319
16320         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
16321         stdcall and charset name mangling.  Reorganize the code and add
16322         some tracing stuff.
16323
16324 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
16325
16326         * monodiet.c: More iters!
16327
16328         * marshal.c: Iter usage.
16329
16330         * icall.c: Iter usage.
16331
16332         * object.c: Use iters.
16333
16334         * debug-helpers.c: More iters
16335
16336 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16337
16338         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
16339         under win32.
16340
16341 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
16342
16343         * mono-debug-debugger.c: use iters
16344
16345         * class.c, class-internals.h: mono_class_setup_events is static
16346         now
16347
16348         * All callers: use iters
16349
16350 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16351
16352         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
16353         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
16354
16355 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16356
16357         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
16358
16359         * marshal.h: Add prototypes for ldfld/stfld_remote.
16360
16361         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
16362         this is called during startup.
16363         
16364 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
16365
16366         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
16367         MonoThreadsSync struct private in monitor.c. Changed the way
16368         MonoThreadsSync is allocated so it's faster and there is no
16369         need to keep track of it with a finalizer and it uses less memory.
16370         This also finally allows us to allocate mono objects as ptrfree when
16371         there are no reference fields.
16372
16373 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
16374
16375         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
16376         disappearing link to the GC interface and use them to simplify
16377         the gchandles code.
16378
16379 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16380
16381         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
16382         stfld_remote which call mono_load/store_field_new. This allows methods
16383         calling ldfld/stfld wrappers to be AOTed.
16384
16385         * console-io.c: Include sys/filio.h under solaris.
16386         
16387         * console-io.c: Include curses.h if needed correctly.
16388
16389 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16390         
16391         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
16392         method->klass as well.
16393
16394         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
16395
16396         * class.c (mono_class_init): Switch on lazy initialization of 
16397         methods.
16398
16399         * class.c (mono_class_get_finalizer): Handle the case when the 
16400         finalizer is inherited.
16401
16402 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16403
16404         * console-io.c: <curses.h> is needed by term.h on solaris.
16405
16406 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
16407
16408         * icall.c, class-internals.h, monodiet.c, class.c: Remove
16409         mono_class_setup_properties where possible. Remove this ftn from
16410         the header file, and make it static.
16411
16412 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16413
16414         * loader.c: Add missing setup_... call.
16415
16416         * class.c: Add missing setup_... calls.
16417
16418         * class.c (mono_class_init): Switch on lazy initialization of 
16419         the generic vtable.
16420         
16421         * class.c (mono_class_init): Fix generics broken by the recent changes.
16422
16423         * monodiet.c (handle_type): Add missing setup_... calls.
16424
16425         * class.c: Back out garbage in previous patch.
16426         
16427         * class.c: Add missing setup_... calls.
16428
16429         * class.c (mono_class_get_method_from_name_flags): Avoid calling
16430         mono_class_setup_methods () if possible.
16431
16432         * class-internals.h (MonoClass): Add 'has_cctor' flag.
16433
16434         * class-internals.h (MonoCachedClassInfo): New structure.
16435
16436         * class.c: Initialize properties and events fields of MonoClass lazily.
16437
16438         * class.c: Add infrastructure for lazily initializing the methods and
16439         vtable fields of MonoClass. Not yet used.
16440
16441         * class.c (mono_class_get_finalizer): New helper function.
16442
16443         * class.c: Add infrastructure for loading some class related data from
16444         an AOT file.
16445
16446         * object.c: Add infrastructure for initializing the vtable from data
16447         in the AOT file.
16448
16449         * gc.c (run_finalize): Use mono_class_get_finalizer ().
16450
16451         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
16452         appropriate initialization function before accessing parts of the
16453         MonoClass structure.
16454
16455         * marshal.c: Fix warnings.
16456         
16457         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
16458
16459         * mono-debug-debugger.c (get_exception_message): Use 
16460         mono_class_get_method_from_name_flags ().
16461
16462 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
16463
16464         * reflection.c, appdomain.c: Replace a few manual searches that
16465         Zoltan missed. (Paolo approved this part of my initial patch).
16466
16467 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
16468
16469         * profiler.c: disable recording statistical events at report time.
16470
16471 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
16472
16473         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
16474         to byteswap arrays of enum values, too (bug #72080).
16475
16476 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
16477
16478         * appdomain.c (set_domain_search_path): Allow this to be called if
16479         domain->setup is not yet set.
16480
16481         * loader.c (mono_method_get_index): New helper function.
16482
16483         * loader.c reflection.c: Use mono_method_get_index ().
16484
16485         * class.c (mono_class_get_method_from_name_flags): New helper method.
16486
16487         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
16488         this.
16489
16490         * class.c (mono_class_get_cctor): New helper method.
16491
16492         * string-icalls.c object.c class.c marshal.c reflection.c: Use
16493         mono_class_get_method () to look up methods.
16494
16495 2005-02-01  Miguel de Icaza  <miguel@novell.com>
16496
16497         * console-io.c: Fix the build, this should work on Windows.
16498
16499 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
16500
16501         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
16502         be set to null to keep things valid
16503
16504 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16505
16506         * icall.c: added Console 2.0 icalls.
16507         * Makefile.am: added console-io.[ch]
16508         * console-io.[ch]: internal calls for Console 2.0 API.
16509
16510 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
16511
16512         * class.c: make sure we consider all the interfaces
16513         when calculating max_interface_id (bug found by
16514         Jeroen Frijters running ikvm).
16515
16516 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16517
16518         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
16519         valuetype fields to null.
16520
16521         * object.c (set_value): Ditto. Fixes #71669.    
16522
16523 2005-01-31  Martin Baulig  <martin@ximian.com>
16524
16525         * metadata.c (mono_metadata_has_generic_params): New public
16526         function; checks whether something is a generic method.
16527
16528 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16529
16530         * appdomain.c: fix infinite recursion when adding assemblies.
16531
16532 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
16533
16534         * object.c: Fix small typo to return all items for Environment.
16535         GetCommandLineArgs.
16536
16537 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16538
16539         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
16540         reflection.c: more domain and assembly-unload related fixes
16541         and memory leaks plugs.
16542
16543 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16544
16545         * 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.
16546
16547 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16548
16549         * loader.c (mono_method_signature): Make this method lazy
16550         (mono_get_method_from_token): Don't computate the signature here.
16551
16552         Doing this saves quite a bit of memory. I got 90 kb on starting up
16553         monodoc. It should also save some disk reads on startup.
16554
16555         * *: MonoMethod->signature might be NULL now. You *MUST* use
16556         mono_method_signature.
16557
16558 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
16559
16560         * object.c (mono_runtime_get_main_args): Return an array from the
16561         current domain here. Fixes #71938.
16562
16563 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
16564
16565         * monitor.c: formatting changes to comply with the
16566         mono coding style and remove #ifdefs from the code.
16567
16568 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
16569
16570         * metadata.c, private.h: remove some unneeded data
16571         and use a more compact representation for table schemas.
16572
16573 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
16574
16575         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
16576         to get a better distribution in hash tables.
16577         * *.c: use mono_aligned_addr_hash() where appropriate.
16578         * assembly.c: make var static.
16579
16580 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16581
16582         * domain-internals.h: Put MonoJitInfo on a diet.
16583
16584         * domain.c: Fix a warning.
16585
16586 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
16587
16588         * gc.c: rework the gc handles code to reuse handles
16589         when freed.
16590
16591 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
16592
16593         * domain.c: fixed long standing bug in mono_string_equal() which
16594         was brought to light with the ldstr changes.
16595
16596 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16597
16598         * reflection.c: Remove warning by adding missing include for marshal.h
16599
16600 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
16601
16602         * domain.c, object.c: change the ldstr_table to hold
16603         MonoString* as keys: makes the runtime isinterned lookup
16604         faster and simplifies memory management.
16605
16606 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
16607  
16608         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
16609         possible to add imperative security checks before calling the icall.
16610         * reflection.c: Return security attributes on the original MonoMethod
16611         (and not the wrapped one). This fix permissions on icalls.
16612
16613 2005-01-25  Dick Porter  <dick@ximian.com>
16614
16615         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
16616         the check for mktime() support actually test the mktime() return
16617         value.  "Fixes" bug 71682, though the output is still different to
16618         MS.
16619
16620 2005-01-25  Martin Baulig  <martin@ximian.com>
16621
16622         * class.c (mono_class_is_assignable_from): Make this work for
16623         generic instances.
16624
16625 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
16626
16627         * marshal.c (mono_string_utf8_to_builder)
16628         (mono_string_builder_to_utf16): We might not have ownership of the
16629         string. In thise case, we need to create a new buffer.
16630
16631         * object-internals.h (mono_stringbuilder_capacity): sb->str might
16632         be null, in which case, use the default capacity.
16633
16634 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
16635
16636         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
16637         GC events to the profiler.
16638
16639 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
16640
16641         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
16642         if you don't want the GC to run.
16643
16644 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
16645
16646         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
16647         start providing a GC API and keeping different implementations in
16648         their own file.
16649         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
16650
16651 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16652
16653         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
16654         mmap rather than allocating a huge buffer.
16655         (mono_debug_close_mono_symbol_file): Free the buffer allocated
16656         above.
16657
16658 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16659
16660         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
16661         and CheckExecutionRights.
16662         * reflection.c|h: Keep the index of the declarative security to be 
16663         used, instead of the pointer, when AOT compiler is used. Also add 
16664         class initialization when requesting demands.
16665         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
16666         CheckExecutionRights. Both properties are now FALSE by default, and
16667         unmodifiable, unless the --security option is used.
16668
16669 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16670
16671         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
16672         reflection.c: properly refcount images and assemblies, many leaks fixed.
16673
16674 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16675
16676         * threadpool.c: increase the timeout for threads in the thread pool to
16677         10s.  Fixes bug #67159.
16678
16679 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
16680
16681         * class-internals.h: Sun's compiler insists on explicit
16682         signed on bit fields to handle then correctly.
16683
16684 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
16685
16686         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
16687         Make the size of the array fit only the number of invalid path
16688         chars that we have.
16689
16690         * class.c (_mono_class_get): Improve the error reporting when a
16691         class referenced is not found, to assist debugging. 
16692
16693 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
16694
16695         * threads.c: fix off-by-one error.
16696         * domain.c: free data allocated in the domain.
16697
16698 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
16699
16700         * reflection.c (mono_method_body_get_object): Fill out exception info
16701         as well.
16702
16703         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
16704         structure.
16705         
16706 2005-01-19  Martin Baulig  <martin@ximian.com>
16707
16708         * loader.c (mono_get_method_constrained): Make this work again.
16709
16710 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
16711
16712         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
16713         guint16 to match the managed side.
16714
16715         * reflection.c (mono_reflection_body_get_object): Fill out local
16716         variables array.
16717
16718         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
16719         as well.
16720
16721         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
16722         'local_var_sig_token'.
16723
16724 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
16725
16726         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
16727         System.Drawing.
16728
16729         * reflection.c (mono_method_body_get_object): Handle abstract and
16730         runtime methods.
16731
16732 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
16733
16734         * marshal.c, loader.c, class-internals.h, reflection.c:
16735         store the emthod data for a wrapper in an array instead of a list.
16736
16737 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
16738
16739         * marshal.c: change the code to allocate memory more
16740         conservatively for method wrappers.
16741
16742 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16743
16744         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
16745         fields from MonoClass to the marshal info structure where they belong.
16746
16747 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
16748
16749         * class.c, object.c, class-internals.h, marshal.c: rearrange
16750         some fields and tweak some types to lower memory usage.
16751
16752 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
16753
16754         * threads.c (signal_thread_state_change): Handle the case when the
16755         target thread is the current thread.
16756
16757         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
16758
16759         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
16760         emit_ptr_to_object_conv. 
16761
16762         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
16763         marshalling. Fixes #71352.
16764
16765 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16766
16767         * metadata.h, blob.h: move table enum to blob.h so it can be included
16768         in any header.
16769         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
16770         cut the size of MonoImage/MonoDynamicImage.
16771
16772 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * profiler.c (mono_profiler_install_simple): Fix default arguments.
16775
16776 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
16777
16778         * reflection.c, reflection.h, icall.c: add a function to check
16779         if an attribute type is defined for a metadata object.
16780
16781 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
16782
16783         * object-internals.h: Added some needed fields from StringBuilder class.
16784         * marshal.c: Set the maxCapacity when creating a StringBuilder.
16785
16786 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
16787
16788         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
16789         threads before shutting down the runtime.
16790
16791         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
16792
16793 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
16794
16795         * object-internal.h, threads.c: implement stacksize and 
16796         parameterized thread start functionality (requires
16797         matching corlib). Marked broken code for later removal.
16798
16799 2005-01-12  Martin Baulig  <martin@ximian.com>
16800
16801         * class-internals.h (MonoGenericClass): Moved the `initialized'
16802         flag to MonoDynamicGenericClass, removed `init_pending'.
16803         (MonoGenericInst): Added `is_reference' flag.
16804
16805 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * reflection.c (mono_image_create_pefile): Only set the pe_offset
16808         inside the MSDOS header. Fixes #71201.
16809
16810         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
16811         gc thread.
16812         (mono_domain_finalize): Ditto.
16813
16814 2005-01-12  Martin Baulig  <martin@ximian.com>
16815
16816         * class.c (mono_get_shared_generic_class): Use the cache for
16817         non-dynamic generic classes.
16818
16819         * class-internals.h (mono_class_create_generic_2): Removed
16820         function prototype, this function is now static inside class.c.
16821
16822         * class.c (mono_class_create_generic_2): Made this static, only
16823         call it from mono_class_init() and mono_class_setup_parent().
16824         (collect_implemented_interfaces_aux): Call mono_class_init() on
16825         the interfaces we collect.
16826         (mono_class_setup_vtable): Call mono_class_init (class->parent).
16827
16828 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
16831         it a real thread handle.
16832
16833         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
16834         MonoJitExceptionInfo, since each catch clause needs its own variable.
16835         
16836 2005-01-11  Dick Porter  <dick@ximian.com>
16837
16838         * image.c (mono_pe_file_open): New variant on mono_image_open()
16839         that does not set up the CLI metadata; used for FileVersionInfo so
16840         it can get the data for windows binaries too.
16841         
16842         * process.c (process_read_string_block): Don't read off the end of
16843         the StringTable block.
16844
16845         These both fix bug 70766.
16846
16847 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
16848
16849         * gc.c: set some fields to NULL at GC cleanup time.
16850         * threads.c: if we quit the main thread, call exit ().
16851
16852 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
16853
16854         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
16855
16856 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
16857
16858         * threads.h, threads.c, object.c: added accessor and settor for
16859         main_thread. Handle it specially when exiting from it: wait
16860         for other foreground threads to exit.
16861
16862 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
16863
16864         * process.c, verify.c: remove some bloat.
16865
16866 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
16869         the calling convention to cdecl under win32.
16870
16871 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
16872
16873         * object.c (mono_object_get_size): New function to get the size of
16874         an object instance.
16875
16876         * profiler.c (simple_allocation): Use above.
16877
16878 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
16879
16880         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
16881         ves_icall_System_AppDomain_getRootDomain (as it's not required to
16882         get an appdomain by it's id and we can't assume the root's id is 0).
16883         * domain-internals.h: Change the function prototype to match.
16884         * icall.c: Change the icall table for AppDomain.
16885
16886 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
16887
16888         * locales.c (string_invariant_compare_char): Only compute
16889         GUnicodeTypes in the case where we need them.  Test for ordinality
16890         first and return if so.
16891
16892         From the commit:
16893
16894                 /*
16895                  * FIXME: here we must use the information from c1type and c2type
16896                  * to find out the proper collation, even on the InvariantCulture, the
16897                  * sorting is not done by computing the unicode values, but their
16898                  * actual sort order.
16899                  */
16900
16901 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16902
16903         * loader.c: for P/Invoke methods, allow the "Internal" shared
16904         library name to refer to the calling process symbol namespace.
16905
16906 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
16907
16908         * Makefile.am: Add the security manager to the build.
16909         * security-manager.c|h: New. Initialization of the security manager.
16910
16911 2005-01-07  Dick Porter  <dick@ximian.com>
16912
16913         * threads.c: 
16914         * monitor.c: Update thread state during Monitor and WaitHandle
16915         waits.  Fixes bug 71031.
16916
16917 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
16918
16919         * reflection.c (property_encode_signature): Correctly handle when the
16920         property has no methods.
16921
16922 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
16923
16924         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
16925         
16926         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
16927         fields from mb, not rmb. Fixes #71017.
16928
16929         * marshal.c (emit_ptr_to_str_conv): Add support for 
16930         ByValTStr -> string conversion. Fixes #71015.
16931
16932         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
16933
16934         * mempool.c (mono_mempool_contains_addr): New helper function.
16935
16936 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16937
16938         * metadata.c (mono_metadata_compute_size): Fix size calculation of
16939         HasSematics encoded fields.
16940         
16941         * metadata.c (mono_type_to_unmanaged): Improve error message for 
16942         invalid string marshalling.
16943
16944         * metadata.c: Fix warnings.
16945         
16946 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16947
16948         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
16949         profiler support.
16950
16951 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
16952
16953         * domain.c object.c domain-internals.h: Revert part of r38077 since the
16954         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
16955         tests.
16956
16957 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
16958
16959         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
16960         so methods containing these can be AOTed.
16961
16962 2005-01-03  Martin Baulig  <martin@ximian.com>
16963
16964         * loader.c (find_method): Removed the hack for generic instances.
16965         (method_from_memberref): If our parent is a generic instance, pass
16966         its generic type definition to find_method() and then inflate the
16967         method.
16968         (mono_get_method_constrained): Pass the generic type definition to
16969         find_method() and inflate the method later.
16970
16971         * class-internals.h (MonoStats): Added `generic_class_count'.
16972
16973         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
16974         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
16975
16976         * reflection.c (mono_custom_attrs_from_params): Don't ignore
16977         generic type definitions.
16978
16979 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
16980
16981         * loader.c icall.c: Fix warnings.
16982
16983 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
16984
16985         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
16986         blittable types. Fixes #70864.
16987
16988 2004-12-29  Martin Baulig  <martin@ximian.com>
16989
16990         * icall.c
16991         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
16992
16993         * reflection.c (mono_method_get_object): Create a
16994         "System.Reflection.MonoGenericMethod" for inflated methods; don't
16995         call mono_get_inflated_method().
16996
16997         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
16998
16999 2004-12-27  Martin Baulig  <martin@ximian.com>
17000
17001         * class-internals.h (MonoMethod): Added `is_inflated' flag.
17002         (MonoMethodInflated): Added `inflated' field.
17003
17004         * class.c (mono_class_inflate_generic_method): Don't really
17005         inflate the method here; just set the `is_inflated' flag in the
17006         MonoMethod.
17007         (mono_class_get_inflated_method): Actually inflate the method here
17008         if it's not already inflated; we use the MonoMethodInflated's new
17009         `inflated' field as a cache.
17010
17011 2004-12-26  Martin Baulig  <martin@ximian.com>
17012
17013         * class.c
17014         (inflate_generic_class): Moved some code out of inflate_generic_type().
17015         (mono_class_inflate_generic_method): If we're already inflated,
17016         inflate the context and use the declaring method; ie. make sure
17017         the declaring method of an inflated method is always the generic
17018         method definition.
17019         (mono_class_create_from_typedef): Create
17020         `class->generic_container->context->gclass'.
17021
17022 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17023
17024         * metadata-internals.h, marshal.c, reflection.c: More
17025         MonoGHashTable->GHashTable.
17026
17027         * domain-internals.h, class.c: Change MonoGHashTable's into
17028         GHashTables for some cases where no gc stuff is used
17029
17030         All users: update apis
17031
17032 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
17033
17034         * metadata.c (builtin_types): Make this `const'. Makes this get
17035         put into the shareable section.
17036         (mono_metadata_init): Casts to make gcc happy.
17037
17038 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
17041
17042 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
17043
17044         * icall.c: Added an internal call to retrieve the position and length
17045         of assembly-level declarative security attributes (RequestMinimum, 
17046         RequestOptional and RequestRefuse). This is used by the Assembly class
17047         to re-create the corresponding permission sets.
17048
17049 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
17050
17051         * marshal.c: fix the stelemref wrapper to be type correct
17052         (and faster).
17053
17054 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17055
17056         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
17057         to do key & 0x7fffffff. Hashtable already does this. It just
17058         results in longer code.
17059
17060 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
17061
17062         * appdomain.c: Bump corlib version.
17063         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
17064         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
17065         * reflection.c|h: Add functions to get declarative security infos
17066         (blob position and length) for assemblies, classes and methods.
17067
17068 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
17069
17070         * reflection.c: sort the constant table (bug #70693).
17071
17072 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
17073
17074         * object-internals.h, threads.c, domain.c: add accessors for
17075         the MonoThread and MonoDomain tls keys.
17076
17077 2004-12-18  Martin Baulig  <martin@ximian.com>
17078
17079         * class.c (inflate_generic_type): If we're inflating a generic
17080         instance, set `ngclass->context->container = context->container';
17081         ie. the container we inflated into.
17082
17083         * metadata.c (mono_metadata_parse_generic_param): Reflect above
17084         inflate_generic_type() changes.
17085
17086 2004-12-17  Martin Baulig  <martin@ximian.com>
17087
17088         * class-internals.h
17089         (MonoGenericClass): Replaced `MonoType *generic_type' with
17090         `MonoClass *generic_class'.  Removed `dynamic_info'; if
17091         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
17092         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
17093
17094 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
17095
17096         * exception.c (mono_exception_from_token): New helper function.
17097
17098 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17099
17100         * assembly.c (mono_assembly_load_with_partial_name): Call 
17101         mono_assembly_loaded before invoking the preload hooks. Fixes
17102         #70564.
17103
17104         * object-internals.h (MonoThread): Change culture_info and 
17105         ui_culture_info into an array.
17106
17107         * threads.c: Cache culture info objects from more than one appdomain.
17108
17109         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
17110         current UI culture.
17111
17112 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * threads.h threads.c appdomain.c: Clear the culture_info field of
17115         all threads during unloading if they point to an object in the dying
17116         appdomain.
17117
17118 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
17119
17120         * culture-info.h (TextInfoEntry): New struct
17121         * object-internals.h: sync with managed
17122         * locales.c: fill the `text_info_data' field
17123         * culture-info-tables.h: update
17124
17125 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
17126
17127         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
17128         collector.
17129
17130 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
17131
17132         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
17133         (ves_icall_ModuleBuilder_getMethodToken): Ditto
17134
17135 2004-12-12  Martin Baulig  <martin@ximian.com>
17136
17137         * mono-debug-debugger.c (write_type): If we're an enum and the
17138         builtin types have already been initialized, call mono_class_init().
17139
17140 2004-12-11  Martin Baulig  <martin@ximian.com>
17141
17142         * metadata.c (mono_metadata_load_generic_params): Added
17143         `MonoGenericContainer *parent_container' argument; automatically
17144         compute `container->is_method'; pass the correct owner to
17145         get_constraints().      
17146
17147         * reflection.c (compare_genericparam): Sort the GenericParam table
17148         according to increasing owners. 
17149
17150 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17151
17152         * profiler.c: allow disabling the default profiler.
17153
17154 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
17155
17156         * decimal.c, icall.c: allow disabling System.Decimal support.
17157
17158 2004-12-09  Marek Safar <marek.safar@seznam.cz>
17159
17160         * reflection.c: Add support for null attribute arguments.
17161
17162 2004-12-09  Martin Baulig  <martin@ximian.com>
17163
17164         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
17165         names to get rid of compiler warnings.
17166
17167 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
17170         mono_marshal_load_type_info (). Fixes #69625.
17171         (mono_marshal_get_ptr_to_struct): Likewise.
17172
17173 2004-12-08  Martin Baulig  <martin@ximian.com>
17174
17175         * mono-debug.h: Bumped version number to 47.
17176
17177         * mono-debug-debugger.c
17178         (mono_debugger_event_handler, mono_debugger_event): Take two
17179         guint64 arguments insteed of a gpointer and a guint32.  
17180
17181 2004-12-08  Martin Baulig  <martin@ximian.com>
17182
17183         * debug-mono-symfile.h
17184         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
17185         `address' to `native_offset'.
17186
17187 2004-12-08  Martin Baulig  <martin@ximian.com>
17188
17189         * class.c (mono_class_create_from_typespec): Only inflate if we
17190         either have `context->gclass' or `context->gmethod'.
17191
17192 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
17195
17196         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
17197
17198         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
17199
17200         * reflection.c (mono_assembly_get_object): Remove the workaround put
17201         in for the release.
17202         
17203         * appdomain.c: Use the corlib_internal field from MonoAssembly.
17204
17205         * appdomain.c: Bump corlib version.
17206
17207         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
17208         be visible in other appdomains.
17209
17210 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
17211
17212         * threads.c: Interlocked inc and dec for longs were messed up,
17213         use a KISS based impl for this. Fixes 70234
17214
17215 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
17216
17217         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
17218
17219 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
17220
17221         * icall.c: fix to follow policy not to allow struct
17222         arguments in icalls.
17223
17224 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17225
17226         * process.c: make the patch that handles spaces in file paths work
17227         on mono/windows too.
17228
17229 2004-12-06  Martin Baulig  <martin@ximian.com>
17230
17231         * class.c (mono_class_create_generic): Call
17232         mono_class_setup_supertypes() if we're dynamic.
17233         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
17234
17235 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
17236
17237         * object-internals.h: Add new fields to MonoThread.
17238
17239         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17240
17241         * icall.c threads-types.h threads.c: Add new icalls.
17242
17243         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
17244
17245         * object-internals.h (MonoReflectionAssembly): Sync object layout with
17246         managed side.
17247
17248         * appdomain.c: Bump corlib version.
17249
17250         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
17251         internal assemblies. Fixes #69181.
17252
17253 2004-12-05  Martin Baulig  <martin@ximian.com>
17254
17255         * class.c (mono_class_inflate_generic_signature): Make this a
17256         no-op if `context' is NULL or we don't have any type parameters;
17257         also copy `sentinelpos'.        
17258
17259 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * image.c: Add unbox_wrapper_cache.
17262
17263         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
17264
17265         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
17266         function generator.
17267         
17268         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
17269         Fixes #70173.
17270
17271         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
17272         
17273 2004-12-04  Martin Baulig  <martin@ximian.com>
17274
17275         * loader.c (mono_method_get_signature_full): New public function;
17276         like mono_method_get_signature(), but with an additional
17277         `MonoGenericContext *' argument.
17278
17279         * class.c (mono_class_inflate_generic_signature): Formerly known
17280         as inflate_generic_signature(); make this public.
17281
17282 2004-12-04  Martin Baulig  <martin@ximian.com>
17283
17284         * metadata.c
17285         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
17286         instead of a `MonoGenericContainer *'.  
17287         (mono_metadata_parse_array_full): Likewise.
17288         (mono_metadata_parse_signature_full): Likewise.
17289         (mono_metadata_parse_method_signature_full): Likewise.
17290         (mono_metadata_parse_generic_inst): Likewise.
17291         (mono_metadata_parse_generic_param): Likewise.
17292         (mono_metadata_parse_mh_full): Likewise.
17293         (mono_type_create_from_typespec_full): Likewise.
17294
17295 2004-12-03  Martin Baulig  <martin@ximian.com>
17296
17297         * class-internals.h (MonoGenericContainer): Replaced the
17298         `MonoGenericContext * pointer with a `MonoGenericContext'
17299         structure and made it the first element.
17300
17301 2004-12-03  Martin Baulig  <martin@ximian.com>
17302
17303         * class.c
17304         (inflate_generic_type): Set the `context->container' when creating
17305         a new MonoGenericContext.
17306         (mono_class_inflate_generic_method): Likewise.
17307         (mono_class_create_from_typespec): Just use `context->container'
17308         to get the container.
17309
17310         * loader.c (method_from_methodspec): Set `context->parent' from
17311         `context->container' - and if that's a method container, use its
17312         parent.  Also set the `context->container' when creating a new
17313         MonoGenericContext.
17314         (mono_get_method_from_token): Use just `context->container' to get
17315         the container.
17316
17317         * metadata.c (do_mono_metadata_parse_generic_class): Also set
17318         `gclass->context->container'.
17319
17320         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
17321         the `context->container' when creating a new MonoGenericContext.
17322
17323 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
17324
17325         * reflection.c (compare_genericparam): Sort params with identical
17326         owner by their number. Fixes gen-111 on sparc.
17327
17328 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
17331         around the domain changes.
17332
17333         * appdomain.c (mono_domain_unload): Handle the case when the thread
17334         calling Unload is itself being aborted during unloading. Fixes #70022.
17335
17336         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
17337
17338         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
17339         checkpoint_func as an icall so it gets a wrapper.
17340         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
17341         in the cross-appdomain wrappers too.
17342
17343         * threads.c (mono_thread_has_appdomain_ref): Make this public.
17344
17345         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
17346
17347         * reflection.c: Fix some memory leaks.
17348         
17349 2004-12-02  Martin Baulig  <martin@ximian.com>
17350
17351         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
17352
17353         * metadata.c (generic_class_cache): New static hashtable.
17354         (mono_metadata_lookup_generic_class): New public method.
17355
17356 2004-12-02  Martin Baulig  <martin@ximian.com>
17357
17358         * class.c (mono_class_create_from_typedef): Call
17359         mono_class_setup_parent() and mono_class_create_mono_type() before
17360         parsing the interfaces.
17361
17362 2004-12-02  Martin Baulig  <martin@ximian.com>
17363
17364         * metadata.c (generic_inst_cache): New static hashtable.
17365         (mono_metadata_lookup_generic_inst): New public function.
17366         (mono_metadata_inflate_generic_inst): New public function.
17367         (mono_metadata_parse_generic_inst): New public function.
17368         (do_mono_metadata_parse_generic_class): Use the new
17369         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
17370         since this'll also use the cache.
17371
17372         * reflection.c (mono_reflection_bind_generic_method_parameters):
17373         Use mono_metadata_lookup_generic_inst() to use the new cache.
17374
17375         * class.c (inflate_mono_type): Use
17376         mono_metadata_inflate_generic_inst() to inflate a generic
17377         instance; this'll also use the new cache.
17378
17379         * loader.c (method_from_methodspec): Use
17380         mono_metadata_parse_generic_inst() and
17381         mono_metadata_inflate_generic_inst() rather than parsing it
17382         manually, so we can use the new cache.
17383
17384 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17385
17386         * threads.c (wait_for_tids): Do not incorrectly free threads when 
17387         the wait times out.
17388
17389 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17390
17391         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
17392         iter->args based on whether parameters are passed in registers (i.e.
17393         MONO_ARCH_REGPARMS is defined)
17394
17395 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
17396
17397         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
17398         the exception message. Fixes #70070.
17399         (method_from_methodspec): Fix warnings.
17400
17401 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17402
17403         * process.c: (complete_path) return the path quoted
17404
17405 2004-12-01  Martin Baulig  <martin@ximian.com>
17406
17407         * class-internals.h (MonoGenericInst): New structure.
17408         (MonoGenericClass): Replaced `type_argc', `type_argv' and
17409         `is_open' with `MonoGenericInst *inst'.
17410         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
17411         `is_open' with `MonoGenericInst *inst'.
17412
17413 2004-11-30  Martin Baulig  <martin@ximian.com>
17414
17415         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
17416
17417         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
17418         to `generic_class_cache'.
17419
17420         * metadata.c
17421         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
17422         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
17423         (mono_generic_inst_is_valuetype): Renamed to
17424         mono_generic_class_is_valuetype().
17425
17426         * class-internals.h
17427         (MonoGenericInst): Renamed to MonoGenericClass.
17428         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
17429         (MonoClass): Renamed `generic_inst' to `generic_class'.
17430         (MonoGenericContext): Renamed `ginst' to `gclass'.
17431
17432         * object-internals.h
17433         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
17434
17435         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
17436         mono_reflection_generic_class_initialize().
17437
17438         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
17439         now known as "System.Reflection.MonoGenericClass".
17440         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
17441
17442 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
17443
17444         * class-internals.h: Added a flag field to MonoClass to cache the
17445         declarative security attributes actions associated with the class.
17446         * domain-internals.h: Added booleans to MonoJitInfo to cache the
17447         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
17448         applicable to the JITted method.
17449         * reflection.c|h: Added functions to extract (as flags) which security
17450         actions are available (declaratively) for a method, class or assembly.
17451         * metadata.c|h: Added functions to search the declarative security
17452         table in the metadata.
17453         
17454 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
17455
17456         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
17457         EXPORTEDTYPES are already in the class name cache, so there is no
17458         need to add extra code here to look at them. Just removes a bit of
17459         cruft.
17460
17461         (ves_icall_System_Environment_get_TickCount): No need for #if
17462         WINDOWS. We already have the code in io-layer.
17463
17464 2004-11-28  Martin Baulig  <martin@ximian.com>
17465
17466         * loader.c
17467         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
17468         Fixes gen-112.cs.
17469
17470 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
17471
17472         * assembly.c (do_mono_assembly_open): Instead of having a
17473         conditional WITH_BUNDLE, incorporate support for bundles here, by
17474         having a global `bundles' variable holding a pointer to the actual
17475         bundles. 
17476
17477         (mono_register_bundled_assemblies): New API call used by the
17478         bundle code. 
17479
17480         See mkbundle.1 for details.
17481         
17482 2004-11-27  Martin Baulig  <martin@ximian.com>
17483
17484         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
17485         the vtable for generic methods.
17486
17487 2004-11-26  Martin Baulig  <martin@ximian.com>
17488
17489         * metadata.c
17490         (mono_metadata_generic_method_hash): New public function.
17491         (mono_metadata_generic_method_equal): Likewise.
17492
17493         * class-internals.h
17494         (MonoGenericContainer): Added `GHashTable *method_hash'.
17495
17496         * reflection.c (ReflectionMethodBuilder): Added
17497         `MonoGenericContainer *generic_container'.
17498         (reflection_methodbuilder_to_mono_method): Don't create a new
17499         MonoGenericContainer each time we're called.
17500         (mono_reflection_bind_generic_method_parameters): Use
17501         `container->method_hash' to cache the results so we don't create a
17502         different method if we're called several times with the same
17503         arguments.
17504
17505         * loader.c (method_from_methodspec): Use the new
17506         `container->method_hash' here, too.
17507
17508 2004-11-26  Martin Baulig  <martin@ximian.com>
17509
17510         * class.c (inflate_generic_signature): Correctly compute
17511         `res->has_type_parameters'.
17512         (mono_class_vtable): Use the `has_type_parameters' flag to
17513         determine whether we're a generic method.
17514
17515         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
17516
17517 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17518
17519         * object.c (mono_runtime_run_main): Fix a small memory leak.
17520
17521 2004-11-25  Martin Baulig  <martin@ximian.com>
17522
17523         * class.c (set_generic_param_owner): Fixed the loop.
17524
17525 2004-11-25  Martin Baulig  <martin@ximian.com>
17526
17527         * object.c (mono_class_vtable): Don't create any JIT wrappers for
17528         generic methods.
17529
17530 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17531
17532         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
17533         names. Fixes #69787.
17534
17535 2004-11-24  Martin Baulig  <martin@ximian.com>
17536
17537         * class.c (mono_class_create_generic_2): If we don't have a
17538         `ginst->parent', inflate `gklass->parent' to get our parent.
17539
17540 2004-11-24  Martin Baulig  <martin@ximian.com>
17541
17542         * reflection.c (compare_genericparam): Correctly sort the
17543         GenericParam table; fixes #69779.
17544
17545 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
17546
17547         * reflection.c: When writing a PE file, don't create a huge
17548         buffer in memory. Just write the arrays we have to the file.
17549         This reduces memory usage.
17550
17551         * metadata-internals.h: MonoDynamicStream pefile is no longer used
17552         globally.
17553
17554 2004-11-17  Martin Baulig  <martin@ximian.com>
17555
17556         * class.c (mono_class_init): Don't setup `class->parent' for
17557         dynamic instances; moved this to mono_class_generic_2().
17558         (mono_class_create_generic): Also set `klass->inited' for dynamic
17559         generic instances.
17560         (mono_class_create_generic_2): Don't do anything for dynamic
17561         generic instances.  Set `klass->parent' here and also call
17562         mono_class_setup_parent() here. 
17563
17564         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
17565         `MonoType *parent' argument; set `ginst->parent' before calling
17566         mono_class_create_generic_2(), so we set the correct parent.
17567
17568 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
17569
17570         * reflection.c: allow getting attributes from ModuleBuilder
17571         (used by ikvm).
17572
17573 2004-11-17  Martin Baulig  <martin@ximian.com>
17574
17575         * class.c (mono_class_create_from_typedef): If a type parameter is
17576         inherited from an outer class, set its owner to that class.
17577
17578 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
17579
17580         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
17581           for (int*) written size. This fixes bug #69592.
17582
17583 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17584
17585         * icall.c: Added IsAuthenticodePresnet internal call.
17586         * image.c|h: New function that check a MonoImage for an Authenticode
17587         signature in the certificate PE data directory.
17588         * security.c|h: New internal call to ask the runtime if an 
17589         Authenticode signature seems referenced in the PE header.
17590
17591 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
17592
17593         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
17594
17595         * reflection.c (mono_image_create_pefile): Free the assembly streams
17596         after writing out the assembly file.
17597
17598         * object.c (mono_runtime_run_main): Fix small memory leak.
17599
17600         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
17601         property access modifiers. Fixes #69389.
17602
17603 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17604
17605         * domain.c, object.c, object-internals.h, domain-internals.h,
17606         object.h, marshal.c: keep dynamic code info per domain.
17607
17608 2004-11-15  Martin Baulig  <martin@ximian.com>
17609
17610         * class.c (mono_type_get_name_recurse): Put type arguments in
17611         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
17612         see bug #68387.
17613
17614 2004-11-15  Martin Baulig  <martin@ximian.com>
17615
17616         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
17617         (mono_class_setup_vtable): When computing `the_cname' for a
17618         generic instance, don't include the namespace since we'd otherwise
17619         add it twice.
17620
17621 2004-11-15  Martin Baulig  <martin@ximian.com>
17622
17623         * class.c (mono_class_create_generic): Changed return type to void.
17624         (mono_class_create_generic_2): New public function; setup
17625         `class->method', `class->field' and `class->interfaces' here
17626         instead of in mono_class_init().
17627
17628         * class.h (mono_class_create_generic): Moved to class-internals.h.
17629
17630 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
17631
17632         * reflection.c (mono_image_create_pefile): take a file HANDLE.
17633         rather than writing to memory, write to this file. Right now,
17634         we are just writting into a buffer, and copying that. However
17635         we can avoid the buffer later.
17636
17637         (mono_dynamic_stream_reset): new function
17638
17639         * icall.c, object-internals.h: update for the above.
17640
17641 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
17642
17643         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
17644         have been using gc'd memory. First it is slower, unlikely
17645         the comment in the source code said, secondly, it increases
17646         our footprint to do it in the gc.
17647
17648         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
17649         the method so that it does not have to copy to managed code.
17650
17651 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
17654
17655 2004-11-12  Martin Baulig  <martin@localhost>
17656
17657         * reflection.c (mono_image_create_token): Allow generic method
17658         definitions here, since they may appear in an `.override'; see
17659         gen-98/gen-99 for an example.
17660
17661 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
17664         #69365.
17665
17666         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
17667         descriptive.
17668
17669 2004-11-11  Martin Baulig  <martin@ximian.com>
17670
17671         * class.c (mono_class_setup_vtable): In an explicit interface
17672         implementation, the method name now includes the arity.
17673
17674 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
17675
17676         * object.c (mono_array_full_copy): Fix warning.
17677
17678 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
17679
17680         * appdomain.c: Removed look_for_method_by_name(). Use the new method
17681         mono_class_get_method_from_name() instead.
17682         
17683         * class-internals.h: Added two new types of wrappers. 
17684         Added MonoRemotingTarget enum. Added new trampoline function type, which
17685         takes an additional MonoRemotingTarget value as parameter, so it is
17686         possible to request a trampoline for a specific target.
17687         
17688         * class.c: Added new mono_class_get_method_from_name() method.
17689         
17690         * class.h: In MonoRemoteClass, we can have now to vtables, one for
17691         general remoting sinks and one specific for cross domain calls.
17692         
17693         * debug-helpers.c: Added new wrapper names.
17694         
17695         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
17696         of a remote class.
17697         
17698         * image.c: Porperly delete value objects form the remoting invoke hashtable.
17699         
17700         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
17701         with several other methods (mono_marshal_get_xappdomain_dispatch,
17702         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
17703         and others) can generate a fast remoting wrapper for cross domain calls.
17704         More information can be found in docs/remoting.
17705         Other changes: Removed mono_find_method_by_name, and used
17706         mono_class_get_method_from_name instead.
17707         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
17708         is stored in the remoting invoke hashtable.
17709         
17710         * marshal.h: published the new method for getting the xdomain wrapper,
17711         and also added a method for getting the adequate wrapper for a given
17712         method and target.
17713         
17714         * object-internals.h, object.c: Added a couple of methods for capying and
17715         cloning arrays.
17716         Modified mono_install_remoting_trampoline, which takes the new remoting
17717         trampoline that has a remoting target as parameter.
17718         mono_class_proxy_vtable now also takes a remoting target as parameter, and
17719         will return the most suitable vtable for the target.
17720         Added mono_remote_class_vtable, which returns the vtable of a remote class
17721         (which can be the normal remoting vtable or the xdomain vtable).
17722         
17723         * threads.c: the xdomain invoke and dispatch wrappers must also be
17724         protected against interruptions.
17725
17726 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17727
17728         * icall.c: use memmove in BlockCopyInternal when the source and
17729         destination arrays are the same.
17730
17731 2004-11-09  Martin Baulig  <martin@ximian.com>
17732
17733         * class-internals.h (MonoGenericContainer): Removed `method' and
17734         `signature', replaced them with `is_method' and `is_signature'
17735         flags.  Added `context'.
17736
17737         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
17738         instead of a `MonoGenericContainer *'.
17739
17740         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
17741         for dynamic type parameters.
17742         (mono_metadata_load_generic_params): Setup `container->context'.
17743
17744         * reflection.c (mono_reflection_setup_generic_class): Setup
17745         `tb->generic_container->context'.
17746         (do_mono_reflection_bind_generic_parameters): Use
17747         mono_class_inflate_generic_type() to correctly inflate types,
17748         rather than using our own hack just for MONO_TYPE_VAR.
17749
17750 2004-11-09  Martin Baulig  <martin@ximian.com>
17751
17752         * class.c (mono_class_inflate_generic_method): Small fix; don't
17753         crash here.
17754
17755         * icall.c
17756         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
17757         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
17758         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
17759         (ves_icall_Type_BindGenericParameters): Likewise.
17760         (ves_icall_Type_get_IsGenericInstance): Likewise.
17761         (ves_icall_Type_GetGenericParameterPosition): Likewise.
17762         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
17763         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
17764         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
17765
17766 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
17769         assembly versions and public key tokens. Fixes #69113.
17770
17771 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
17772
17773         * metadata.c: fix bug introduced with the type cache changes
17774         on 2004-11-06.
17775
17776 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
17777
17778         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
17779         the MonoClass pointer instead of the token in exception clauses.
17780         * reflection.c: updates for the above and make the code not depend
17781         on the structure of MonoExceptionClause.
17782
17783 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17784
17785         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
17786         Add support for dynamic assemblies. Fixes #69114.
17787
17788         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
17789
17790 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17791
17792         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
17793         since most only those methods use it. the code member of
17794         MonoMethodPInvoke was dead, so that can be removed too. Also,
17795         remove inline_count (again, not used), and move slot so that it
17796         can share bits with some other flags. This saves 8 bytes in the
17797         structure and gives us about 50 kb back for mcs helloworld.cs
17798
17799         * *.[ch]: Do naming changes for the above.
17800
17801         * loader.c (mono_method_get_header): Lazily init the header
17802         on first access.
17803         (mono_get_method_from_token): don't init the header here
17804         (mono_free_method): the header may never be allocated
17805
17806         Overall, this saves 150 kb of unmanaged allocations
17807         for mcs helloworld.cs. That accounts for 10% of the unmanaged
17808         memory at runtime.
17809         
17810         * loader.c, loader.h (mono_method_get_header): new accessor.
17811
17812         * *.[ch]: use the above method. Prepares us to lazily load
17813         the header.
17814
17815         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
17816         three warnings, which are actual bugs (see 69206).
17817
17818         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
17819         unused. Saves a cool 4 bytes / method.
17820
17821 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
17822
17823         * metadata.c (builtin_types): Add types for System.Object here.
17824         (mono_metadata_parse_type_full): Cache MonoType*'s that are
17825         for a class or valuetype from klass->this_arg or klass->byval_arg.
17826
17827         On mcs for a hello world, this gets us down from 21836 MonoType's
17828         to 14560.
17829
17830         (mono_metadata_free_type): Account for the above change.
17831
17832 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
17833
17834         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
17835         exception instead of asserting if name is null.
17836         (ves_icall_System_AppDomain_GetData): Ditto.
17837
17838 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
17841         EnumBuilder.
17842
17843         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
17844         Return NULL when the domain does not have entry_assembly set.
17845
17846         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
17847         Add a 'resource_modules' argument.
17848         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
17849
17850         * reflection.c (mono_reflection_create_runtime_class): Move setting
17851         of wastypebuilder here, so mono_get_type_object () returns a MonoType
17852         for enums too.
17853
17854         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
17855         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
17856         Throw an ArgumentNullException if 'ptr' is null.
17857
17858         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
17859         assemblies here. Fixes #69020.
17860
17861 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17862
17863         * reflection.c (build_compressed_metadata): Fix the previous patch for
17864         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
17865         the stack.
17866
17867 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * assembly.c (mono_assembly_names_equal): Allow a match if one of
17870         the cultures is false. Fixes #69090.
17871
17872         * reflection.c (build_compressed_metadata): Fix invalid memory read 
17873         detected by valgrind.
17874         
17875         * reflection.c (mono_reflection_get_type): Avoid triggering a 
17876         TypeResolve multiple times for the same type. Fixes #65577.
17877
17878 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
17879
17880         * marshal.c: Avoid using ldftn to call managed functions. It is
17881         much slower than just a call.
17882
17883         * reflection.c (mono_module_get_object): free the basename we
17884         allocate here from glib.
17885         
17886         * reflection.c (ensure_runtime_vtable): make sure to free
17887         overrides.  Also, we were allocating an array of MonoMethod not an
17888         array of MonoMethod*.
17889
17890         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
17891
17892         * image.c (mono_image_close): free image->guid here.
17893
17894 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
17895
17896         * reflection.c: Fix some spec conformance issues with the PE file
17897         structures so mcs compiled apps run on the Net 2.0 beta.
17898
17899 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
17900
17901         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
17902         Implement this. Fixes #67264.
17903
17904         * debug-helpers.h debug-helpers.c marshal.c: Move 
17905         mono_find_method_by_name to debug-helpers.c.
17906
17907 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
17908
17909         * object.c (mono_release_type_locks): type_initialization_hash is
17910         a GHashTable.
17911
17912         * reflection.c object.c object-internals.h: Fix warnings.
17913
17914         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
17915         without accessors. Fixes #61561.
17916
17917         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
17918         application base from the root domain if not set. Fixes #65641.
17919         (mono_runtime_init): Fix warning.
17920
17921 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17922
17923         * appdomain.c: call mono_thread_pool_init.
17924         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
17925         of worker threads based on the number of CPUs and the environment
17926         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
17927         for non-windows (windows) systems.
17928
17929 2004-10-27  Chris Toshok  <toshok@ximian.com>
17930
17931         * mono-debug-debugger.c (write_class): don't call mono_class_init
17932         here, as even with the check for (!klass->init_pending), we get
17933         into a situation where we're hitting cycles in class
17934         initialization.  Fixes #68816.
17935
17936 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
17937
17938         * image.c: Avoid overwriting values in the loaded_images_hash when an
17939         assembly is loaded multiple times. Fixes #61152.
17940
17941         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
17942         so multiple satellite assemblies for the same name can be loaded.
17943         Fixes #68259.
17944
17945         * mono_domain_assembly_preload: Actually return the loaded assembly, 
17946         not NULL.
17947
17948         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
17949         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
17950
17951         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
17952         pending finalizers are not invoked after the appdomain has been 
17953         unloaded. Fixes #67862.
17954
17955 2004-10-22  Martin Baulig  <martin@ximian.com>
17956
17957         * mono-debug-debugger.c
17958         (mono_debugger_runtime_invoke): Don't box valuetypes.
17959
17960 2004-10-22  Chris Toshok  <toshok@ximian.com>
17961
17962         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
17963         don't hide private methods.
17964
17965 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
17966
17967         * icall.c: Allows the runtime to "share" (when known) the public key
17968         token of an assembly. This avoid the need to recalculate the token 
17969         (from the public key) in managed code.
17970
17971 2004-10-21  Chris Toshok  <toshok@ximian.com>
17972
17973         * debug-helpers.c (append_class_name): argh, revert last patch.
17974         
17975 2004-10-21  Chris Toshok  <toshok@ximian.com>
17976
17977         * debug-helpers.c (append_class_name): use '+' as the delimiter,
17978         not '/', so that it matches what the debugger uses to look up
17979         methods.
17980
17981 2004-10-21  Martin Baulig  <martin@ximian.com>
17982
17983         * mono-debug-debugger.c (mono_debugger_throw_exception): New
17984         public method; this is called each time an exception is thrown and
17985         allows the debugger to use exception catch points.
17986
17987 2004-10-21  Martin Baulig  <martin@ximian.com>
17988
17989         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
17990         the stack pointer and the exception object in some struct and pass
17991         that to the debugger.
17992
17993 2004-10-21  Chris Toshok  <toshok@ximian.com>
17994
17995         * mono-debug-debugger.c (do_write_class): add instance/static
17996         event support.  We don't expose "raise" or "other" yet.
17997         (event_is_static): new method.
17998
17999 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
18000
18001         * mono-debug-debugger.c
18002         (mono_debugger_handle_exception): Remove
18003         bogus return value for fussy compilers.
18004
18005 2004-10-20  Martin Baulig  <martin@ximian.com>
18006
18007         * mono-debug-debugger.c
18008         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
18009         (mono_debugger_handled_exception): Likewise.
18010
18011 2004-10-20  Martin Baulig  <martin@ximian.com>
18012
18013         * mono-debug-debugger.h (MonoDebuggerEvent): Added
18014         MONO_DEBUGGER_EVENT_EXCEPTION.
18015
18016         * mono-debug-debugger.c (mono_debugger_handle_exception): New
18017         public function to send the debugger a notification for an
18018         exception and inform it about a catch/finally clause.
18019
18020 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
18021
18022         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
18023         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
18024         fix 2.95 build. 
18025
18026         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
18027
18028 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18029
18030         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
18031         marshalled as [In,Out]. Fixes #58325.
18032
18033 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
18034
18035         * reflection.c (mono_method_body_get_object): Implement some fields.
18036
18037 2004-10-12  Martin Baulig  <martin@ximian.com>
18038
18039         * reflection.c (mono_reflection_bind_generic_parameters): Small
18040         fix, correctly retrieve our parent from a generic instance.
18041
18042 2004-10-12  Martin Baulig  <martin@ximian.com>
18043
18044         * metadata.c (mono_metadata_generic_param_equal): We always have
18045         an owner.
18046
18047         * class.c
18048         (mono_class_from_generic_parameter): We need to have an owner.
18049         (my_mono_class_from_generic_parameter): Likewise.
18050
18051         * reflection.c (mono_reflection_setup_generic_class): Renamed to
18052         mono_reflection_create_generic_class() and added a new
18053         mono_reflection_setup_generic_class().  
18054         (mono_reflection_initialize_generic_param): If we're a nested
18055         generic type and inherited from the containing class, set our
18056         owner to the outer class.
18057
18058 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
18059
18060         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
18061
18062         * reflection.c (mono_method_body_get_object): New function to create
18063         a MethodBody object.
18064
18065         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
18066
18067 2004-10-11  Martin Baulig  <martin@ximian.com>
18068
18069         * metadata.c (_mono_metadata_type_equal): Renamed to
18070         do_mono_metadata_type_equal() and made static.
18071
18072 2004-10-11  Martin Baulig  <martin@ximian.com>
18073
18074         * appdomain.c: Bump corlib version number to 28.
18075
18076 2004-10-10  Martin Baulig  <martin@ximian.com>
18077
18078         * class-internals.h
18079         (MonoGenericInst): Added `MonoGenericContainer *container'.
18080         (MonoGenericMethod): Likewise.
18081         (MonoGenericContext): Likewise.
18082         (MonoGenericParam): Added `MonoGenericContainer *owner'.
18083
18084         * metadata.c
18085         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
18086         (do_mono_metadata_parse_generic_inst): Likewise.
18087         (mono_metadata_parse_type_full): New public method.  This is the actual
18088         mono_metadata_parse_type() implementation - with an additional
18089         `MonoGenericContainer *' argument.
18090         (mono_metadata_parse_array_full): Likewise.
18091         (mono_metadata_parse_signature_full): Likewise.
18092         (mono_metadata_parse_method_signature_full): Likewise.
18093         (mono_metadata_parse_mh_full): Likewise.
18094         (mono_type_create_from_typespec): Likewise.
18095         (mono_metadata_interfaces_from_typedef_full): New public method;
18096         this is similar to the other _full() methods, but we take a
18097         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
18098         (mono_metadata_parse_generic_param): Take an additional
18099         `MonoGenericContainer *' argument and lookup the MonoGenericParam
18100         from that container.
18101         (mono_metadata_generic_param_equal): New static method to compare
18102         two type parameters.
18103         (_mono_metadata_type_equal): New static method; takes an
18104         additional `gboolean signature_only' argument - if true, we don't
18105         compare the owners of generic parameters.
18106         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
18107         with a TRUE argument - do a signature-only comparision.
18108
18109         * loader.c: Use the new _full() methods and pass the
18110         MonoGenericContainer to them.
18111
18112         * object-internals.h (MonoReflectionTypeBuilder): Added
18113         `MonoGenericContainer *generic_container' field.
18114         (MonoReflectionMethodBuilder): Likewise.
18115
18116 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18117
18118         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
18119         case initial images of dynamic assemblies.
18120
18121         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
18122
18123         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
18124
18125         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
18126         length of event->other array.
18127         (typebuilder_setup_events): Ditto.
18128
18129         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
18130         'assembly_by_name' and add an 'assemblies' list.
18131
18132         * assembly.h assembly.c: Add a new search hook for determining whenever
18133         an assembly is already loaded. Use this instead of searching in the
18134         loaded_assemblies list.
18135
18136         * domain.c appdomain.c: Implement the new search hook so loaded 
18137         assemblies are now scoped by appdomain. Fixes #67727.
18138
18139 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * threads.c (mono_thread_attach): Initialize synch_lock field so
18142         mono_thread_detach works again.
18143
18144         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
18145         'lib' too. Fixes #63130.
18146
18147 2004-10-06  Jackson Harper  <jackson@ximian.com>
18148
18149         * culture-info-tables.h: regenerated.
18150
18151 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
18152
18153         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
18154         implemented by other interfaces in the result. Fixes #65764.
18155         
18156         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
18157         Handle unloadable modules without crashing.
18158
18159         * image.c (load_modules): Revert the previous patch since modules must
18160         have a fixed index inside the array.
18161         
18162         * image.c (load_modules): Don't include native modules in the modules
18163         array.
18164
18165 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * reflection.h: Add param_defaults field.
18168
18169         * reflection.c: Add support for parameter defaults in dynamic methods.
18170         Fixes #64595.
18171
18172         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
18173         an empty string when a type has no namespace. Fixes #64230.
18174
18175 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
18176
18177         * tabledefs.h: Added "internal" security actions to support non-CAS
18178         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
18179         Note: they do not seems to be used anymore in 2.0 (new metadata format)
18180
18181 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
18184         constructor of abstract class. Fixes #61689.
18185
18186 2004-10-04  Martin Baulig  <martin@ximian.com>
18187
18188         * class-internals.h (MonoGenericContainer): New type.
18189         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
18190         `MonoGenericContainer *generic_container'.
18191         (MonoClass): Replaced `gen_params' and `num_gen_params' with
18192         `MonoGenericContainer *generic_container'.
18193
18194         * metadata.c (mono_metadata_load_generic_params): Return a
18195         `MonoGenericContainer *' instead of a `MonoGenericParam *';
18196         removed the `num' argument.
18197
18198 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18199
18200         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
18201         for dynamic images.
18202
18203         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
18204         machine fields.
18205
18206         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
18207
18208         * reflection.c: Save pe_kind and machine values into the generated
18209         image file.
18210
18211         * appdomain.c: Bump corlib version number.
18212
18213         * object-internals.h: Reorganize layout of LocalBuilder.
18214
18215         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
18216         New helper function.
18217
18218         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
18219         created MonoType for dynamic types. Fixes #66180.
18220
18221 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
18222
18223         * threadpool.c: the ares hashtable needs a critical section around it.
18224         this prevents some nasty segfaults
18225
18226 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18227
18228         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
18229         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
18230         bug 67324).
18231         
18232 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
18233
18234         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
18235         
18236 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18237
18238         * image.c: Always canonicalize image file names, to avoid loading
18239         the same assembly twice when referenced using a relative path.
18240
18241 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
18242
18243         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
18244
18245         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
18246
18247         * marshal.c: Fix warnings.
18248
18249 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
18250
18251         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
18252         attempting to marshal the delegate_trampoline as the method_addr.
18253         This patch has a static hashtable of marshalled delegates so that 
18254         we can map delegate_trampoline addresses back to delegates.  This
18255         allows a delegate passed to managed code to be passed back into native
18256         code.  Fixes #67039
18257
18258 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18259
18260         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
18261
18262         * reflection.c (method_encode_code): Align method headers properly.
18263         Fixes #66025.
18264
18265 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18266
18267         * marshal.c: In the runtime invoke wrapper, reset the abort
18268         exception if it is cached. This avoids the automatic rethrowal of 
18269         the exception after the catch of the wrapper. Also check for pending
18270         interruptions before calling the managed method. This is done using
18271         the new method emit_thread_force_interrupt_checkpoint, since the
18272         normal checkpoint method is ignored when running the invoke wrapper.
18273         * object.c: If the abort exception is rethrown, set the abort_exc
18274         field of the thread, so it will be rethrown aftere every catch.
18275         * threadpool.c: Only run an interruption checkpoint if what has been
18276         requested is a stop of the thread (aborts will be ignored).
18277         * threads.c: By default, a thread will now never be interrumped while
18278         running the runtime invoke wrapper (this ensures that runtime_invoke
18279         will always return to the caller if an exception pointer is provided).
18280         There is a new special method mono_thread_force_interruption_checkpoint()
18281         to force an interruption checkpoint even if running a protected
18282         wrapper, which is used by the same runtime invoke wrapper to do a check
18283         at a safe point.
18284
18285 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18286
18287         * object.c, object-internals.h: Implemented mono_release_type_locks,
18288         which releases the cctor locks held by a thread.
18289         * threads.c, threads.h: In thread_cleanup, release cctor locks held
18290         by a thread. Added mono_thread_exit() method to be used to safely stop
18291         a thread.
18292
18293 2004-09-28  Raja R Harinath  <rharinath@novell.com>
18294
18295         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
18296         Move null check before dereference.  Avoid indexing beyond the end
18297         of the 'modules' array.
18298
18299 2004-09-28  Raja R Harinath  <rharinath@novell.com>
18300
18301         * metadata-internals.h (MonoImage): Add module_count field.
18302         * image.c (load_modules): Set image->module_count.
18303         (mono_image_load_file_for_image): Use image->module_count.
18304         * reflection.c (mono_image_load_module): Append to image->modules array 
18305         of dynamic assembly.
18306         (mono_module_get_object): Fix loop to actually increment index.
18307         Use image->module_count.
18308         * assembly.c (mono_assembly_load_references): Use image->module_count.
18309         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
18310         Likewise.
18311
18312 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18313
18314         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
18315         Avoid assert on generic types.
18316
18317 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
18320
18321         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
18322
18323         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
18324         function to convert a MarshalSpec structure to its managed counterpart.
18325
18326         * reflection.c: Fix warnings.
18327         
18328         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
18329         field.
18330
18331         * icall.c (mono_create_icall_signature): Fix build.
18332
18333 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18334
18335         * icall.c: Add MakePointType icall.
18336
18337         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
18338         warnings.
18339
18340 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18341
18342         * threadpool.c: reuse allocated slots in the queue.
18343
18344 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18345
18346         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
18347
18348         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
18349
18350         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
18351         previous change.
18352
18353         * tabledefs.h: Add constants for pinvoke attributes BestFit and
18354         ThrowOnUnmappableChar.
18355
18356         * icall.c (ves_icall_Type_GetPacking): New icall.
18357
18358 2004-09-24  Martin Baulig  <martin@ximian.com>
18359
18360         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
18361
18362 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18363
18364         * appdomain.c:
18365         (mono_domain_set): allow setting a domain that is being unloaded.
18366         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
18367         being unloaded.
18368
18369 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18370
18371         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
18372         the GetCustomAttributes icall.
18373
18374 2004-09-23  Martin Baulig  <martin@ximian.com>
18375
18376         * object-internals.h (MonoReflectionGenericParam): Replaced
18377         'has_ctor_constraint', `has_reference_type' and `has_value_type'
18378         with `guint32 attrs'.
18379
18380 2004-09-23  Martin Baulig  <martin@ximian.com>
18381
18382         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
18383
18384 2004-09-23  Martin Baulig  <martin@ximian.com>
18385
18386         * object-internals.h (GenericParameterAttributes): New enum.
18387
18388 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18389
18390         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
18391         
18392         * class.c (init_events): Fill out event->other field.
18393
18394         * class.c: Fix warnings.
18395
18396         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
18397
18398 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
18399
18400         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
18401         walk which doesn't supply the IL offset.
18402
18403 2004-09-22  Martin Baulig  <martin@ximian.com>
18404
18405         * reflection.c (mono_reflection_setup_internal_class): If we're
18406         System.ValueType, System.Object or System.Enum, set
18407         `klass->instance_size' and create the vtable.
18408         (mono_reflection_create_internal_class): If we're an enum type,
18409         get the base class from our current corlib.
18410
18411 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
18412
18413         * reflection.h (MonoResolveTokenError): New type.
18414
18415         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
18416         icall.
18417
18418         * icall.c: Add an 'error' argument to the ResolveToken icalls.
18419
18420 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
18421
18422         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
18423         Support also calling constructors, but only for already allocated objects.
18424
18425 2004-09-17  Geoff Norton <gnorton@customerdna.com>
18426
18427         * reflection.c (type_get_qualified_name): If the klass is null
18428         return the typename to avoid a NullRefEx.
18429         (encode_cattr_value): Get the qualified name of the boxed type,
18430         not the underlying enumtype.  Fixes #62984.
18431
18432 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * marshal.c: Fix problems with previous checkin.
18435
18436 2004-09-21    <vargaz@freemail.hu>
18437
18438         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
18439         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
18440
18441         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
18442
18443 2004-09-21  Geoff Norton <gnorton@customerdna.com>
18444
18445         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
18446         should only return a type for pointers, arrays, and passbyref types.
18447         Fixes bug #63841.
18448
18449 2004-09-21  Martin Baulig  <martin@ximian.com>
18450
18451         * domain.c (mono_debugger_check_runtime_version): New public
18452         function.
18453
18454         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
18455
18456 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
18457
18458         * reflection.c: Added missing sort to the declarative security 
18459         attributes table. MS implementation stops seeing the attributes if the
18460         token number regress in the table (as shown by ildasm and permview).
18461
18462 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
18463
18464         * object-internals.h (MonoReflectionModule): Add 'token' field.
18465         
18466         * reflection.c (mono_reflection_get_token): Add support for Module
18467         and Assembly.
18468         (mono_module_get_object): Set 'token' field.
18469         (mono_module_file_get_object): Set 'token' field.
18470
18471         * icall.c: Add new Assembly and Module icalls.
18472
18473         * appdomain.c: Bump corlib version.
18474
18475 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
18476
18477         * loader.h loader.c class.h class.c: Add helper functions for obtaining
18478         tokens of metadata objects.
18479
18480         * reflection.h reflection.c (mono_reflection_get_token): New function
18481         to obtain the token of a metadata object.
18482
18483         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
18484
18485 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18486
18487         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
18488         
18489         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
18490
18491 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
18492
18493         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
18494         * object-internals.h: Added 3 MonoArray* members to MonoReflection
18495         AssemblyBuilder to access the permissions set in the class lib.
18496         * reflection.c: Added security attributes encoding step in 
18497         mono_image_build_metadata.
18498         * tabledefs.h: Added new security actions defined in 2.0:
18499         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
18500
18501 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
18502
18503         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
18504         macro parameter.
18505
18506 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
18507  
18508         * locales.c: nullify the ICU_collator member of CompareInfo when it is
18509           finalized. There where random SIGSEVs at program termination, when
18510           an object being finalized was trying to do a string comparison and
18511           the current culture was already finalized.
18512  
18513 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18514
18515         * threads.c: call thread_cleanup before finishing the thread if we get
18516         there.
18517
18518 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
18519
18520         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
18521         assemblies from the parent. Fixes #65665.
18522
18523 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
18524
18525         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
18526         modifiers.
18527
18528 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
18529
18530         * reflection.h: add prototype for mono_get_dbnull_object
18531         * reflection.c: add prototypes for get_default_param_value_blobs 
18532         and mono_get_object_from_blob for fussier compilers
18533
18534 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
18535  
18536         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
18537         false deadlock checks in class initialization.
18538  
18539 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * image.c (mono_image_addref): Fix comment.
18542
18543         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
18544         possible.
18545
18546 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
18547
18548         * reflection.c (mono_param_get_objects): Modified to return
18549         ParameterInfo.DefaultValue object.
18550
18551         (get_default_param_value_blobs):
18552         (mono_get_object_from_blob):
18553         (mono_get_dbnull_object): New helper routines. 
18554
18555         * object.c (mono_get_constant_value_from_blob): New helper routine
18556         carved out from get_default_field_value ()
18557
18558         * object-internals.h (mono_get_constant_value_from_blob): Added
18559         function declaration.
18560
18561 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18562
18563         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
18564         referenced assemblies. Fixes #62135.
18565
18566         * exception.h exception.c (mono_get_exception_file_not_found2): New
18567         helper function.
18568
18569 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18570
18571         * class.h class.c: Add mono_type_get_underlying_type ().
18572
18573 2004-09-09  Geoff Norton <gnorton@customerndna.com>
18574
18575         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
18576         Fix GetTypes() to support dynamically created assemblies.
18577
18578 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
18581         
18582         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
18583         previous patch.
18584
18585         * reflection.h reflection.c loader.c: Allow dynamic construction of
18586         pinvoke methods. Fixes #65571.
18587         
18588         * reflection.c (mono_reflection_get_type): Revert previous change since
18589         it causes regressions.
18590
18591 2004-09-08  Martin Baulig  <martin@ximian.com>
18592
18593         * class.c (class_compute_field_layout): Don't call
18594         mono_class_layout_fields() for open generic instances.
18595
18596 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
18597         * threads.c appdomain.c: fix typo in GC macro
18598
18599 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18600
18601         * threads.c: don't call mono_thread_detach() in start_wrapper(),
18602         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
18603
18604 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * image.c (mono_image_close): Applied patch from 
18607         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
18608         assembly is loaded multiple times from data.
18609         
18610         * image.c (mono_image_open): Fix warning.
18611
18612 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
18615         once. Fixes #58334.
18616         
18617         * reflection.c (mono_reflection_create_runtime_class): Initialize
18618         klass->nested_classes. Fixes #61224.
18619
18620 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18621
18622         * threads.c: sched_yield() on exit, to allow threads to quit.
18623
18624 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * object.c (mono_unhandled_exception): Remove leftover debug code.
18627
18628 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
18629
18630         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
18631
18632 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18633
18634         * marshal.c (emit_marshal_array): Really null terminate string arrays.
18635         
18636         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
18637
18638 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * marshal.c (emit_marshal_array): Null terminate string arrays.
18641         
18642         * marshal.c (raise_auto_layout_exception): Fix warning.
18643
18644         * reflection.c (mono_param_get_objects): Initialize the default value
18645         with DBNull.Value, not null. Fixes #62123.
18646
18647 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
18648
18649         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
18650         throw an exception with a cute explanation.
18651
18652 2004-09-06  Dick Porter  <dick@ximian.com>
18653
18654         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
18655         Close the new process's thread handle, as we don't use it.  The
18656         handle stays around forever otherwise.
18657
18658 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18659
18660         * object.c (arith_overflow): Fix warning.
18661
18662         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
18663         calling conventions in method refs. Fixes #65352.
18664
18665         * reflection.c: Fix warnings.
18666
18667 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
18668
18669         * icall.c: Add a new icall for Array.Clear
18670
18671 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
18672
18673         * object.c: When allocating an array, we have to throw
18674         an overflow exception if any of the lengths are < 0.
18675
18676 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18677
18678         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
18679         properly. Also move implementation of string array marshalling to 
18680         managed code. Fixes #42316.
18681
18682 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18683
18684         * assembly.c: provide more information when loading an assembly fails.
18685
18686 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18687
18688         * filewatcher.c: don't expect the development fam package to be
18689         installed.
18690
18691 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * marshal.c: Make a copy of the signature cookie since it will be
18694         freed by the caller.
18695         
18696         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
18697
18698         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
18699
18700         * metadata.c (mono_metadata_free_marshal_spec): New function to free
18701         marshal specs.
18702
18703         * marshal.c: More refactoring.
18704         
18705         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
18706         smaller functions.
18707
18708 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
18709
18710         * object.c: In mono_message_invoke, fill the output parameter array after
18711           calling the managed method (it was done before the call). This fixes
18712           bug #59299.
18713
18714 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
18717         as well.
18718
18719 2004-09-02  Martin Baulig  <martin@ximian.com>
18720
18721         * class.c (mono_class_instance_size): Don't allow generic type
18722         definitions or open generic instances.
18723         (mono_class_array_element_size): If we're a value type, call
18724         mono_class_instance_size() on the original class.
18725
18726         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
18727         handle generic instances.
18728
18729         * mono-debug-debugger.c (write_type): Handle generic instances
18730         like classes.
18731
18732 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18733
18734         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
18735         the allocation request fails. Fixes #65089.
18736
18737         * object.c (mono_runtime_free_method): Do not call mono_free_method.
18738         
18739         * object.c (mono_runtime_free_method): New function to free a dynamic
18740         method.
18741
18742         * marshal.c (mono_delegate_free_ftnptr): New function to free the
18743         delegate trampoline.
18744
18745         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
18746         with hasthis as dynamic,
18747
18748         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
18749
18750         * domain.c (mono_jit_info_table_remove): New function to remove an
18751         entry from the jit info table.
18752
18753         * class-internals.h (MonoMethod): Add 'dynamic' field.
18754
18755         * loader.c: Fix warnings.
18756
18757 2004-09-01  Martin Baulig  <martin@ximian.com>
18758
18759         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
18760         instead of mono_debugger_lock() because the latter one is a no-op
18761         unless running in the debugger.
18762
18763 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
18764
18765         * class.c (class_compute_field_layout): Classes with auto-layout or
18766         reference fields are not blittable.
18767         
18768 2004-09-01  Dick Porter  <dick@ximian.com>
18769
18770         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
18771         mono_image_get_filename() to get the assembly location.
18772
18773         * icall.c:
18774         * metadata.h: Fix compile warnings
18775
18776 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
18777
18778         * class.c (class_compute_field_layout): System.Object is blittable.
18779
18780         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
18781         as in/out. Fixes #59909.
18782
18783 2004-09-01  Martin Baulig  <martin@ximian.com>
18784
18785         * metadata.h (MONO_TYPE_ISREFERENCE): Call
18786         mono_metadata_generic_inst_is_valuetype() if we're a generic
18787         instance to check whether our underlying type is a reference type.
18788
18789 2004-09-01  Martin Baulig  <martin@ximian.com>
18790
18791         * metadata.c (mono_type_size): If we're a generic instance, call
18792         mono_class_value_size() for value types.
18793
18794 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
18795
18796         * marshal.c: Implement more custom marshalling functionality. Fixes
18797         #64915.
18798
18799 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
18800
18801         * mono-debug.c, debug-mono-symfile.c: add some locking love.
18802
18803 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18804
18805         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
18806
18807         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
18808
18809         * icall.c: Fix some warnings.
18810
18811         * threads.c (abort_appdomain_thread): Fix unref errors.
18812         (mono_thread_current): Fix THREAD_DEBUG define.
18813
18814 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
18817
18818         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
18819
18820 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
18821
18822         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
18823         string arrays.
18824
18825 2004-08-28  Martin Baulig  <martin@ximian.com>
18826
18827         * metadata.c
18828         (mono_metadata_generic_inst_is_valuetype): New public function.
18829
18830         * metadata.h (MONO_TYPE_ISSTRUCT): Call
18831         mono_metadata_generic_inst_is_valuetype() if we're a generic
18832         instance to check whether our underlying type is a valuetype.
18833
18834 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18835
18836         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
18837         #63768.
18838
18839 2004-08-25  Martin Baulig  <martin@ximian.com>
18840
18841         * loader.c (mono_get_method_from_token): Abstract methods can also
18842         be generic and thus have type parameters.
18843
18844         * metadata-internals.h
18845         (MonoDynamicImage): Added `GPtrArray *gen_params'.
18846
18847         * reflection.c (mono_image_get_generic_param_info): Don't create a
18848         metadata row, just add an entry to the `gen_params' array.
18849         (build_compressed_metadata): Sort the `gen_params' array and then
18850         actually create the metadata.
18851
18852 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18853
18854         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
18855
18856 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
18859
18860 2004-08-24  Martin Baulig  <martin@ximian.com>
18861
18862         * class.cs (mono_class_is_subclass_of): Like an interface, a
18863         generic instance also derives from System.Object.
18864
18865 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18866
18867         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
18868         custom modifiers to be in any order. Fixes #61990.
18869
18870 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * object.c: Register mono_object_new_fast icall.
18873         
18874         * object.c (mono_class_get_allocation_ftn): Return to calling
18875         mono_object_new_fast, since it seems faster to compute the object 
18876         size in unmanaged code than passing it as a parameter.
18877
18878         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
18879
18880         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
18881         this function with Boehm as the oom handler, so we don't have to check
18882         the result of GC_malloc.
18883
18884         * object.c: Remove checks for oom.
18885
18886         * object.h object.c (mono_class_get_allocation_ftn): New function to
18887         return the icall which can be used to allocate an instance of a given
18888         class. 
18889
18890         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
18891
18892         * class-internals.h: Add 'enabled' field.
18893
18894 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
18897
18898 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
18899         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
18900         value 0x0010.
18901
18902 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18903
18904         * appdomain.c: use the Tls function for appdomain too,
18905         at Zoltan's request. Actually return in mono_context_get
18906
18907         * appdomain.c, profiler.c, threads.c: use __thread
18908
18909 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * appdomain.c threads.c: Call GC_CreateThread on windows.
18912
18913         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
18914         multiple libraries since this don't work on windows.
18915
18916 2004-08-18  Martin Baulig  <martin@ximian.com>
18917
18918         * class-internals.h
18919         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
18920         MonoMethodHeader.
18921
18922         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
18923         MonoMethodNormal since we also need it for abstract and interface
18924         methods.
18925
18926         * reflection.c
18927         (build_compressed_metadata): Sort the GenericParam table.
18928         (mono_image_create_token): Added `gboolean create_methodspec'
18929         argument; this is false when generating a MethodImpl token.
18930         (reflection_methodbuilder_to_mono_method): Abstract and interface
18931         methods may also have generic parameters.
18932
18933 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18934
18935         * appdomain.c: thread local alloc
18936
18937 2004-08-17  Martin Baulig  <martin@ximian.com>
18938
18939         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
18940
18941         * icall.c
18942         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
18943         argument.
18944
18945         * class.c (mono_type_get_full_name): New public function.
18946         (mono_type_get_name): Don't include the type arguments.
18947
18948 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * Makefile.am: Build static versions of libmetadata and libmonoruntime
18951         for inclusion into the mono executable.
18952
18953 2004-08-16  Martin Baulig  <martin@ximian.com>
18954
18955         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
18956         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
18957
18958 2004-08-14  Martin Baulig  <martin@ximian.com>
18959
18960         * class.c (dup_type): Also copy the `byref' field.
18961
18962 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18963
18964         * reflection.c (create_dynamic_mono_image): Revert the last change 
18965         since it breaks bootstrap.
18966
18967 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18968
18969         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
18970
18971         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
18972         not free them with g_free.
18973
18974 2004-08-11  Martin Baulig  <martin@ximian.com>
18975
18976         * reflection.c (mono_reflection_setup_internal_class): Also call
18977         mono_class_setup_mono_type() if we already have a `tb->type.type'.
18978
18979 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
18980
18981         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
18982         called during default (first) AppDomain creation. Keep track of
18983         Evidence when loading assemblies.
18984
18985 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
18986
18987         * opcodes.c, opcodes.h: reduce runtime relocations.
18988
18989 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
18990
18991         * culture-info.h, locales.c: fixes and chages to sue the new
18992         optimized format of the locale data.
18993         * culture-info-tables.h: regenerated.
18994
18995 2004-08-06  Geoff Norton <gnorton@customerdna.com>
18996         
18997         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
18998
18999 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
19000
19001         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
19002         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
19003         * domain-internals.h: icall declaration.
19004         * icall.c: icall registration.
19005         * object-internals.h: New fields in MonoAssembly for CAS.
19006
19007 2004-08-05  Duncan Mak  <duncan@ximian.com>
19008
19009         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19010         CEE_LDELEM_ANY.
19011
19012 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
19013
19014         * reflection.c: fix to deal with object[] arrays in custom ctors
19015         (bug #62550).
19016
19017 2004-08-05  Martin Baulig  <martin@ximian.com>
19018
19019         * class.c (mono_class_array_element_size): Added support for
19020         generic instances and correctly handle "recursive" types.
19021
19022 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19023
19024         * assembly.c: Fix warnings.
19025
19026 2004-08-04  Martin Baulig  <martin@ximian.com>
19027
19028         * class.c
19029         (mono_type_get_name_recurse): Added `gboolean include_arity'
19030         argument specifying whether or not we should include the generic
19031         arity in the type name.
19032         (_mono_type_get_name): New static function.
19033         (mono_class_setup_vtable): If we're a generic instance, don't
19034         include the generic arity in the names of explicit method
19035         implementations.        
19036
19037 2004-08-03  Martin Baulig  <martin@ximian.com>
19038
19039         * class.c (mono_type_get_name_recurse): Enclose the generic type
19040         arguments in `<', '>'.
19041
19042 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
19043
19044         * gc.c: make GC warning messages use the trace API, they are just
19045         noise to most of the users.
19046
19047 2004-08-03  Martin Baulig  <martin@ximian.com>
19048
19049         * debug-mono-symfile.c (read_string): Correctly read the string.
19050
19051 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
19054         
19055         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
19056         icalls.
19057         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
19058
19059 2004-07-30  Martin Baulig  <martin@ximian.com>
19060
19061         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
19062         Reflect latest symbol writer changes.   
19063
19064 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
19065
19066         * object.c: always create an object if null is passed
19067         to Invoke() where a valuetype is expected.
19068
19069 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19070
19071         * marshal.c (mono_marshal_init): make managed
19072         signatures match native ones better for 64bits.
19073
19074 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19075
19076         * appdomain.c: hack to build correctly the private bin path on windows.
19077         Fixes bug #61991.
19078
19079 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19080
19081         * assembly.c: Load mscorlib from the correct framework directory
19082           (mono/<version>/mscorlib.dll).
19083         * appdomain.h: Added prototypes for new functions.
19084         * internals.h: Added some prototypes.
19085         * domain.c: When initializing the runtime, get from the executable and
19086           the configuration files the runtime version that the app supports.
19087           Added support methods for reading app.exe.config. Added list of versions
19088           supported by the JIT. Added two new methods: mono_init_from_assembly,
19089           which initializes the runtime and determines the required version from
19090           the provided exe file, and mono_init_version, which initializes
19091           the runtime using the provided version.
19092         * icall.c: Get machine.config from version-specific directory.
19093         * reflection.c: When generating an image, embed the version number
19094           of the current runtime.
19095
19096 2004-07-28  Dick Porter  <dick@ximian.com>
19097
19098         * socket-io.c
19099         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
19100         returned sockaddr size before creating the remote address object.
19101         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
19102         61608.
19103
19104 2004-07-28  Dick Porter  <dick@ximian.com>
19105
19106         * locales.c (string_invariant_compare_char): Fix invariant char
19107         compares between upper and lower cases.  Fixes bug 61458.
19108
19109 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
19110         
19111         * marshal.c: actually cache stelem.ref wrappers.
19112         
19113 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19114
19115         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
19116         sections and remove the mono_cli_rva_map () function.
19117
19118 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19119
19120         * debug-mono-symfile.c: fix one more endianess issue, from a patch
19121         by Geoff Norton (<gnorton@customerdna.com>).
19122
19123 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
19124
19125         * class.c: fix class loads for pointer types (typeof(int) !=
19126         typeof(int*)).
19127
19128 2004-07-27  Martin Baulig  <martin@ximian.com>
19129
19130         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
19131         reading the debugging information from an external ".mdb" file.
19132
19133 2004-07-24  Martin Baulig  <martin@ximian.com>
19134
19135         * reflection.c (mono_image_get_type_info): Only write a class
19136         layout entry if we actually have a size or a packing size.
19137
19138 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
19139
19140         * reflection.c (type_get_fully_qualified_name): 
19141         insert cast to get type checking of ?: with non-gcc compilers
19142
19143 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
19144
19145         * rand.c: use g_getenv for both lookups of
19146         MONO_EGD_SOCKET
19147
19148 2004-07-17  Martin Baulig  <martin@ximian.com>
19149
19150         * reflection.c (mono_reflection_bind_generic_method_parameters):
19151         Set `gmethod->reflection_info'.
19152
19153 2004-07-17  Martin Baulig  <martin@ximian.com>
19154
19155         * class.c (mono_class_create_from_typedef): Insert the newly
19156         created class into the hash table before computing the interfaces
19157         since we could be called recursively.
19158
19159 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19160
19161         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
19162         function to implement stelem.ref in managed code
19163         * class-internals.h, debug-helpers.c: a new wrapper type
19164         for the above.
19165
19166 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
19167
19168         * gc.c: allow GC handles to work even when no GC is compiled in.
19169         Fix part of bug #61134 (GetAddrOfPinnedObject).
19170
19171 2004-07-13  Peter Williams  <peter@newton.cx>
19172  
19173         * process.c (complete_path): Make sure we don't attempt to execute
19174         directories.
19175  
19176 2004-07-12  Geoff Norton <gnorton@customerdna.com>
19177
19178         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
19179           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
19180           and will add/subtract the hour if needed
19181
19182 2004-07-12  Martin Baulig  <martin@ximian.com>
19183
19184         * reflection.c (mono_field_get_object): If we have
19185         `field->generic_info', take the attributes from
19186         `field->generic_info->generic_type'.    
19187
19188 2004-07-12  Martin Baulig  <martin@ximian.com>
19189
19190         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
19191         This function must be called before initializing the runtime.
19192         (mono_debug_init_1): New function; call this after initializing
19193         the runtime, but before loading the assembly.  It tells the
19194         debugger to load corlib and the builtin types.
19195
19196         * mono-debug-debugger.c: Did some larger changes in the debugging
19197         code; support recursive class declarations, make sure we actually
19198         add all classes.
19199
19200 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19201
19202         * debug-helpers.c: undo my previous patch and fixed the real issue in
19203         ../mini/exceptions-x86.c
19204
19205 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19206
19207         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
19208         when no HOME env. variable was set and a NullRef was thrown in a .cctor
19209         called from other .cctors.
19210
19211 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
19212
19213         * loader.c: Removed the mono_loader_wine_init hack now that we are
19214         doing a managed version of Windows.Forms.
19215
19216 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19217
19218         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
19219         threadpool.c, threads.c: remove static data from rootset.
19220
19221 2004-07-09  Dick Porter  <dick@ximian.com>
19222
19223         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
19224         Don't do any more processing if the matched length was 0.  It was
19225         increasing the size of the string before.  Fixes bug 61167.
19226
19227 2004-07-09  Dick Porter  <dick@ximian.com>
19228
19229         * socket-io.h:
19230         * socket-io.c
19231         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
19232         Add support for SO_PEERCRED if its available.
19233
19234 2004-07-09  Peter Bartok <pbartok@novell.com>
19235         * loader.c: winelib.exe.so error message is now only displayed if
19236         MONO_DEBUG is set. To help us avoid questions when people are trying
19237         out the new Managed.Windows.Forms.
19238
19239 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19240
19241         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
19242         for isinst and castclass wrappers.
19243
19244         * class-internals.h icall.c: Move registration and lookup of JIT icalls
19245         to libmetadata from the JIT, so they could be used by the marshalling
19246         code and the interpreter.
19247
19248         * marshal.c: Register marshalling related JIT icalls here instead of
19249         in mini.c. Use CEE_MONO_ICALL instead of the family of 
19250         CEE_MONO_PROC<x> opcodes to call marshalling functions.
19251
19252         * metadata.h: Remove unneeded marshalling conversions.
19253
19254         * opcodes.c: Update for new opcodes.
19255         
19256 2004-07-08  Martin Baulig  <martin@ximian.com>
19257
19258         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
19259         (mono_debug_get_domain_data): Make this function static.
19260
19261 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
19262
19263         * gc.c, object.h: add nice GC handle API for embedders.
19264
19265 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19266
19267         * reflection.c: more changes for the new api
19268
19269         * object.c: When we reflect on a field w/ a constant value, it
19270         will not have a memory location, so we must access metadata. Also,
19271         allow easier reading of strings so that we can read them from
19272         the constant data.
19273
19274         * class.c (mono_class_layout_fields): no need for literal fields here.
19275
19276         * class-internals.h: api changes for const fields
19277
19278         * icall.c (ves_icall_get_enum_info): use new apis for const fields
19279
19280 2004-07-06  Martin Baulig  <martin@ximian.com>
19281
19282         * mono-debug.h: Increment version number to 44.
19283
19284         * mono-debug.c (mono_debug_add_wrapper): The second argument is
19285         now a gpointer, rewrote this whole method.
19286
19287         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
19288         function.  Add information about the wrapper in a new "misc table".
19289
19290         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
19291         for the new misc table.
19292
19293 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * metadata-internals.h image.c: Add a cache for helper signatures.
19296
19297         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
19298
19299 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19300
19301         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
19302         delegates from a delegate. Fixes #61033.
19303         
19304         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
19305         marshalling of stringbuilder arrays. Fixes #59900.
19306
19307 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * icall.c: Add EnumBuilder:setup_enum_type icall.
19310
19311 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19312
19313         * icall.c: Added a new icall for the property version of
19314         OffsetOfStringData.
19315
19316 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19317
19318         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
19319         it has a constant size across platforms.
19320
19321         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
19322         stack trace.
19323
19324 2004-06-29  Martin Baulig  <martin@ximian.com>
19325
19326         * mono-debug.c (mono_debug_add_method): Protect the whole function
19327         in mono_debugger_lock(), not just parts of it.
19328
19329 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19330
19331         * reflection.c: make sure padding bytes in heaps are zeroed.
19332
19333 2004-06-24  David Waite  <mass@akuma.org>
19334
19335         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
19336         image.c, loader.c, locales.c, marshal.c, metadata.c,
19337         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
19338         string-icalls.c, threads.c: change to C90-style comments from C99 /
19339         C++ -style
19340
19341 2004-06-24  Dick Porter  <dick@ximian.com>
19342
19343         * threads.c
19344         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
19345         return createdNew.  Fixes bug 60412.
19346
19347         * threads-types.h: 
19348         * icall.c: Add createdNew parameter to CreateMutex icall
19349
19350 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19351
19352         * reflection.c, object-internals.h: save default value in params.
19353
19354 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19355
19356         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
19357         no need to build a new path combining that with the application base.
19358         Fixes bug #60442.
19359
19360 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19361
19362         * reflection.c: fixed minor standard compliance issues.
19363
19364 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
19365
19366         * reflection.c: fixed issue with encoding some custom attributes
19367         (arrays in properties and fields, bug #60411).
19368
19369 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19370
19371         * reflection.c: fix start address when copying the public key token.
19372
19373 2004-06-23  Martin Baulig  <martin@ximian.com>
19374
19375         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
19376         the `exc' object in a static object to put it into the GC's root set.
19377
19378 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
19379
19380         * reflection.c: make mono_reflection_setup_internal_class ()
19381         callable a second time to setup a new parent class.
19382
19383 2004-06-23  Dick Porter  <dick@ximian.com>
19384
19385         * threads.c: Check for WAIT_IO_COMPLETION return values.
19386
19387 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
19388
19389         * appdomain.c: Removed the g_free on the public key token. Now copy 
19390         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
19391         * assembly.c: Added public key token string value when loading 
19392         assemblies. Fix bug #60439.
19393         * icall.c: Added missing informations (like public key) in 
19394         GetReferencedAssemblies. Fix #60519.
19395         * image.h: Changed definition for public key token from const char*
19396         public_tok_value to guchar public_key_token [17];
19397         * reflection.c: Updated for changes to public key token.
19398
19399 2004-06-22  Lluis Sanchez Gual
19400
19401         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
19402         for the field in base classes.
19403
19404 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
19405
19406         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
19407         mark headers as not supported, they are installed only for use by the
19408         debugger.
19409
19410 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
19411
19412         * *.c, *.h: avoid namespace pollution in public headers.
19413
19414 2004-06-21  Martin Baulig  <martin@ximian.com>
19415
19416         * exception.c (mono_get_exception_security): It's in
19417         "System.Security", not in "System".
19418
19419         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
19420         the exception classes.
19421
19422 2004-06-21  Martin Baulig  <martin@ximian.com>
19423
19424         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
19425         Protect the exception object from being finalized.
19426
19427 2004-06-21  Martin Baulig  <martin@ximian.com>
19428
19429         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
19430         public function.
19431
19432 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
19433
19434         * reflection.c: Load the assembly in mono_reflection_type_from_name,
19435         if it was not loaded before. Fix parts of #60439.
19436
19437 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
19438
19439         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
19440         code that was broken since Ben's change: wrappers are now
19441         dependent on the method signature only again.
19442
19443 2004-06-21  Martin Baulig  <martin@ximian.com>
19444
19445         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
19446         added interface support.
19447
19448 2004-06-21  Martin Baulig  <martin@ximian.com>
19449
19450         * class.c (mono_vtable_get_static_field_data): New public method.
19451
19452 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
19453
19454         * filewatcher.c : Windows build fix to be compliant with API changes.
19455
19456 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19457
19458         * class.h, class.c: more accessors.
19459         * metadata.h, metadata.c: prepare for hiding MonoType and
19460         MonoMethodSignature: people should use the accessors from now on
19461         outside of the tree.
19462
19463 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19464
19465         * *.c, *.h: more API cleanups.
19466
19467 2004-06-18  Jackson Harper  <jackson@ximian.com>
19468
19469         * assembly.c: Trace loading assemblies.
19470         * loader.c: Trace loading native libraries.
19471         * mono-config.c: Trace loading config files.
19472         
19473 2004-06-18  Dick Porter  <dick@ximian.com>
19474
19475         * locales.c: Tell ICU the lengths of strings, it can cope with
19476         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
19477
19478 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19479
19480         * image.c: swapped name/filename;
19481
19482 2004-06-18  Martin Baulig  <martin@ximian.com>
19483
19484         * mono-debug-debugger.c (write_class): Write the parent class at
19485         the end of the header.
19486
19487 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
19488
19489         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
19490
19491 2004-06-17  Raja R Harinath  <rharinath@novell.com>
19492
19493         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
19494         (bundle_obj): New conditional define.
19495         (BUILT_SOURCES): Remove.
19496         ($(bundle_srcs)): Make parallel-make safe.
19497         (libmonoruntime_la_LIBADD): Make unconditional.
19498         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
19499         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
19500
19501 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
19502
19503         * culture-info-tables.h: It was inconsistent with the latest
19504           supp info files.
19505
19506 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
19507
19508         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
19509         be loaded.
19510
19511         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
19512         with gcc 2.95.
19513
19514 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19515
19516         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
19517         cleaned up public header threads.h.
19518
19519 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19520
19521         * Makefile.am, *.c, *.h: more API cleanups.
19522
19523 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19524
19525         * Makefile.am: removed monosn from compilation.
19526         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
19527         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
19528         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
19529         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
19530         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
19531         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
19532
19533 2004-06-15  Jackson Harper  <jackson@ximian.com>
19534
19535         * assembly.c: Make locales lower case when searching the GAC for
19536         assemblies. gacutil will always make locales lowercase when
19537         installing so this effectively makes them case insensitive.
19538         
19539 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
19540
19541         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
19542         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
19543           parameter which allows to choose whether the wait can be interrupted or 
19544           not. Also added the method mono_monitor_enter(), which locks the monitor
19545           using an infinite wait and without allowing interruption.
19546           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
19547           interrupted.
19548         * object.h: Added new fields in MonoThread. suspend_event holds the event
19549           used to susped/resume the thread. synch_lock is the lock object to use for
19550           modifying the thread state.
19551         * threads.c: Use the new synch_lock object for locking, instead of "this",
19552           which can generate deadlocks.
19553           Moved thread state change in Thread.Sleep and Thread.Join from managed
19554           to unmanaged code. This avoids a deadlock when the thread was suspended
19555           just after acquiring the thread lock.
19556           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
19557           Implemented Thread.Suspend using an event instead of ThreadSuspend,
19558           which is not fully implemented in the io-layer.
19559         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
19560
19561 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
19562
19563         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
19564         threads-types.h: more API cleanups.
19565
19566 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19567
19568         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
19569         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
19570         threadpool.c, threads.c: first pass at the exported API cleanup.
19571
19572 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19573
19574         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
19575
19576 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19577
19578         * icall.c: added internalGetHome.
19579
19580 2004-06-14  Dick Porter  <dick@ximian.com>
19581
19582         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
19583         possible to return successfully when '.' or '..' were the only
19584         entries in a directory, but were skipped.  The MonoIOStat was not
19585         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
19586         Fixes bug 59574.
19587
19588 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19589
19590         * reflection.c: make binaries run on .Net 1.1 by default.
19591
19592 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19593
19594         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
19595
19596 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
19597
19598         * marshal.c: keep track of struct size with explicit layout
19599         (bug #59979).
19600
19601 2004-06-12  Martin Baulig  <martin@ximian.com>
19602
19603         * mono-debug-debugger.c: Comment out a debugging g_message().
19604
19605 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
19606
19607         * reflection.c, reflection.h: do not free custom attrs that are cached.
19608         * icall.c: use braces to make code clearer.
19609
19610 2004-06-11  Martin Baulig  <martin@ximian.com>
19611
19612         * class.h (MonoInflatedField): New type.
19613         (MonoClassField): Replaced `MonoType *generic_type' with
19614         `MonoInflatedField *generic_info'.
19615
19616         * icall.c
19617         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
19618
19619 2004-06-11  Martin Baulig  <martin@ximian.com>
19620
19621         * reflection.c (mono_image_create_method_token): Correctly encode
19622         varargs methods.
19623
19624 2004-06-11  Martin Baulig  <martin@ximian.com>
19625
19626         * metadata.c (mono_metadata_parse_method_signature): When parsing
19627         a MethodDef which has VarArgs, also set sentinelpos if we don't
19628         have any parameters.
19629
19630 2004-06-11  Martin Baulig  <martin@ximian.com>
19631
19632         * verify.c (mono_method_verify): In CEE_CALL, use
19633         mono_method_get_signature() to get the method's signature, unless
19634         we're a PInvoke method.
19635
19636 2004-06-10  Jackson Harper  <jackson@ximian.com>
19637
19638         * assembly.c: Use <path>/lib/mono/gac for the extra paths
19639         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
19640         logical name as the supplied path is just a prefix to the gac not
19641         the direct path to it.
19642         
19643 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
19644
19645         * reflection.c: make the token for a created method match
19646         the token of the MethodBuilder it was created from
19647         (IKVM requires this behaviour now).
19648
19649 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
19650
19651         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
19652         reflection.c, socket-io.c: leak fixes.
19653
19654 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19655
19656         * icall.c: handle sentinel pos in vararg methods in position different
19657         from 0.
19658
19659 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19660
19661         * culture-info-tables.h: freshly generated.
19662
19663 2004-06-09  Martin Baulig  <martin@ximian.com>
19664
19665         * loader.c (mono_get_method_constrained): Call `mono_class_init
19666         (constrained_class)'.   
19667
19668 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
19669
19670         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
19671         any methods. Fixes #59629.
19672
19673 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
19674
19675         * culture-info-tables.h: reflecting locale-builder updates.
19676
19677 2004-06-08  Dick Porter  <dick@ximian.com>
19678
19679         * object.h:
19680         * locales.c: Fixed compile warnings, including a real bug in
19681         CompareInfo_internal_compare.
19682         
19683 2004-06-08  Dick Porter  <dick@ximian.com>
19684
19685         * locales.c
19686         (ves_icall_System_Globalization_CompareInfo_internal_index):
19687         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
19688         Double-check the resuls of usearches, because ICU currently
19689         ignores most of the collator settings here.  Fixes bug 59720.
19690         
19691 2004-06-08  Dick Porter  <dick@ximian.com>
19692
19693         * locales.c
19694         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
19695         Fix memory leak and segfault-causing typo.  No idea how this one
19696         lasted so long without being noticed.
19697
19698 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
19701         any methods. Fixes #59629.
19702
19703 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19704
19705         * assembly.c:
19706         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
19707         own the critical section before). Removed dead code (that's done
19708         in the preload hook).
19709
19710         (mono_assembly_load_with_partial_name): call the preload hook.
19711
19712 2004-06-08  Martin Baulig  <martin@ximian.com>
19713
19714         * metadata.c (mono_metadata_signature_alloc): Default
19715         `sentinelpos' to -1.
19716
19717         * reflection.c (mono_image_get_array_token): Likewise.
19718
19719 2004-06-08  Martin Baulig  <martin@ximian.com>
19720
19721         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
19722
19723         * metadata.c (mono_metadata_parse_method_signature): When parsing
19724         a MethodDef which has VarArgs, set sentinelpos.
19725
19726         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
19727         `gint16' since we're using -1 for non-varargs methods.
19728
19729         * reflection.c
19730         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
19731         (method_encode_signature): Added varargs support.
19732         (method_builder_encode_signature): Likewise.
19733         (mono_image_get_varargs_method_token): New static method.
19734         (mono_image_create_method_token): New public method; this is
19735         called via an icall instead of mono_image_create_token() when
19736         calling a varargs method.       
19737
19738 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
19739
19740         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
19741
19742 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
19743
19744         * culture-info-tables.h : Reflecting the latest locale-builder that
19745           fixed empty array representation ({} to {0}).
19746
19747 2004-06-07  Jackson Harper  <jackson@ximian.com>
19748
19749         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
19750         looking up extra gac paths. This allows MONO_GAC_PATH to act
19751         exactly like a prefix.
19752         
19753 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * reflection.c (mono_reflection_type_from_name): Make a copy of the
19756         type name before modifying it. Fixes #59405.
19757
19758 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
19759
19760         * culture-info.h: added fields for "all datetime patterns".
19761         * locales.c: (  ves_icall_System_Globalization_CultureInfo
19762           _construct_datetime_format ()): fill xxx_patterns fields.
19763         * object.h: added fields for "all datetime patterns" to
19764           MonoDateTimeFormatInfo.
19765         * culture-info-tables.h: reflecting locale-builder updates.
19766
19767 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
19770         the event has no add and remove methods. Fixes #59629.
19771
19772 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
19773
19774         * object.c: Fixed possible integer overflow when allocating large
19775         strings.
19776
19777 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
19778
19779         * culture-info-tables.h: reflecting locale-builder updates.
19780
19781 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
19782
19783         * culture-info-tables.h: reflecting locale-builder updates.
19784
19785 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
19786
19787         * culture-info-tables.h: reflecting locale-builder updates.
19788
19789 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
19790
19791         * threads.c: Made Thread.Sleep abortable.
19792
19793 2004-06-02  Martin Baulig  <martin@ximian.com>
19794
19795         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
19796
19797         * debug-mono-symfile.h: Bumped symbol file version number to 37.
19798
19799 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
19800
19801         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
19802
19803 2004-05-30  Jackson Harper  <jackson@ximian.com>
19804
19805         * reflection.c: Do not hardcode assembly versions or public key
19806         tokens anymore. All of this except the corlib section was dead
19807         code anyways.
19808         
19809 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * object.c (mono_runtime_invoke_array): Automatically create boxed
19812         objects for byref valuetypes if needed. Fixes #59300.
19813         
19814         * object.c (mono_method_return_message_restore): Handle 
19815         MONO_TYPE_OBJECT as well.
19816
19817 2004-05-28  Jackson Harper  <jackson@ximian.com>
19818
19819         * reflection.c: The modified type encoding was causing build
19820         problems. Reverted for now.
19821         
19822 2004-05-28  Jackson Harper  <jackson@ximian.com>
19823
19824         * reflection.c/h: Take an assembly ref so that we dont create
19825         fully qualified names when encoding types in the same assembly as
19826         the custom attribute being emitted.
19827         * appdomain.c: Increment version number.
19828         
19829 2004-05-26  Duncan Mak  <duncan@ximian.com>
19830
19831         * icall.c
19832         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
19833         Set the full version number (major, minor, build, revision).
19834
19835 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
19836
19837         * marshal.c (emit_struct_conv): increment src/dst after blit
19838         (mono_marshal_get_managed_wrapper,
19839         mono_marshal_get_native_wrapper): make sure we have marshalling
19840         info before marshalling params (info computation affects
19841         blittable)
19842
19843         * class.c (class_compute_field_layout): correctly deal with
19844         blittable
19845         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
19846         value types (as per what windows dows by default)
19847         (mono_class_setup_mono_type): System.ValueType is blittable
19848         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
19849         blittable
19850
19851         * marshal.c (mono_marshal_load_type_info): flag types  as
19852         non-blittable if the native layout doesn't match the managed
19853         layout
19854
19855 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19856
19857         * appdomain.c: don't add stuff in the private search path that is
19858         above the application base. If application base is not set, there's
19859         no private search path.
19860
19861 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19862
19863         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
19864         byref struct arguments in native->managed marshalling.
19865
19866 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
19867
19868         * marshal.c (mono_marshal_get_runtime_invoke): correctly
19869         cache methods using signature (special case for methods
19870         that are value type or string class)
19871         
19872         * image.c (mono_image_close): clean up allocated GSList's
19873         in runtime_invoke_cache.
19874
19875 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19876
19877         * mono-config.c: set the correct path for mono_cfg_dir on windows when
19878         there's no MONO_CFG_DIR environment variable defined.
19879
19880 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19881
19882         * threads.c: windows version must be >= 0x0500 to include OpenThread.
19883
19884 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
19885
19886         * threadpool.c: Really wait for 500ms after the async call, even if the wait
19887           is interrumped.
19888         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
19889           before waiting for it, and call CloseHandle after the wait to unref it.
19890           This will make sure that handles are not disposed too early.
19891
19892 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19893
19894         * appdomain.c:
19895         * appdomain.h:
19896         * icall.c: removed
19897         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
19898         needed now.
19899
19900         * object.c: se the application_base only for the domain that runs
19901         Main. Fixes bug #59216,
19902
19903 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19904
19905         * appdomain.c:
19906         * object.c: only the domain in which Main is run have
19907         SetupInformation.ConfigurationFile set, so moved a few lines from
19908         appdomain.c to object.c.
19909
19910 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19911
19912         * appdomain.c: we tried to load [name].(dll|exe), but according
19913         to bug #57710, we must also try [culture]/[name].(dll|exe) and
19914         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
19915         There's a test case attached to bug #58922.
19916
19917 2004-05-27  Dick Porter  <dick@ximian.com>
19918
19919         * icall.c:
19920         * file-io.c: Implemented icalls for locking and unlocking regions
19921         in a file.
19922         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
19923         FALSE on error (fixes both compiler warning and real bug.)
19924
19925 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
19926
19927         * culture-info-tables.h: reflecting locale-builder updates.
19928
19929           (Added missing ChangeLog entry for 05/26)
19930
19931 2004-05-27  Jackson Harper  <jackson@ximian.com>
19932
19933         * locales.c: Fix some cut and paste errors.
19934         
19935 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19936
19937         * mono-config.c: set the correct path for config. directory on windows.
19938
19939 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19940
19941         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
19942           on win32.
19943
19944 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19945
19946         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
19947         from pinvoke functions.
19948         
19949         * marshal.c (mono_ftnptr_to_delegate): Implement this.
19950
19951 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19952
19953         * culture-info-tables.h: reflecting locale-builder updates.
19954
19955 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
19958         #59086.
19959
19960 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
19961
19962         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
19963         * icall.c: Modified icalls for RNG.
19964         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
19965         Windows (CryptoAPI).
19966
19967 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * locales.c: Fix build.
19970
19971 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
19972
19973         * culture-info-tables.h: reflecting locale-builder updates.
19974
19975 2004-05-25  Jackson Harper  <jackson@ximian.com>
19976
19977         * locales.c: When creating the current culture use the $LANGs
19978         specific culture. So DateTimeFormat and NumberFormat entries are created.
19979         
19980 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19981
19982         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
19983         a char array as parameter.
19984
19985 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
19986
19987         * image.c: In mono_image_open(), always use an absolute path name to
19988           look for already loaded images.
19989
19990 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
19991
19992         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
19993         missing in the windows build (like older cygwin include files).
19994
19995 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
19996
19997         * icall.c: Fixed check for possible integer overflow in Buffer_
19998         BlockCopy icall. Replaced comments style // by /* */.
19999
20000 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
20003         
20004         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
20005         check after MONO_VTADDR. Fixes pinvoke2.exe.
20006
20007         * marshal.h marshal.c metadata.h: Add beginnings of support for
20008         ftnptr -> delegate marshalling.
20009
20010 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
20013         * threads.c: Fix warnings.
20014
20015 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20016
20017         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
20018         * icall.c: Registered icalls for Suspend and Resume.
20019         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
20020           Thread.Abort.
20021         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
20022         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
20023         * process.c: Use WaitForSingleObjectEx.
20024         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
20025           checkpoints.
20026         * threads.c, threads.h: Make use of new Ex wait methods. Improved
20027           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
20028           for Suspend and Resume. Added new mono_thread_stop, used for stoping
20029           background threads. Added basic support for Abort in Windows.
20030           Start new threads using a managed delegate invoke wrapper. This wrapper
20031           has an interruption checkpoint that is needed since an interruption
20032           can be requested before the thread leaves the unmanaged code that starts 
20033           the thread.
20034         * marshal.c: Added interruption checkpoint after every native call, and
20035           also before managed calls for wrappers called from unmanaged code to
20036           go into managed code.
20037         * object.h: Added new field in MonoThread to keep track of interruption
20038           requests.
20039
20040 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20041
20042         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
20043         calls.
20044
20045 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20046
20047         * appdomain.c:
20048         * assembly.c:
20049         * gc.c:
20050         * locales.c:
20051         * mono-config.c:
20052         * rand.c: getenv -> g_getenv (windows!)
20053
20054         * process.c: complete_path is also used on non-windows platforms.
20055
20056 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20057
20058         * icall.c: new signature for Process_Start.
20059
20060         * process.[ch]: new signature for Process_Start. If we're on windows
20061         and UseShellExecute is false, we have to search for the program by
20062         ourselves if we don't get a full path.
20063
20064 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20065
20066         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
20067         marshalling and call CleanUpNativeData if needed. Fixes #58646.
20068
20069 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20070
20071         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
20072         Fixes bug #58373.
20073
20074 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20075
20076         * process.c: use double quotes to quote program name and arguments on
20077         windows. Fixes bug #58575.
20078
20079 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20080
20081         * file-io.c: don't return "." and ".." when using windows Find*File.
20082
20083 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
20084
20085         * marshal.c: Don't pass wrappers to message init because method 
20086         addressed used to lookup metadata. part of remoting[2|3] fix.
20087
20088 2004-05-15  Jackson Harper  <jackson@ximian.com>
20089
20090         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
20091         path is essentially the same as MONO_PATH except that it points to
20092         GACs instead of lib directories.
20093         * loader.h: The user gac is gone so we dont need function to
20094         enable/disable it.
20095         * mono-config.c: user gac option is now gone.
20096         
20097 2004-05-15  Jackson Harper  <jackson@ximian.com>
20098
20099         * culture-info.h: Make defines more consistent, add calendar data
20100         to the culture info table.
20101         * culture-info-tables.h: Add basic calendar data. Basically
20102         everyone gets default gregorian until all the data is
20103         updated.
20104         * locales.c: Use the new consistent defines. Set calendar data for
20105         culture info objects.
20106         * object.h: add a field for calendar data to CultureInfo
20107         
20108 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20109
20110         * image.c: image->runtime_invoke_cache is keyed on signatures now.
20111         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
20112         a signature.
20113         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
20114         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
20115         an extra param that is the pointer of the method to invoke. The IL for
20116         the invoke method is no longer specific to the method, but to the
20117         signature of the method. Thus, we can share the same code for multiple
20118         methods. This reduces the number of methods that have to be compiled.
20119
20120 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
20123
20124         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
20125
20126         * icall.c: Optimize Buffer.BlockCopy.
20127
20128 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20129
20130         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
20131         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
20132         quote). Changed them to "MMMM yyyy".
20133
20134 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
20135
20136         * rand.c
20137         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
20138
20139 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * reflection.h: Updated after changes to managed structures.
20142
20143         * appdomain.c: Bump corlib version.
20144
20145 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20146
20147         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
20148         windows.
20149
20150 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20151
20152         * Makefile.am: link to ../os/libmonoos.la on windows.
20153
20154         * assembly.c:
20155                 -If MONO_DEBUG, warn about non-existing directories in
20156                 MONO_PATH.
20157                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
20158                 compile time variable.
20159                 -Removed init_default_path and call mono_set_rootdir from
20160                 libmonoos.a instead (windows only).
20161
20162         * assembly.h: declare mono_assembly_getrootdir().
20163
20164         * domain.c:
20165         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
20166
20167         * loader.c: s/getenv/g_getenv/
20168
20169 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20170
20171         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
20172
20173         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
20174
20175         * metadata.h: Add new marshalling conversions.
20176
20177         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
20178         function.
20179
20180         * reflection.c (mono_reflection_get_type): Lookup the type in all
20181         modules of a multi-module assembly. Fixes #58291.
20182
20183 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20184
20185         * threads.c: Before aborting a background, set the StopRequested
20186         state.  This avoids throwing the Abort exception.
20187         In mono_thread_manage, don't continue with the shutdown until all
20188         aborted threads have actually stopped.
20189
20190 2004-05-10  Jackson Harper  <jackson@ximian.com>
20191
20192         * locales.c: Remove the modifier from culture names.
20193         
20194 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20195
20196         * Makefile.am: monosn is not installed any more. It has been deprecated
20197         in favor of sn.
20198
20199 2004-05-07  Jackson Harper  <jackson@ximian.com>
20200
20201         * locales.c
20202         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
20203         Fix array construction, add bailout if the length is 0.
20204
20205 2004-05-07  Dick Porter  <dick@ximian.com>
20206
20207         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
20208         machine doesn't have a DNS entry.  Patch by Urs Muff
20209         (umuff@quark.com), fixes bug 57928.
20210
20211 2004-05-06  Jackson Harper  <jackson@ximian.com>
20212
20213         * reflection.c: Handle null PublicTokens properly. alloc mem for
20214         assembly names culture so we dont crash when freeing it.
20215         
20216 2004-05-06  Jackson Harper  <jackson@ximian.com>
20217
20218         * assembly.c: Check the usergac when loading with partial names.
20219         
20220 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
20221
20222         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
20223         does nothing for now (not required for Linux/Windows) but the class
20224         library can call it (and a newer or modified runtime could need it).
20225         * icall.c: Registred icall.
20226
20227 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20228
20229         * loader.c: prints a message on module loading error we set MONO_DEBUG
20230         environment variable.
20231
20232 2004-05-05  Jackson Harper  <jackson@ximian.com>
20233
20234         * appdomain.c: Handle PublicKeyToken=null properly.
20235         
20236 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
20237
20238         * environment.c|h: Added icall ves_icall_System_Environment_
20239         GetOSVersionString to get the current OS version as a string.
20240         * icall.c: Registred icall.
20241
20242 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
20243
20244         * object.c: in mono_object_get_virtual_method(), take into account that
20245         non-virtual methods don't have a slot in the vtable. Check needed when
20246         the object is a proxy.
20247
20248 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
20251         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
20252
20253         * object.c (mono_class_compute_gc_descriptor): Fix warning.
20254
20255         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
20256         passed when a valuetype is expected.
20257
20258         * object.c (mono_unhandled_exception): Only set the exit code if the
20259         exception happens in the main thread. Fixes thread5.exe.
20260
20261         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
20262         invalid names. Fixes #58047.
20263
20264 2004-05-03  Jackson Harper  <jackson@ximian.com>
20265
20266         * assembly.c: This line was committed accidently and is unneeded.
20267         
20268 2004-05-03  Jackson Harper  <jackson@ximian.com>
20269
20270         * icall.c: Add new icall for Assembly::LoadWithPartialName
20271         * assembly.c/.h: new function that probes the GAC to load partial
20272         assembly names by Paolo Molaro.
20273         
20274 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20275
20276         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
20277         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
20278         (type_get_fully_qualified_name): Added PublicKeyToken when building a
20279         full type name.
20280
20281 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20282
20283         * appdomain.c: fixed check for 'neutral' culture and removed warning.
20284         * reflection.c: fix bug when parsing a full type name and Version is not
20285         the last thing in the string.
20286
20287 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
20290         crashes when it is freed.
20291
20292 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20293
20294         * assembly.c: print the compat warning to stderr.
20295
20296 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
20297
20298         * assembly.c (mono_assembly_load_references): Add a compatibility
20299         hack to run old applications that might be still referencing the
20300         3300-based assemblies, only do this for System.xxx.
20301
20302 2004-05-01  Jackson Harper  <jackson@ximian.com>
20303
20304         * appdomain.c: If the culture is neutral we set it to "".
20305         
20306 2004-04-29  Jackson Harper  <jackson@ximian.com>
20307
20308         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
20309
20310 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
20311  
20312         * string-icalls.c: added low overhead function for copying chars
20313         * icall.c: added needed icall for the above function
20314  
20315 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20316
20317         * icall.c: fix return value of get_global_assembly_cache.  Implemented
20318         Environment.GetLogicalDrives.
20319
20320 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
20321
20322         * rand.c: try and talk to egd or prngd
20323         for random bytes if opening devices fail.
20324
20325 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
20328         alignment for the type using the native alignment of its members 
20329         instead of using klass->min_align.
20330
20331         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
20332
20333 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20334
20335         * file-io.c:
20336         * socket-io.c: added check for sys/aio.h.
20337
20338 2004-04-28  Dick Porter  <dick@ximian.com>
20339
20340         * threads.c: Don't abort a thread thats already aborting, when
20341         terminating everything.
20342
20343 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20344
20345         * icall.c: added 2 new async calls for Socket.
20346
20347         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
20348         IO on *nix systems.
20349
20350         * threadpool.c: removed unused variable.
20351
20352 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
20355
20356 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20357
20358         * locales.c: put back string_invariant_tolower () and
20359         string_invariant_toupper ().
20360
20361 2004-04-26 David Waite <mass@akuma.org>
20362
20363         * file-io.h:
20364         * socket-io.h:
20365         * threads.h:
20366         * unicode.h: remove comma from end of enumeration declarations
20367
20368 2004-04-26 David Waite <mass@akuma.org>
20369
20370         * debug-mono-symfile.h:
20371         * decimal.c:
20372         * mono_debug.h:
20373         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
20374
20375
20376 2004-04-26  Jackson Harper  <jackson@ximian.com>
20377
20378         * appdomain.c: Increment version number.
20379         
20380 2004-04-26  Jackson Harper  <jackson@ximian.com>
20381
20382         * appdomain.c: Set assembly references public token value when
20383         PublicKeyToken is specified, not the hash_value. Free public token
20384         values when free assembly name data. Previously the public key
20385         token was hex decoded, however we are using hex encoded public key
20386         tokens, so this is not neccasary.
20387         * assembly.c: Lookup assemblies in the gac if their public token
20388         value is set. Add function to allow enabling user gac
20389         lookups. Specify whether or not the assembly was loaded from the
20390         GAC. Compare full assembly names when checking the cache for
20391         assemblies (Temporarily disabled see comment in code). Remove
20392         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
20393         specifies trace-loader they get extra info to stdout on the
20394         loading of assemblies.
20395         * image.h: Add a field for an assembly references public token
20396         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
20397         whether an assembly has been loaded from the GAC.
20398         * image.c: Remove a corlib -> mscorlib name mapping.
20399         * loader.h: Add function to enable/disable the user gac.
20400         * mono-config.c: Check if the usergac is enabled in the config
20401         file.
20402         * icall.c: New icall to determine whether or not an assembly has
20403         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
20404         * tabldefs.h: Add constant for assemblyref flag that specifies a
20405         full public key is used instead of a public token.
20406         * reflection.c: Remove mscorlib -> corlib mappings. Set
20407         PublicTokenValue instead of hash value. This value is a hex
20408         string so it does not need to be expanded.
20409
20410 2004-04-26  Martin Baulig  <martin@ximian.com>
20411
20412         * mono-debug-debugger.c (mono_debugger_initialize): Set
20413         `mono_debugger_initialized' before calling mono_debug_lock().
20414
20415 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
20416
20417         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
20418           InternalToUpper/InternalToLower.
20419         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
20420           removed invariant culture shortcut.  This is now done in managed code.
20421         * locales.c: (string_invariant_toupper/tolower) removed.
20422
20423 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20424
20425         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
20426         Added Poll internal call.
20427
20428         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
20429         call for Poll. Select was too heavy for polling a single socket.
20430
20431         * threadpool.[ch]: added mono_threadpool_cleanup.
20432         * threads.c: use it. Don't use Thread_Abort on windows.
20433
20434 2004-04-23  Martin Baulig  <martin@ximian.com>
20435
20436         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
20437
20438 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
20439
20440         * icall.c: Registred new icalls for key pair protection and added an
20441         icall for Environment.GetFolderPath on Windows.
20442         * security.c|h: Added new icalls for key pair protection.
20443
20444 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20445
20446         * socket-io.c: don't display the non-supported family warning for known
20447         families. Now this is not displayed on windows when checking support
20448         for IPv4/IPv6.
20449
20450 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20451
20452         * class.c: don't display the layout warning for static fields.
20453
20454 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
20455
20456         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
20457         * locales.c, locales.h: Added new icalls for culture-specific
20458         Char.ToLower and Char.ToUpper.
20459
20460 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20461
20462         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
20463         by David Waite.
20464
20465 2004-04-20  Martin Baulig  <martin@ximian.com>
20466
20467         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
20468         of the type name before passing it to mono_reflection_type_from_name().
20469
20470 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20471
20472         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
20473         encodings here. Fixes #56965.
20474
20475 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
20476
20477         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
20478         fix test on strstr result not that I can see anything that
20479         relies on the result.
20480
20481 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20482
20483         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
20484         Fixes #57081.
20485
20486         * marshal.c (mono_marshal_get_string_encoding): New helper function.
20487
20488         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
20489         function to determine which marshalling to use for strings. Fixes
20490         #56965.
20491
20492         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
20493
20494         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
20495
20496 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
20497
20498         * icall.c: #include mono-config.h
20499
20500 2004-04-15  Jackson Harper  <jackson@ximian.com>
20501
20502         * culture-info-tables.h: Fix date formats for en-US culture.
20503         
20504 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
20505
20506         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
20507         ThreadPool.SetMinThreads.
20508         * threadpool.c: Implemented ThreadPool.GetMinThreads and
20509         ThreadPool.SetMinThreads.
20510
20511 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20512
20513         * mono-config.c: also load the .config file in the directory
20514         where the assembly was found.
20515
20516 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20517
20518         * assembly.c: load per-assembly config files.
20519         * icall.c: decrapified code to get the config dir and moved to
20520         mono-config.c.
20521         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
20522         per-assembly config files. When doing a dll map lookup give precedence
20523         to the per-assembly data.
20524
20525 2004-04-14  Martin Baulig  <martin@ximian.com>
20526
20527         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
20528         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
20529         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
20530
20531         * mono-debugger-debugger.c: While the debugger is locked, remember
20532         whether the symbol tables have changes and send one single
20533         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
20534
20535 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
20538
20539         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
20540         function.
20541
20542         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
20543         account when marshalling string arrays. Fixes #56965.
20544
20545 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
20546
20547         * icall.c: Add new icalls mapping for security.
20548         * security.c|h: Add internal calls for WindowsIdentity,
20549         WindowsImpersonationContext and WindowsPrincipal.
20550
20551 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
20552
20553         * class.c: Added comment to ensure the System.MonoDummy class
20554         is removed when no longer necessary
20555
20556 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20557
20558         * appdomain.c: Pass arguments to the bootstraping exceptions to
20559         minimize JITed methods at boot
20560
20561         * metadata.c (mono_exception_from_name_two_strings): Allow for the
20562         second string to be null.
20563
20564         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
20565         Change the protocol to minimize the JIT methods at startup.  Now
20566         it Returns the internal codepage, if the value of "int_code_page"
20567         is 1 at entry, and we can not compute a suitable code page
20568         number, returns the code page as a string.
20569
20570 2004-04-13  Jackson Harper  <jackson@ximian.com>
20571
20572         * culture-info-tables.h: Fix number of decimal digits for all
20573         english locales.
20574
20575 2004-04-13  Jackson Harper  <jackson@ximian.com>
20576
20577         * icall.c: Clairfy out of sync error message. It is not always
20578         your corlib that is out of sync.
20579
20580 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
20581
20582         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
20583         properties when only the set accessor is overriden. Fixes #55874.
20584
20585 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
20586
20587         * assembly.c (mono_assembly_load_references): Make this thread safe.
20588         Fixes #56327.
20589
20590 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20591
20592         * monosn.c: Add missing initialization calls.
20593
20594 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
20595
20596         * locales.c:
20597         ves_icall_System_Globalization_CultureInfo_construct_number_format
20598         Fix g_assert so it compiles on fussier compilers re int/ptr
20599         mismatch
20600
20601 2004-04-08  Dick Porter  <dick@ximian.com>
20602
20603         * socket-io.h:
20604         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
20605         53992.  Also rearrange the code so that the internal calls return
20606         an error value and exceptions are thrown from managed code.
20607
20608         * icall.c: Add type info to the socket icalls.
20609
20610 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20611
20612         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
20613         owes me a beer.
20614
20615 2004-04-07  Martin Baulig  <martin@ximian.com>
20616
20617         * class.c (mono_class_from_generic_parameter): Don't default
20618         `klass->parent' to `mono_defaults.object_type'.
20619
20620 2004-04-07  Martin Baulig  <martin@ximian.com>
20621
20622         * reflection.c (mono_reflection_initialize_generic_parameter): Set
20623         `param->pklass->reflection_info'.       
20624
20625 2004-04-07  Jackson Harper  <jackson@ximian.com>
20626
20627         * culture-info-tables.h: Fix date separator symbol.
20628         
20629 2004-04-07  Martin Baulig  <martin@ximian.com>
20630
20631         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
20632         from System.Type to System.MonoType.
20633
20634 2004-04-07  Martin Baulig  <martin@ximian.com>
20635
20636         * reflection.h
20637         (MonoReflectionGenericParam): Added `has_reference_type' and
20638         `has_value_type' fields.
20639
20640         * reflection.c (mono_image_get_generic_param_info): Encode the
20641         correct flags if we have the `class' or `struct' constraint.
20642
20643 2004-04-07  Martin Baulig  <martin@ximian.com>
20644
20645         * reflection.h
20646         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
20647
20648 2004-04-07  Jackson Harper  <jackson@ximian.com>
20649
20650         * appdomain.c: Revert extra patches, just wanted to bump the
20651         version number.
20652         
20653 2004-04-07  Jackson Harper  <jackson@ximian.com>
20654
20655         * Makefile.am: Add culture-info private headers.
20656         * icall.c: Add new icalls for contructing locales.
20657         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
20658         * locales.h: Declare new culture info construction methods.
20659         * object.h: Add new fields used to avoid the CultureMap to
20660         MonoCultureInfo.
20661         * culture-info.h: Definition of structs used in the culture info
20662         tables.
20663         * culture-info-tables.h: Autogenerated tables that contain culture
20664         info data. This file was generated with the locale-builder tool.
20665         * appdomain.c: Incement corlib version number.
20666         
20667 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
20668
20669         * appdomain.c: (mono_runtime_init) move mono_thread_init
20670         to before mono_object_new calls so critical sections
20671         are initialized before use.
20672
20673 2004-04-07  Martin Baulig  <martin@ximian.com>
20674
20675         * icall.c
20676         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
20677         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
20678         (ves_icall_MonoGenericParam_initialize): Removed.
20679         (monogenericparam_icalls): Removed.
20680         (generictypeparambuilder_icalls): Added new table for
20681         System.Reflection.Emit.GenericTypeParameterBuilder.
20682
20683         * reflection.c
20684         (mono_reflection_define_generic_parameter): Removed.
20685         (mono_reflection_initialize_generic_parameter): This is now called
20686         from GenericTypeParameterBuilder's .ctor.
20687
20688 2004-04-06  Martin Baulig  <martin@ximian.com>
20689
20690         * class.c (mono_class_init): Don't inflate nested classes in a
20691         generic instance.
20692         (mono_type_get_name_recurse): Include the generic arguments for
20693         generic instances and generic type declarations.
20694         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
20695         (_mono_class_get_instantiation_name): Removed.
20696         (mono_class_create_generic): Always use `gklass->name' as our name.
20697
20698         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
20699
20700         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
20701         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
20702         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
20703         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
20704         closed generic methods here.
20705
20706         * reflection.c
20707         (mono_reflection_generic_inst_get_nested_types): Removed.
20708         (inflate_mono_method): Copy the generic parameters from the
20709         MonoMethodHeader into out MonoGenericMethod.
20710
20711 2004-04-06  Martin Baulig  <martin@ximian.com>
20712
20713         * row-indexes.h
20714         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
20715
20716         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
20717
20718         * reflection.c (build_compressed_metadata): If we have any entries
20719         in the GenericParam, MethodSpec or GenericParamConstraint tables,
20720         set the header version to 1.1.
20721
20722 2004-04-06  Martin Baulig  <martin@ximian.com>
20723
20724         * class.c (mono_class_init): If we're a generic instance,
20725         initialize our nested classes, too.
20726         (_mono_class_get_instantiation_name): Deal with the new `!%d'
20727         suffix. 
20728
20729 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20730
20731         * process.c: quote the argument passed to the shell on windows.
20732
20733 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * threads.c (mono_alloc_special_static_data): Allow this to be
20736         called during startup.
20737
20738 2004-04-02  Martin Baulig  <martin@ximian.com>
20739
20740         * icall.c
20741         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
20742
20743 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20744
20745         * icall.c: Fix build.
20746
20747 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
20748
20749         * Makefile.am: Added security.c|h.
20750         * icall.c: Added icall for get_UserName;
20751         * security.c: New file for security related icalls. Added function
20752         get_UserName for System.Environment (fix #56144).
20753         * security.h: New. Header file for security.c
20754
20755 2004-04-02  Dick Porter  <dick@ximian.com>
20756
20757         * icall.c: Deleted the icalls that were obsoleted some time ago
20758         by the ICU string code, and which were mixed into the icall
20759         rearranging.  Fixes bug 55969.
20760
20761         * string-icalls.h: 
20762         * string-icalls.c: Deleted the code that those icalls reference.
20763
20764 2004-04-01  Martin Baulig  <martin@ximian.com>
20765
20766         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
20767
20768         * class.c (mono_class_from_generic_parameter): Don't set 
20769         TYPE_ATTRIBUTE_INTERFACE.
20770         (my_mono_class_from_generic_parameter): Likewise.
20771
20772 2004-04-01  Martin Baulig  <martin@ximian.com>
20773
20774         * loader.c (find_method): Added an optional `MonoClass *ic'
20775         argument to search in a specific interface.
20776         (mono_get_method_constrained): New public function.
20777
20778 2004-04-01  Martin Baulig  <martin@ximian.com>
20779
20780         * reflection.c (mono_image_get_generic_field_token): Use the
20781         `handleref' cache here.
20782
20783 2004-04-01  Martin Baulig  <martin@ximian.com>
20784
20785         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
20786
20787         * reflection.c (create_generic_typespec): Use the `typespec' hash
20788         here, not the `typeref' one.    
20789
20790 2004-04-01  Martin Baulig  <martin@ximian.com>
20791
20792         * class.c (mono_class_inflate_generic_type): Moved the
20793         functionality into a new static inflate_generic_type() which
20794         returns NULL if it didn't do anything.  Only increment the
20795         `mono_stats.inflated_type_count' if we actually inflated
20796         something.
20797         (mono_class_get_full): Check the classes type to see whether we
20798         need to inflate it; also inflate MONO_TYPE_(M)VAR.
20799
20800 2004-04-01  Jackson Harper  <jackson@ximian.com>
20801
20802         * reflection.c: Set culture for assembly references.
20803         
20804 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
20805
20806         * reflection.[ch], icall.[ch], Fix support for pinning variables.
20807
20808 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20809
20810         * assembly.c:
20811         (do_mono_assembly_open): the critical section also covers
20812         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
20813
20814 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20815
20816         * threads.c:
20817         (mono_manage_threads): abort the background threads when finishing.
20818         Fixes bug #47232.
20819
20820 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20821
20822         * gc.c: only close the done_event handle if there was no timeout.
20823         C-ified comments.
20824
20825 2004-03-30  Martin Baulig  <martin@ximian.com>
20826
20827         * icall.c (icall_entries): It's called "System.Activator", not
20828         "System.Activation".    
20829
20830 2004-03-30  Martin Baulig  <martin@ximian.com>
20831
20832         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
20833         (mono_class_create_from_typespec): Likewise.
20834
20835 2004-03-30  Martin Baulig  <martin@ximian.com>
20836
20837         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
20838         `has_ctor_constraint' and `initialized'.
20839
20840 2004-03-30  Martin Baulig  <martin@ximian.com>
20841
20842         * reflection.c (encode_new_constraint): New static function to add
20843         the constructor constraint attribute to a type parameter.
20844         (encode_constraints): Call encode_new_constraint() if necessary.
20845
20846         * reflection.h
20847         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
20848
20849         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
20850         
20851 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
20852
20853         * reflection.c, icall.c: add support for pinning variables. 
20854
20855 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
20856
20857         * marshal.c (mono_marshal_get_managed_wrapper):
20858         init bool local with zero rather than null.
20859
20860 2004-03-29  Martin Baulig  <martin@ximian.com>
20861
20862         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
20863         the "official" behavior here.
20864         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
20865
20866 2004-03-29  Martin Baulig  <martin@ximian.com>
20867
20868         * icall.c: Reflect latest API changes.
20869
20870 2004-03-29  Martin Baulig  <martin@ximian.com>
20871
20872         * loader.c (mono_get_method_from_token): Also call
20873         mono_metadata_load_generic_params () for abstract and interface
20874         methods; replace the type arguments in the method signature with
20875         the ones which are loaded from the metadata.
20876
20877 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
20878
20879         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
20880         of the lock is not the current thread. MS.NET don't do it, in spite of
20881         what the documentation says. See bug #56157.
20882
20883 2004-03-28  Martin Baulig  <martin@ximian.com>
20884
20885         * class.c (mono_class_init): Don't call init_properties() and
20886         init_events() for generic instances; set `prop->parent' when
20887         inflating properties.
20888
20889         * reflection.c (mono_generic_inst_get_object): Call
20890         `mono_class_init (ginst->klass)'.
20891         (mono_type_get_object): Only create a MonoGenericInst if your
20892         generic type is a TypeBuilder.
20893         (do_mono_reflection_bind_generic_parameters): Only set
20894         `ginst->is_dynamic' if our generic type is a TypeBuilder.
20895
20896 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
20899         Fixes #56091.
20900
20901 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20902
20903         * icall.c: added Kill_internal icall.
20904         * process.[ch]: added Kill_internal icall.
20905
20906 2004-03-25  Martin Baulig  <martin@ximian.com>
20907
20908         * class.h (MonoStats): Added `generic_instance_count',
20909         `inflated_method_count', `inflated_type_count' and
20910         `generics_metadata_size'.       
20911
20912 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20913
20914         * reflection.c: no warnings now.
20915
20916 2004-03-25  Martin Baulig  <martin@ximian.com>
20917
20918         * class.c (mono_class_get_full): New public function; does a
20919         mono_class_get(), but also takes a `MonoGenericContext *'.
20920
20921         * loader.c (mono_field_from_memberref): Renamed to
20922         `field_from_memberref', made static and added `MonoGenericContext *'
20923         argument.
20924         (mono_field_from_token): Added `MonoGenericInst *' argument.
20925         (method_from_memberef): Likewise.
20926         (mono_get_method_from_token): Likewise.
20927         (mono_get_method_full): New public function; does a
20928         mono_get_method(), but also takes a `MonoGenericContext *'.
20929
20930         * verify.c (mono_method_verify): Get the method's generic context
20931         and pass it to mono_field_from_token(), mono_get_method_full() and
20932         mono_class_get_full().
20933
20934 2004-03-25  Martin Baulig  <martin@ximian.com>
20935
20936         * class.c (mono_class_inflate_generic_type): Take a
20937         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
20938         `MonoGenericMethod *'.
20939
20940 2004-03-25  Martin Baulig  <martin@ximian.com>
20941
20942         * loader.h (MonoMethodInflated): Store the MonoGenericContext
20943         instead of the MonoGenericMethod here.
20944
20945 2004-03-25  Martin Baulig  <martin@ximian.com>
20946
20947         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
20948         each time we create a new MonoGenericInst, we also create a new
20949         context which points back to us.
20950
20951         * class.c (inflate_method): Use `ginst->context' instead of
20952         creating a new context.
20953
20954         * loader.c (method_from_memberref): Use
20955         `klass->generic_inst->context' instead of creating a new context.
20956
20957 2004-03-25  Martin Baulig  <martin@ximian.com>
20958
20959         * class.h (MonoGenericContext): New struct.
20960         (MonoGenericMethod): Removed `generic_inst'.
20961
20962         * class.c (mono_class_inflate_generic_method): Take a
20963         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
20964
20965 2004-03-25  Martin Baulig  <martin@ximian.com>
20966
20967         * loader.h (MonoMethodInflated): New typedef.
20968
20969         * metadata.h (MonoMethodSignature): Removed `gen_method', make
20970         `generic_param_count' consume just 30 bits, added `is_inflated'
20971         and `has_type_parameters' flags (one bit each).
20972
20973         * class.c (mono_class_inflate_generic_method): Create a
20974         MonoMethodInflated instead of a MonoMethodNormal and set
20975         `is_inflated' in the method signature.
20976
20977         * class.h (MonoGenericMethod): Removed `generic_method'.
20978
20979 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
20980
20981         * image.c: Make sure the name of a MonoImage is always an absolute path.
20982           This fixes bug #54415.
20983
20984 2004-03-24  Martin Baulig  <martin@ximian.com>
20985
20986         * class.c (mono_class_setup_vtable): If we're a generic instance,
20987         use our generic type's vtable size.
20988
20989 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
20992         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
20993         problems.
20994
20995 2004-03-23  Martin Baulig  <martin@ximian.com>
20996
20997         * class.h (MonoDynamicGenericInst): Added `int count_events' and
20998         `MonoEvent *events'.
20999
21000         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
21001         (typebuilder_icalls): Added "get_event_info"; calls
21002         mono_reflection_event_builder_get_event_info(). 
21003
21004         * reflection.c (mono_reflection_generic_inst_initialize): Added
21005         `MonoArray *events'.
21006         (mono_reflection_event_builder_get_event_info): New function.
21007
21008 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
21009
21010         * object.h: add mono_type_initialization_init
21011
21012         * object.c (mono_runtime_class_init): 
21013         implement class constructor synchronization rules
21014         to cope with threading issues.  
21015         add mono_type_initialization_init
21016
21017         * appdomain.c (mono_runtime_init): call 
21018         mono_type_initialization_init
21019
21020         * class.h: removing initializing field from MonoVTable
21021
21022 2004-03-23  Martin Baulig  <martin@ximian.com>
21023
21024         * class.c (my_mono_class_from_generic_parameter): Use
21025         `param->name' if it's not NULL. 
21026
21027 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
21028
21029         * class.c: do not insert non-virtual methods in the vtable.
21030         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
21031         that means the method is non-virtual. This never would have
21032         happened before.
21033
21034 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21035
21036         * profiler.c: Added lock for accessing coverage_hash.
21037
21038 2004-03-22  Martin Baulig  <martin@ximian.com>
21039
21040         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
21041         `method->method->signature->generic_param_count != 0' to make it
21042         work for interface methods.
21043
21044 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21045
21046         * process.c: quote the string passed to the shell using g_shell_quote.
21047
21048 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21049
21050         * threads.c:
21051         (mono_threads_manage): don't remove the finalizer thread and self
21052         from the threads hash table so that mono_thread_manage can be called
21053         more than once.
21054
21055 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21056
21057         * process.c: quote the arguments when UseShellExecute is true. Fixes
21058         bug #55790.
21059
21060 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21061
21062         * threads.c: set mono_thread_detach as a cleanup routine for every
21063         thread. This way it's always executed upon thread termination, either
21064         aborted or finished normally. No more xsp hangs!
21065
21066 2004-03-17  Martin Baulig  <martin@ximian.com>
21067
21068         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
21069         `int count_nested' and a `MonoType **nested'.
21070
21071         * reflection.c (mono_reflection_bind_generic_parameters): Moved
21072         most of the functionality into a new static
21073         do_mono_reflection_bind_generic_parameters() and don't take a
21074         `MonoType *nested_in' argument any more.  Don't compute nested
21075         types here.
21076         (mono_reflection_generic_inst_get_nested_types): New public method
21077         to get nested types.
21078
21079         * class.c (mono_class_create_generic): Set `klass->nested_in' if
21080         we're a nested class.
21081
21082         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
21083         mono_reflection_generic_inst_get_nested_types() to compute the
21084         nested types.
21085
21086 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21087
21088         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
21089         descriptive error message under windows.
21090         
21091 2004-03-17  Martin Baulig  <martin@ximian.com>
21092
21093         * class.c (dup_type): Added `const MonoType *original' argument;
21094         copy the attrs from the original type.
21095
21096 2004-03-17  Martin Baulig  <martin@ximian.com>
21097
21098         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
21099         `m->generic_inst_cache' here.
21100
21101 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * exception.h exception.c: Add stack_overflow_exception.
21104
21105 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21106
21107         * threadpool.c:
21108         (overlapped_callback): call SetEvent *after* invoking the callback.
21109         No need to call CloseHandle.
21110
21111 2004-03-16  Martin Baulig  <martin@ximian.com>
21112
21113         * reflection.c (mono_image_get_fieldref_token): Take a
21114         `MonoReflectionField *' instead of a `MonoClassField *' and a
21115         `MonoClass *'; store the `MonoReflectionField *' in the hash.
21116
21117 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21118
21119         * appdomain.c: don't add the culture to the filename we're looking for
21120         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
21121
21122 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21123
21124         * locales.c: don't ignore symbols when doing case insensitive compares.
21125         Thanks Dick! Fixes bug #54046.
21126
21127         * threads.c: surround 'threads' usage with enter/leave in
21128         mono_thread_manage.
21129
21130 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21131
21132         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
21133         implicitly marshalled as [Out]. Fixes #55450.
21134
21135         (mono_marshal_get_runtime_invoke): Zero out the result if there is
21136         an exception.
21137
21138 2004-03-16  Martin Baulig  <martin@ximian.com>
21139
21140         * class.c (mono_class_from_generic_parameter): Use the actual
21141         parameter name. 
21142
21143 2004-03-16  Martin Baulig  <martin@ximian.com>
21144
21145         * reflection.c (type_get_signature_size): New static function.
21146         Compues the size of the type in a method signature.
21147         (method_get_signature_size): New static function; calls
21148         type_get_signature_size() to compute the actual size of the
21149         method's signature.
21150         (method_encode_signature): Use method_get_signature_size() to get
21151         the signature's size rather than using `nparams * 10'.
21152
21153 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21154
21155         * file-io.h: define here WapiOverlapped on windows. I don't want the
21156         regular OVERLAPPED one.
21157
21158         * file-io.c:
21159         * threadpool.c: somehow, BindIoCompletionCallback is not found.
21160         Disabling AIO on windows.
21161
21162 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21163
21164         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
21165         bug #55385.
21166
21167 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21168
21169         * appdomain.c: upgraded corlib version.
21170
21171         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
21172         and BeginWrite. Allow opening files for asynchrnous operations.
21173
21174         * file-io.h: new struct that maps FileStreamAsyncResult.
21175         * icall.c: added new icalls.
21176         * process.[ch]: support setting child process environment variables
21177         and use the SHELL or COMSPEC when UseShellExecute is true.
21178
21179         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
21180         callback for async. IO is here and also BindHandle.
21181
21182         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
21183         from here.
21184
21185 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21186
21187         * reflection.c (create_custom_attr): Allow len == 0.
21188
21189         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
21190         computation on big-endian machines.
21191
21192 2004-03-13  Martin Baulig  <martin@ximian.com>
21193
21194         * class.h (MonoGenericInst): Added `int count_ifaces'.
21195
21196         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
21197         `ginst->count_ifaces' instead `klass->interface_count' since we
21198         may get called before the vtable is created.
21199
21200         * loader.c (mono_method_get_param_names): If we're a generic
21201         instance, return and don't initialize the class.
21202
21203         * reflection.c (mono_reflection_setup_generic_class): Don't call
21204         ensure_runtime_vtable().
21205         (mono_reflection_bind_generic_parameters): Set
21206         `ginst->count_ifaces'.
21207
21208 2004-03-11  Jackson Harper <jackson@ximian.com>
21209
21210         * icall.c:
21211         * unicode.c:
21212         * unicode.h: Remove unused System.Char icalls.
21213         
21214 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
21215
21216         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
21217         code when we P/Invoke the first library in Windows.Forms, instead
21218         of when we first open the assembly.
21219
21220         * assembly.c: Drop the lookup from here.
21221
21222 2004-03-10  Martin Baulig  <martin@ximian.com>
21223
21224         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
21225         class for properties, fields and events.  Finally fixes #54945.
21226
21227 2004-03-10  Martin Baulig  <martin@ximian.com>
21228
21229         * metadata.c (mono_metadata_class_equal): New static function;
21230         checks whether two generic instances or two generic parameters are
21231         equal.
21232         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
21233         compare classes.        
21234
21235 2004-03-10  Martin Baulig  <martin@ximian.com>
21236
21237         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
21238
21239         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
21240         argument and write it into the `reflection_info' field.
21241
21242         * icall.c
21243         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
21244         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
21245
21246 2004-03-09  Jackson Harper  <jackson@ximian.com>
21247
21248         * char-conversions.h: use 8 bits for numeric data its all we need
21249         * icall.c: numeric data is only 8 bits now.
21250
21251 2004-03-09  Martin Baulig  <martin@ximian.com>
21252
21253         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
21254
21255         * class.c (init_properties, init_events): Initialize the new
21256         `parent' field.
21257
21258         * reflection.c (typebuilder_setup_properties): Likewise.
21259         (typebuilder_setup_events): Likewise.
21260
21261         * reflection.h (MonoEventInfo): Replaced `parent with
21262         `declaring_type' and `reflected_type'.
21263
21264         * icall.c (ves_icall_get_property_info): Distinguish between
21265         declaring and reflected type.
21266         (ves_icall_get_event_info): Likewise.
21267
21268 2004-03-09  Martin Baulig  <martin@ximian.com>
21269
21270         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
21271         (ves_icall_Type_GetField): Correctly set field->klass.
21272
21273 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21274
21275         * loader.h: Fix warning.
21276
21277 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
21278
21279         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
21280         library routine if present.  Notice that it will still continue
21281         executing even if its missing, for those working on the Gtk#
21282         edition of Windows.Forms.
21283
21284         * assembly.c (do_mono_assembly_open): If loading the
21285         System.Windows.Forms call mono_loader_wini_init.
21286
21287 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21288
21289         * class.h: Added MonoRemoteClass struct.
21290         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
21291         function for MonoStrings.
21292         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
21293         Added internal call for getting the proxy type.
21294         * marshal.c: Get the type of transparent proxies from its remote_class.
21295         Added methods that generate the IL for type checks and casts:
21296         mono_marshal_get_isinst, mono_marshal_get_castclass, 
21297         mono_marshal_get_proxy_cancast.
21298         * marshal.h: Declaration of the previous new methods.
21299         * object.c: Added new moethods for creating and updating MonoRemoteClass
21300         instances: mono_remote_class, mono_upgrade_remote_class, 
21301         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
21302         * verify.c: FIx transparent_proxy_fields layout.
21303         * appdomain.c: Bump corlib version.
21304
21305 2004-03-04  Jackson Harper  <jackson@ximian.com>
21306
21307         * icall.c: Add icall to access char conversion tables.
21308         * char-conversions.h: Character conversion tables.
21309         * Makefile.am: Add char-conversions.h private header file.
21310         
21311 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * appdomain.c (unload_thread_main): Increase unloading timeout to
21314         10 sec as a temporary workaround for Nant problems.
21315
21316 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
21317
21318         * gc.c: Add checks for GC_enable and GC_disable.
21319
21320         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
21321         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
21322         (bug #54988).
21323         
21324 2004-02-27  Martin Baulig  <martin@ximian.com>
21325
21326         * reflection.c (mono_reflection_bind_generic_parameters): Take a
21327         `MonoReflectionType *' instead of a `MonoType *'.
21328
21329 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21330
21331         * gc.c (run_finalize): Avoid finalizing the object representing the
21332         finalizer thread.
21333         (finalizer_thread): Fix warning.
21334
21335 2004-02-25  Martin Baulig  <martin@ximian.com>
21336
21337         * class.c (_mono_class_get_instantiation_name): Added `int offset'
21338         argument for nested types.
21339         (mono_class_create_generic): Added support for nested generictypes.
21340
21341         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
21342         `GList *nested'.
21343
21344         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
21345
21346         * reflection.c (method_encode_signature): Increase the minimum
21347         value of `size' from 10 to 11.
21348         (mono_reflection_bind_generic_parameters): Take `int type_argc'
21349         and `MonoType **types' arguments instead of the `MonoArray
21350         *types'; added `MonoType *nested_in'.  Recursively instantiate
21351         nested classes. 
21352
21353 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21354
21355         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
21356         stack_overflow_ex members which are used by exception handling.
21357
21358         * appdomain.c (mono_runtime_init): Initialize the new members.
21359
21360         * gc.c (mono_gc_enable): New helper function.
21361         * gc.c (mono_gc_disable): New helper function.
21362
21363 2004-02-23  Martin Baulig  <martin@ximian.com>
21364
21365         * icall.c: I must have been really stupid - make it actually work
21366         this time ;-)
21367
21368 2004-02-23  Martin Baulig  <martin@ximian.com>
21369
21370         * loader.c (method_from_memberref): Only inflate the method if
21371         it's in another klass.
21372
21373 2004-02-23  Martin Baulig  <martin@ximian.com>
21374
21375         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
21376         (mono_class_init): If we're a generic instance and an interface,
21377         compute `class->interface_id'; also create `class->interfaces'
21378         here and inflate them.
21379
21380         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
21381         `ginst->is_open'.
21382         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
21383
21384         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
21385
21386 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
21387
21388         * reflection.c (method_encode_code): Improved the error message
21389         generated by the exception.
21390
21391 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21392
21393         * icall.c: Martin did not do what he said in the ChangeLog for
21394         2004-02-18, but put back the changes for properties and events.
21395         Commenting those changes out again and adding comment to bug #54518.
21396         
21397         * process.c: removed warning.
21398
21399 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
21400
21401         * marshal.c (emit_struct_conv): Print an error message instead of
21402         asserting when a type does not have the StructLayout attribute.
21403
21404 2004-02-20  Martin Baulig  <martin@ximian.com>
21405
21406         * reflection.c (mono_type_get_object): Also use the cache for
21407         generic instances.
21408         (mono_reflection_bind_generic_parameters): Always compute
21409         `ginst->ifaces'.        
21410
21411 2004-02-20  Martin Baulig  <martin@ximian.com>
21412
21413         * class.h (MonoGenericMethod): Removed `klass'.
21414
21415         * class.c (mono_class_inflate_generic_method): Added `MonoClass
21416         *klass' argument.
21417
21418 2004-02-20  Martin Baulig  <martin@ximian.com>
21419
21420         * reflection.c (method_encode_methodspec): Actually use the
21421         uninflated signature for the memberref.
21422
21423 2004-02-20  Martin Baulig  <martin@ximian.com>
21424
21425         * class.h (MonoGenericMethod): Removed `declaring'.
21426
21427         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
21428         is NULL, compute it here.
21429
21430 2004-02-20  Martin Baulig  <martin@ximian.com>
21431
21432         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
21433
21434         * metadata.c (mono_metadata_generic_inst_hash): New method.
21435         (mono_metadata_generic_inst_equal): New method.
21436
21437         * reflection.c (mono_reflection_bind_generic_parameters): Use the
21438         `klass->image->generic_inst_cache' cache to avoid creating
21439         duplicate MonoGenericInst's.
21440
21441         * class.c (mono_class_inflate_generic_type): Use the cache.
21442
21443 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
21444
21445         * object.c: fixed gc descriptor calculation for embedded valuetypes.
21446
21447 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21448
21449         * icall.c: added Socket.WSAIoctl icall.
21450
21451         * socket-io.[ch]: implemented
21452         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
21453
21454 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
21455
21456         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
21457
21458 2004-02-18  Urs C Muff  <umuff@quark.com>
21459
21460         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
21461         this work on PPC and other big-endian architectures.
21462
21463         * debug-mono-symfile.h: Prepended the names of all the `guint32'
21464         fields with an underscore to make sure they're only accessed by
21465         the read32() macro.
21466
21467 2004-02-18  Martin Baulig  <martin@ximian.com>
21468
21469         * icall.c: Put the klass->refclass changes back for methods and
21470         fields, but not for properties and events.  We're currently not
21471         distinguishing between DeclaringType and ReflectedType for
21472         properties and events, that's what caused the regressions.
21473
21474 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21475
21476         * object.c:
21477         (mono_async_result_new): the handle can be NULL.
21478
21479         * threadpool.c: Use an event instead of a semaphore, don't initialize
21480         it until needed. This saves quite a few semaphores from being created
21481         when using the threadpool.
21482
21483 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
21484
21485         * object.c (mono_string_is_interned_lookup): Fix interning of long
21486         strings. Fixes #54473.
21487
21488         * domain.c (ldstr_equal): Optimize if the two strings are equal.
21489
21490         * icall.c: Revert the klass->refclass changes since they introduce
21491         regressions (bug #54518).
21492
21493 2004-02-18  Martin Baulig  <martin@ximian.com>
21494
21495         * class.c (mono_class_init): If we're a generic instance and don't
21496         come from a TypeBuilder, inflate our members here.
21497         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
21498         (mono_class_create_generic): New public method.
21499         (mono_class_initialize_generic): Removed.
21500         (get_instantiation_name): Renamed to
21501         _mono_class_get_instantiation_name() and made it public.
21502
21503 2004-02-18  Martin Baulig  <martin@ximian.com>
21504
21505         * class.c (mono_class_inflate_generic_type): Clear the new
21506         instance's `nginst->klass' when inflating a generic instance.
21507         (mono_class_is_subclass_of): Added (basic) support for generic
21508         instances.
21509
21510 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
21511
21512         * appdomain.h, domain.c: use a MonoCodeManager instead of a
21513         MonoMempool to hold compiled native code.
21514
21515 2004-02-17  Martin Baulig  <martin@ximian.com>
21516
21517         * class.h (MonoDynamicGenericInst): Added `count_properties' and
21518         `properties'.
21519
21520         * reflection.c (mono_reflection_generic_inst_initialize): Added
21521         `MonoArray *properties' argument.
21522
21523         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
21524
21525 2004-02-17  Martin Baulig  <martin@ximian.com>
21526
21527         * icall.c (ves_icall_Type_GetFields): Renamed to
21528         ves_icall_Type_GetFields_internal() and added a
21529         `MonoReflectionType *rtype' argument; pass it to
21530         mono_field_get_object() to set the field's "reflected" type.
21531         (ves_icall_Type_GetConstructors): Likewise.
21532         (ves_icall_Type_GetEvents): Likewise.
21533         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
21534         argument; pass it to mono_method_get_object() to set the method's
21535         "reflected" type.       
21536
21537 2004-02-17  Martin Baulig  <martin@ximian.com>
21538
21539         * class.h (MonoDynamicGenericInst): New type.
21540         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
21541
21542         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
21543         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
21544         (ves_icall_MonoGenericInst_GetFields): New interncall.
21545
21546         * class.c (mono_class_from_generic): Don't call
21547         mono_class_initialize_generic() if this is a dynamic instance;
21548         ie. it's being created from a TypeBuilder.
21549         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
21550         `class->byval_arg.type'.
21551
21552         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
21553         to `inflate_method' and made static.
21554         (mono_reflection_inflate_field): Removed.
21555         (mono_reflection_generic_inst_initialize): New public method.
21556
21557         * reflection.h (MonoReflectionGenericInst): Removed `methods',
21558         `ctors' and `fields'; added `initialized'.
21559
21560 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * debug-helpers.c (mono_method_full_name): Fix output for empty
21563         namespaces.
21564
21565 2004-02-12  Martin Baulig  <martin@ximian.com>
21566
21567         * class.h (MonoClassField): Added `MonoType *generic_type'.
21568
21569         * reflection.c (mono_image_get_fieldref_token): Added support for
21570         instantiated generic types.
21571         (field_encode_inflated_field): Removed.
21572         (mono_image_get_inflated_field_token): Removed.
21573         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
21574
21575         * reflection.h (MonoReflectionInflatedField): Removed.
21576
21577 2004-02-12  Martin Baulig  <martin@ximian.com>
21578
21579         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
21580         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
21581
21582         * reflection.c (mono_image_get_methodspec_token): Take a
21583         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
21584         (mono_image_create_token): Check whether we have a
21585         `method->signature->gen_method' and call
21586         mono_image_get_methodspec_token() if appropriate.
21587         (inflated_method_get_object): Removed.
21588         (mono_reflection_bind_generic_method_parameters): Return a
21589         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
21590         (mono_reflection_inflate_method_or_ctor): Likewise.
21591
21592         * reflection.h (MonoReflectionInflatedMethod): Removed.
21593
21594 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
21597         for custom valuetype marshalling.
21598
21599         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
21600
21601 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21602
21603         * icall.c: fixed WSAGetLastError_internal name.
21604
21605 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21606
21607         * threads.c (mono_thread_attach): Allow this to be called multiple
21608         times for a thread.
21609         
21610         * threads.c (build_wait_tids): Do not wait for ourselves.
21611
21612         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
21613         appdomain list is empty.
21614
21615         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
21616         memory returned by mono_string_builder_to_utf16, since it points into
21617         managed memory. Thanks to Bernie Solomon for noticing this.
21618
21619         * icall.c: Add AppDomainSetup icalls.
21620
21621         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
21622
21623         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
21624         types.
21625
21626         * reflection.c (reflection_methodbuilder_to_mono_method): Save
21627         custom attributes to the method_aux struct. Also fix array indexes etc.
21628
21629         * loader.c (mono_method_get_param_names): Make dynamic case work again.
21630         
21631 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
21632
21633         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
21634         (both static and runtime) and reduce startup time.
21635
21636 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
21639         AsAny marshalling conversion instead of crashing.
21640
21641         * marshal.c: Fix warnings.
21642
21643 2004-02-09  Martin Baulig  <martin@ximian.com>
21644
21645         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
21646
21647         * reflection.h (MonoReflectionInflatedMethod): Removed the
21648         `declaring' field, it's now in the unmanaged MonoGenericMethod.
21649
21650         * reflection.c (method_encode_methodspec): Removed the `method'
21651         argument; we get it from `gmethod->declaring'.
21652         (inflated_method_get_object): Removed the `declaring' argument.
21653
21654 2004-02-09  Martin Baulig  <martin@ximian.com>
21655
21656         * class.h (MonoGenericMethod): New type.
21657         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
21658         `generic_method'.
21659
21660         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
21661         a `MonoGenericMethod *gen_method' one.
21662
21663         * class.c (mono_class_inflate_generic_type): Take an additional
21664         `MonoGenericMethod * argument.  This is only non-NULL if we're
21665         inflating types for a generic method.   
21666         (mono_class_inflate_generic_signature): Renamed to
21667         inflate_generic_signature() and made static; take a
21668         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
21669         (inflate_generic_header): Take a `MonoGenericMethod *' argument
21670         instead of a `MonoGenericInst *' one.
21671         (mono_class_inflate_generic_method): Likewise.
21672
21673         * reflection.c (encode_generic_method_sig): Take a
21674         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
21675         (method_encode_methodspec): Likewise.
21676         (inflated_method_get_object): Likewise. 
21677
21678         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
21679         field with a `MonoGenericMethod *gmethod' one.  
21680
21681 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
21682
21683         * class.h (mono_class_has_parent): add parens to expansion
21684         so you can ! this.
21685
21686 2004-02-08  Martin Baulig  <martin@ximian.com>
21687
21688         * image.h (MonoImage): Removed `generics_cache'.
21689
21690         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
21691         instead of a `MonoType *' argument; removed the `inflate_methods'
21692         argument.  Don't inflate methods here.
21693
21694         * loader.c (find_method): If it's a generic instance, call
21695         mono_class_init() on the `sclass->generic_inst->generic_type'.
21696
21697         * metadata.c (mono_type_size): Make this work on uninitialized
21698         generic instances; call it on the `ginst->generic_type's class.
21699
21700         * reflection.c (mono_reflection_bind_generic_parameters): Call
21701         mono_class_from_generic() to create the `ginst->klass'.
21702
21703 2004-02-08  Martin Baulig  <martin@ximian.com>
21704
21705         * class.h (MonoClass): Changed type of `generic_inst' from
21706         `MonoType *' to `MonoGenericInst *'.
21707
21708 2004-02-08  Martin Baulig  <martin@ximian.com>
21709
21710         * icall.c (ves_icall_Type_BindGenericParameters): Just call
21711         mono_type_get_object(), this is now creating a `MonoGenericInst'
21712         for MONO_TYPE_GENERICINST.
21713         (ves_icall_MonoGenericInst_GetParentType): Likewise.
21714         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
21715
21716         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
21717         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
21718         (inflated_method_get_object): Added `MonoClass *refclass' argument.
21719         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
21720         and reflected type.
21721
21722         * reflection.h (MonoReflectionInflatedMethod): Removed
21723         `declaring_type' and `reflected_type'.
21724
21725 2004-02-08  Martin Baulig  <martin@ximian.com>
21726
21727         * class.h (MonoGenericInst): Added `MonoType *parent' and
21728         `MonoType **ifaces'.
21729
21730         * reflection.h (MonoReflectionGenericInst): Removed `klass',
21731         `parent' and `interfaces'.
21732
21733         * reflection.c (mono_reflection_bind_generic_parameters): Take a
21734         `MonoType *' argument and return a `MonoType *'.
21735
21736         * icall.c
21737         (ves_icall_MonoGenericInst_GetParentType): New interncall.
21738         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
21739
21740 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
21741
21742         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
21743         valuetype marshalling.
21744
21745 2004-02-06  Martin Baulig  <martin@ximian.com>
21746
21747         * class.c
21748         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
21749         (my_mono_class_from_generic_parameter): Likewise.
21750
21751 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
21752
21753         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
21754         contents of the symbol files lazily.
21755
21756         * object.h (MonoThread): Add 'name' and 'name_len' fields.
21757
21758         * threads.h threads.c icall.c: New icalls for getting and setting the
21759         threads name.
21760
21761 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
21764         Raise an exception when the domain is not found.
21765
21766 2004-02-03  Martin Baulig  <martin@ximian.com>
21767
21768         * reflection.c (mono_image_get_methodspec_token): Use the
21769         uninflated signature; fixes gen-33.
21770
21771 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * gc.c threads.c: Make the finalizer thread a normal managed thread so
21774         the finalizer code can use thread functionality.
21775
21776         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
21777         the finalizer thread.
21778
21779         * threads.c: Make some functions more robust.
21780
21781         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
21782
21783         * metadata.h: Add new marshalling conventions.
21784
21785         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
21786         stringbuilder marshalling. Fixes #53700.
21787
21788         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
21789
21790         * reflection.c (mono_image_get_type_info): Save declarative security
21791         info.
21792
21793         * reflection.c (mono_image_get_field_info): Handle uninitialized 
21794         unmanaged fields as well.
21795
21796         * appdomain.c: Bump corlib version.
21797
21798 2004-02-01  Martin Baulig  <martin@ximian.com>
21799
21800         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
21801         method type arguments.  
21802
21803 2004-01-30  Duncan Mak  <duncan@ximian.com>
21804
21805         * marshal.h: Add prototype for
21806         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
21807         and
21808         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
21809         fix the build.
21810
21811 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
21812
21813         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
21814         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
21815
21816 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * marshal.c (mono_marshal_get_native_wrapper): Add support for
21819         custom marshalling of valuetypes.
21820
21821         * marshal.c: Fix some warnings.
21822
21823 2004-01-29  Martin Baulig  <martin@ximian.com>
21824
21825         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
21826         for generic method parameters.
21827
21828         * reflection.c (method_encode_methodspec): Write the uninflated
21829         signature into the methodspec table.
21830         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
21831         is always the uninflated method.
21832         (reflection_methodbuilder_to_mono_method): Copy the generic
21833         parameters from the MethodBuilder into `header->gen_params'.
21834
21835 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * class.c (mono_class_from_generic_parameter): Fix warning.
21838
21839 2004-01-27  Martin Baulig  <martin@ximian.com>
21840
21841         * class.c (mono_class_from_generic_parameter): Don't create
21842         `klass->methods' here.  
21843
21844 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
21847         extension since it does not work with libraries named lib<FOO>.dll.so.
21848
21849 2004-01-25  Martin Baulig  <martin@ximian.com>
21850
21851         * class.c (mono_class_inflate_generic_type): Added support for
21852         MONO_TYPE_GENERICINST.
21853
21854         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
21855         inflate methods on open constructed types.      
21856
21857 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21858
21859         * object.c: fire ProcessExit event in the root AppDomain after running
21860         Main. Fixes bug #53299.
21861
21862 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21863
21864         * socket-io.c: include the new socket-wrappers.h header.
21865         Use the wrappers instead of the unix socket functions to make the code
21866         more clear.
21867
21868 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
21871
21872         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
21873         Fixes #22532.
21874
21875 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
21876
21877         * reflection.c (mono_image_create_pefile): Handle the case when the
21878         entry point is not a MethodBuilder.
21879
21880         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
21881         field to ReflectionMethod since it is not allways a builder.
21882
21883         * reflection.c (type_get_fully_qualified_name): New helper function to
21884         return the fully qualified name of a type.
21885
21886         * reflection.c (encode_marshal_blob): Always emit the fully qualified
21887         type name for custom marshallers.
21888
21889         * reflection.c (mono_marshal_spec_from_builder): Ditto.
21890
21891         * class.c (mono_class_setup_vtable): If a parent class already 
21892         implements an interface, use the implementing methods from that class.
21893         Fixes #53148.
21894
21895 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21896
21897         * threadpool.c: just return instead of ExitThread to allow for thread
21898         clean up earlier.
21899
21900 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
21903         when closing resource modules.
21904
21905         * reflection.c (mono_image_create_pefile): Handle the case when the
21906         entry point is not a MethodBuilder.
21907
21908         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
21909         field to ReflectionMethod since it is not allways a builder.
21910
21911 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
21912
21913         * marshal.c (mono_marshal_get_managed_wrapper): 
21914         mono_marshal_alloc takes native int so CONV_I
21915         the arg for 64bits.
21916
21917 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
21918
21919         * reflection.c (fixup_cattrs): New function to fixup the methoddef
21920         tokens in the cattr table. Fixes #53108.
21921
21922 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21923
21924         * loader.c: don't trim ".dll" before looking up in the config file.
21925         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
21926
21927 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21928
21929         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
21930         Return the module which contains the resource as well.
21931         (ves_icall_System_Reflection_Module_Close): New icall.
21932
21933         * appdomain.c: Bump corlib version number.
21934
21935         * image.c (mono_image_addref): New public function.
21936
21937         * assembly.c: Call mono_image_addref.
21938
21939         * reflection.c (mono_module_get_object): Increase reference count of 
21940         the image.
21941
21942         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
21943         Fixes #22532.
21944
21945         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
21946         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
21947         proper exceptions on DllImport problems.
21948
21949 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
21950
21951         * class.c, metadata.c: eliminate CSIZE macro.
21952
21953 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
21954
21955         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
21956         * object.h: Added async_callback field in MonoAsyncResult.
21957         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
21958         * verify.c: Added async_callback in MonoAsyncResult layout.
21959
21960 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
21961
21962         * reflection.c (mono_reflection_get_custom_attrs): Add support
21963         for Modules.
21964
21965 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
21968         marshalling.
21969         (mono_marshal_method_from_wrapper): Add null pointer check.
21970
21971 2004-01-16  Martin Baulig  <martin@ximian.com>
21972
21973         * debug-mono-symfile.h: Set version number to 36 and reflect
21974         latest symbol writer changes.
21975
21976 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21977
21978         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
21979         multi-dimensional arrays.
21980         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
21981         (mono_class_from_mono_type): Use bounded_array_class_get.
21982         
21983         * class.c (mono_bounded_array_class_get): New function which takes
21984         a 'bounded' bool argument to distinguish vectors from one dimensional
21985         arrays.
21986
21987         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
21988         bounded_array_class_get if the array has bounds.
21989
21990         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
21991         Search modules loaded using AssemblyBuilder:AddModule as well.
21992
21993 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21994
21995         * appdomain.c: increased corlib version.
21996         * filewatcher.c: removed g_print.
21997         * icall.c:
21998         (get_property_info): only allocate what is actually requested.
21999         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
22000
22001 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22002
22003         * Makefile.am: added filewatcher.[ch]
22004         * filewatcher.[ch]: FileSystemWatcher runtime support.
22005         * icall.c: added new FSW icalls.
22006
22007 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
22008
22009         * string-icalls.c: fix stringbuilder regression as suggested by
22010         Iain McCoy <iain@mccoy.id.au>.
22011
22012 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22013
22014         * process.c (process_read_stringtable_block): Recognize '007f' as
22015         a language neutral stringtable block.
22016
22017 2004-01-12  Patrik Torstensson
22018
22019         * object.h (MonoStringBuilder) : Changed layout to support our
22020         new stringbuilder class.
22021         * marshal.c: Change marshalling to support the new layout of 
22022         string builder.
22023         * appdomain.c: increased version number because new layout of
22024         string builder.
22025
22026 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
22027
22028         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
22029         assembly name as an string instead of an AssemblyName, since it is
22030         easier to extract info from it.
22031
22032         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
22033         the culture subdirectories too. Fixes #52231.
22034
22035 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22036
22037         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
22038         It takes 2 new parameters with an optional name for the method to look
22039         for and case ignoring info.
22040
22041         * threadpool.c: removed unused variable.
22042
22043 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22044
22045         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
22046         It takes 2 new parameters with an optional name for the property to look
22047         for and case ignoring info.
22048         Fixes bug #52753.
22049
22050 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22051
22052         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
22053         Fix #52451.
22054
22055 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22056
22057         * appdomain.c:
22058         * assembly.c: escape the uri before passing it to g_filename_from_uri.
22059         Fixes bug #52630.
22060
22061 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * reflection.c: Add support for more than one unmanaged resource.
22064
22065         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
22066         in field->def_value, as done in all other cases.
22067
22068         * reflection.c (mono_reflection_get_custom_attrs): Add support for
22069         TypeBuilders.
22070
22071         * reflection.c (mono_reflection_create_runtime_class): Remove 
22072         errorneous assignment to klass->element_class, since it is already
22073         done in mono_reflection_setup_internal_class.
22074
22075 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22076
22077         * gc.c: added missing LeaveCriticalSection.
22078         * icall.c: indented a couple of lines.
22079         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
22080         if we call EndInvoke inside a callback. Fixes bug #52601.
22081
22082 2004-01-07  Martin Baulig  <martin@ximian.com>
22083
22084         * mono-debug-debugger.h
22085         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
22086
22087 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
22088
22089         * appdomain.c: Use messages in NotImplementedException.
22090
22091         * exception.c (mono_get_exception_not_implemented): Now this takes
22092         a message argument.
22093
22094         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
22095         exception instead of g_asserting an aborting when something is not
22096         implemented.
22097
22098         Add some inline docs.
22099
22100 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
22101
22102         * reflection.h: Update after changes to object layout.
22103
22104         * reflection.c: Implement saving of unmanaged aka win32 resources.
22105
22106         * appdomain.c: Bump version number.
22107
22108         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
22109         Handle missing domains gracefully.
22110
22111 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
22112
22113         * file-io.c : On Windows, there are much more invalid_path_chars.
22114
22115 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22116
22117         * class.h, object.c: prepare for GetType () speedup.
22118
22119 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
22120
22121         * profiler.c: workaround for --profile null reference exception on
22122           cygwin. Patch by Patrik Torstensson.
22123
22124 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
22125
22126         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
22127         make work for unaligned access.
22128
22129 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
22130
22131         * class.c: small cleanup (class->fields [i] -> field).
22132         * image.c: check address of metadata is valid.
22133
22134 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
22135
22136         * assembly.h assembly.c (mono_assembly_loaded): New public function to
22137         search the list of loaded assemblies.
22138
22139         * reflection.c (mono_reflection_type_from_name): Use 
22140         mono_assembly_loaded instead of mono_image_loaded.
22141
22142         * reflection.c: Fix warnings.
22143
22144 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
22145
22146         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
22147         is dynamic. This is needed since an assembly can contain both dynamic and
22148         non-dynamic images.
22149
22150         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
22151         assembly->dynamic.
22152
22153         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
22154
22155         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
22156         to store modules loaded using AddModule.
22157
22158         * reflection.c (mono_image_fill_file_table): Generalize this so it works
22159         on Modules.
22160
22161         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
22162
22163         * reflection.c (mono_image_fill_export_table_from_module): New function to
22164         fill out the EXPORTEDTYPES table from a module.
22165
22166         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
22167         into a separate function. Also handle loaded non-dynamic modules.
22168
22169         * reflection.c (mono_image_basic_init): Fix memory allocation.
22170
22171         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22172
22173         * assembly.c (mono_assembly_load_references): Make this public.
22174
22175 2003-12-19  Martin Baulig  <martin@ximian.com>
22176
22177         * class.c (mono_class_initialize_generic): Made this static, take
22178         a `MonoGenericInst *' instead of a `MonoClass *'.
22179         (mono_class_from_generic): Call mono_class_initialize_generic()
22180         unless we're already initialized or being called from
22181         do_mono_metadata_parse_generic_inst().
22182
22183         * class.h (MonoGenericInst): Added `initialized' and
22184         `init_pending' flags.
22185
22186         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
22187         `mono_class_init (gklass)' or mono_class_initialize_generic()
22188         here; set `generic_inst->init_pending' while parsing the
22189         `type_argv'.
22190
22191 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
22192
22193         * locales.c: include string.h for memxxx prototypes
22194
22195 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22196
22197         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
22198         constructor when accessing literal fields.
22199
22200 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
22201
22202         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22203
22204         * reflection.c (assembly_add_resource_manifest): New function to fill
22205         the MANIFESTRESOURCE table.
22206
22207         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
22208
22209         * reflection.h: Update to changes in class layout.
22210
22211         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
22212         Reenable call to mono_runtime_is_shutting_down ().
22213
22214         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
22215         determine if the runtime is shutting down.
22216
22217 2003-12-16  Jackson Harper <jackson@ximian.com>
22218
22219         * icall.c: comment out call to mono_runtime_is_shutting_down to
22220         fix build.
22221         
22222 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
22223
22224         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
22225         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
22226
22227 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
22228
22229         * reflection.c: move definition of swap_with_size
22230         to before its first call
22231
22232 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * appdomain.c (mono_runtime_is_shutting_down): New public function.
22235
22236         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
22237         icall.
22238
22239         * object.c: Fix warnings.
22240
22241         * icall.c (ves_icall_Type_Get...): Only consider inherited static
22242         members if FlattenHierarchy is set.
22243
22244         * reflection.c (mono_image_add_decl_security): New function to emit
22245         declarative security.
22246
22247         * reflection.h reflection.c: Add support for declarative security.
22248
22249         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
22250         
22251 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22252
22253         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
22254         
22255         * appdomain.c verify.c: Moved corlib version checking into its own
22256         function in appdomain.c since it needs to create vtables etc.
22257
22258 2003-12-13  Patrik Torstensson <p@rxc.se>
22259
22260         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
22261         instead of unwrapped server.
22262
22263 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * verify.c (check_corlib): Fix field index.
22266
22267 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
22270         GetGacPath icall.
22271
22272 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
22273
22274         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
22275         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
22276         cope with sizeof(size_t) != sizeof(guint32).
22277
22278 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22279
22280         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
22281         in case of failure.
22282
22283 2003-12-10  Mark Crichton <crichton@gimp.org>
22284
22285         * icall.c: removed the GetNonZeroBytes.  We now handle this case
22286         in managed code.
22287
22288         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
22289
22290 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
22291
22292         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
22293         marked as deleted.
22294
22295 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22296
22297         * verify.c (check_corlib): Handle the case when the version field is 
22298         initialized by a static constructor.
22299
22300 2003-12-08  Patrik Torstensson  <p@rxc.se>
22301
22302     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
22303
22304 2003-12-08  Martin Baulig  <martin@ximian.com>
22305
22306         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
22307         a MonoReflectionGenericParameter, also take the parameter index
22308         and name as arguments.
22309         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
22310         (ves_icall_MonoGenericParam_initialize): New interncall.
22311         (ves_icall_Type_make_byref_type): New interncall.
22312
22313         * reflection.h (MonoReflectionGenericParam): Derive from
22314         MonoReflectionType, not just from MonoObject.  Added `refobj' and
22315         `index' fields.
22316
22317         * reflection.c (mono_reflection_define_generic_parameter): Create
22318         and return a new MonoReflectionGenericParam; don't initialize the
22319         constraints here.
22320         (mono_reflection_initialize_generic_parameter): New public method;
22321         initializes the constraints and creates the `param->pklass'.
22322
22323 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22324
22325         * reflection.h reflection.c: Use the new fields 'num_types', 
22326         'num_fields' and 'num_methods' to track the number of types etc.
22327
22328         * verify.c (check_corlib): Check corlib version number.
22329
22330 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
22333         function works on all methods.
22334
22335 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22336
22337         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
22338         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
22339         the custom_type_info flag of the transparent proxy.
22340         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
22341         objects that supports IRemotingTypeInfo.
22342         * object.h: Added custom_type_info field in transparent proxy.
22343
22344 2003-12-06  Martin Baulig  <martin@ximian.com>
22345
22346         * class.c (mono_class_create_from_generic): Removed.
22347         (mono_class_from_generic): Check `ginst->klass' before doing
22348         anything else.  This is important to fully support "recursive"
22349         generic types.
22350
22351         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
22352         empty `generic_inst->klass' before doing anything else.
22353
22354 2003-12-06  Dick Porter  <dick@ximian.com>
22355
22356         * verify.c: 
22357         * object.h:
22358         * icall.c:
22359         * locales.c: Use C structs to access class fields.  Don't do a
22360         conversion between MonoString and UChar because both are
22361         platform-endian UTF-16.  Compare now takes startindex and count
22362         parameters.  Add a char overload for IndexOf.  Speed up the
22363         invariant string IndexOf.
22364
22365 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * Makefile.am (monosn_LDADD): Fix parallel build.
22368
22369 2003-12-04  Martin Baulig  <martin@ximian.com>
22370
22371         * icall.c
22372         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
22373         (ves_icall_Type_make_array_type): New interncall.       
22374
22375 2003-12-04  Martin Baulig  <martin@ximian.com>
22376
22377         * locales.c: also change it in the !HAVE_ICU case.
22378
22379 2003-12-04  Dick Porter  <dick@ximian.com>
22380
22381         * icall.c:
22382         * locales.c: construct_compareinfo is now in CompareInfo, not
22383         CultureInfo.
22384
22385 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22386
22387         * image.c (mono_image_load_file_for_image): Cache loaded images in the
22388         image->files array.
22389
22390         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
22391         table as well.
22392
22393         * assembly.c (mono_assembly_load_references): Only load references
22394         once.
22395
22396         * class.c (mono_class_from_name): Avoid linear search of the 
22397         EXPORTEDTYPE table.
22398
22399         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
22400
22401 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * image.h (MonoImage): Add 'field_cache' field.
22404
22405         * loader.c (mono_field_from_token): Cache field lookups.
22406         
22407         * reflection.c (mono_module_get_object): Fix name property.
22408
22409         * icall.c (ves_icall_get_enum_info): Update after changes to 
22410         mono_metadata_get_constant_index ().
22411
22412         * icall.c: Get rid of get_type_info icall, use a separate icall for
22413         each type property to avoid needless memory allocations. Fixes #51514.
22414
22415         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
22416         to avoid needless binary searches.
22417
22418         * class.c (class_compute_field_layout): Move the initialization of
22419         field->def_value to mono_class_vtable ().
22420
22421         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
22422         non-corlib types.
22423
22424         * object.c (mono_object_allocate): Make it inline.
22425
22426         * object.c (mono_object_allocate_spec): Make it inline.
22427         
22428 2003-12-02  Dick Porter  <dick@ximian.com>
22429
22430         * locales.c (create_NumberFormat): NumberFormatInfo construction.
22431         Patch by Mohammad DAMT (mdamt@cdl2000.com).
22432
22433 2003-12-01  Dick Porter  <dick@ximian.com>
22434
22435         * threads.c: Fix signature and call in CreateMutex and
22436         CreateEvent.
22437
22438 2003-12-01  Dick Porter  <dick@ximian.com>
22439
22440         * icall.c: 
22441         * locales.c: Implement string compares and searching
22442
22443         * object.h: Add extra Thread field
22444
22445 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
22446
22447         * reflection.c (fixup_method): Add support for MonoCMethod.
22448
22449 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
22450
22451         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
22452
22453         * reflection.c (assembly_name_to_aname): Allow extra characters in
22454         assembly names. Fixes #51468.
22455
22456 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22457
22458         * exception.c (mono_exception_from_name_domain): New helper function.
22459
22460         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
22461         exception object in the correct domain.
22462
22463         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
22464         formatting + make a copy a the input data.
22465
22466         * loader.c (mono_get_method_from_token): Methods which contain
22467         native code do not have entries in the ImplMap.
22468
22469         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
22470         Thanks to Gonzalo for spotting this.
22471         
22472         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
22473         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
22474
22475         * assembly.h (mono_assembly_load_from): Split the second part of 
22476         assembly loading into a new public function.
22477
22478         * exception.h (mono_get_exception_bad_image_format): New function.
22479
22480 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
22481
22482         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
22483         Enumerate all modules inside a dynamic assembly. Fixes #51293.
22484         
22485         * icall.c: Add new icall for creating dynamic methods.
22486
22487         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
22488
22489         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
22490
22491         * reflection.c (mono_reflection_create_dynamic_method): New icall to
22492         create a dynamic method.
22493
22494         * reflection.c (resolve_object): New helper function.
22495
22496         * reflection.c: Generalize ReflectionMethodBuilder and the functions
22497         which manipulate it so they can also work on dynamic methods.
22498
22499         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
22500         creating the MonoReflectionMethodAux structure if it is not needed.
22501         
22502         * reflection.h verify.c: Update after changes to object layout.
22503
22504         * reflection.c (method_builder_encode_signature): Fix compilation on
22505         gcc 2.95.x.
22506
22507 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
22508
22509         * appdomain.h: Added support for context static fields. Added static_data
22510           field to MonoAppContext and renamed thread_static_fields to a more
22511           generic special_static_fields in MonoAppDomain, since it can now contain
22512           context static fields.
22513         * domain.c: Updated hashtable name.
22514         * object.c: Replaced field_is_thread_static() for a more generic
22515           field_is_special_static() which also checks for context static attribute.
22516           In mono_class_vtable(), added support for static context fields.
22517         * threads.c: Changed methods that manage thread static fields to more
22518           generic methods so they can be reused both for thread and context static
22519           data.
22520         * threads.h: Declared some new methods.
22521
22522 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * reflection.h: Update after changes to the managed types.
22525
22526         * reflection.c (encode_custom_modifiers): New helper function.
22527
22528         * reflection.c (method_encode_signature): Emit custom modifiers.
22529
22530         * reflection.c (field_encode_signature): Emit custom modifiers.
22531
22532 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22533
22534         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
22535
22536         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
22537         implementation.
22538
22539         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
22540         icall.
22541
22542         * object.c (mono_field_get_value_object): New function.
22543
22544         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
22545         specific.
22546
22547 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
22550         return a preallocated out-of-memory exception instance.
22551
22552         * object.c (out_of_memory): Use the new function.
22553
22554         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
22555         flag is before the custom modifiers. Fixes #49802.
22556
22557 2003-11-16  Martin Baulig  <martin@ximian.com>
22558
22559         * class.c (mono_class_is_open_constructed_type): Implemented the
22560         MONO_TYPE_GENERICINST case.
22561
22562 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * assembly.c (mono_assembly_fill_assembly_name): New function to
22565         fill out the MonoAssemblyName structure.
22566         (mono_assembly_open): Use the new function.
22567
22568         * icall.c (fill_reflection_assembly_name): New helper function.
22569
22570         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
22571         new function.
22572
22573         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
22574
22575 2003-11-15  Martin Baulig  <martin@ximian.com>
22576
22577         * class.c (mono_class_is_open_constructed_type): New public
22578         function; checks whether a type is an open constructed type,
22579         ie. whether it still contains type parameters.
22580         (mono_class_inflate_generic_type): If we're a type parameter and
22581         the inflated type is also a MONO_TYPE_(M)VAR, return the original
22582         type.
22583
22584         * class.h (MonoGenericInst): Added `guint32 is_open'.
22585
22586         * loader.c (method_from_methodspec): Check whether we're an open
22587         or closed constructed type and set `ginst->is_open'.
22588
22589         * reflection.c (mono_reflection_bind_generic_parameters): Check
22590         whether we're an open or closed constructed type and set
22591         `ginst->is_open'.
22592         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
22593         from open constructed types.
22594
22595 2003-11-15  Martin Baulig  <martin@ximian.com>
22596
22597         * reflection.c (mono_reflection_bind_generic_parameters): If we're
22598         a generic instance (instead of a generic type declaration) with
22599         unbound generic parameters, bind them to our actual types.
22600
22601 2003-11-14  Martin Baulig  <martin@ximian.com>
22602
22603         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
22604
22605         * reflection.c (mono_reflection_bind_generic_parameters): If we're
22606         an interface type, populate `res->interfaces' with instantiated
22607         versions of all the interfaces we inherit.
22608
22609 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
22610
22611         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
22612         when MONO_PATH is set but doesn't contain the install dir.
22613
22614 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22615
22616         * icall.c:
22617         (ves_icall_Type_GetInterfaces): don't return an interface twice when
22618         it's also implemented in base classes. Fixes bug #50927.
22619
22620 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
22623         if this method is called from a finalizer. Fixes #50913.
22624
22625 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
22626
22627         * threads.c: Implement VolatileRead/VolatileWrite
22628
22629         * icall.c: Add new icalls for VolatileRead/VolatileWrite
22630
22631 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22632
22633         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
22634         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
22635         2.95.3.
22636
22637         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
22638         from Peter Ross (pro@missioncriticalit.com).
22639         
22640 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
22641
22642         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
22643
22644 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22645
22646         * assembly.c (mono_assembly_load_references): Disable check because it
22647         triggers on older corlibs which lots of people have.
22648
22649 2003-11-12  Jackson Harper  <jackson@ximian.com>
22650
22651         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
22652         load corlib.dll if mscorlib.dll is not found.
22653         * assembly.h: Remove corlib name define.
22654         * class.c:
22655         * domain.c:
22656         * image.c: Change corlib name to mscorlib.
22657         
22658 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22659
22660         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
22661
22662 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
22663
22664         * appdomain.h: Added loader_optimization here to sync with the C#
22665         code, and add disallow_binding_redirects field.
22666
22667 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
22668
22669         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
22670
22671         * reflection.c (mono_image_build_metadata): Fix crash on modules
22672         with no types.
22673
22674         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
22675
22676         * icall.c (ves_icall_get_method_info): Return callingConvention as
22677         well.
22678
22679         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
22680         namespaces from the EXPORTEDTYPE table as well.
22681
22682         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
22683         from all modules inside the assembly.
22684         
22685 2003-11-11  Martin Baulig  <martin@ximian.com>
22686
22687         * reflection.c (mono_reflection_bind_generic_parameters): Make
22688         this work for interfaces.
22689
22690 2003-11-11  Martin Baulig  <martin@ximian.com>
22691
22692         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
22693
22694 2003-11-11  Martin Baulig  <martin@ximian.com>
22695
22696         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
22697         "MonoInflatedMethod" and "MonoInflatedCtor".
22698
22699 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * reflection.c (resolution_scope_from_image): Use the assembly table
22702         from the manifest module, since other modules don't have it.
22703
22704         * debug-helpers.c (mono_type_full_name): New helper function.
22705
22706         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
22707
22708         * image.c (mono_image_load_file_for_image): New public function which
22709         is a replacement for the load_file_for_image in class.c.
22710
22711         * assembly.c (mono_assembly_load_module): A wrapper for the function
22712         above which does assembly association and reference loading too.
22713
22714         * class.c (mono_class_from_name): Call mono_assembly_load_module.
22715
22716 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22717
22718         * appdomain.c: not all of the attributes for the full assembly name
22719         are required and the order doesn't matter. Fixes bug #50787.
22720
22721 2003-11-10  Dick Porter  <dick@ximian.com>
22722
22723         * locales.c: Use platform-endian UTF16
22724
22725 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
22726
22727         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
22728         
22729 2003-11-10  Martin Baulig  <martin@ximian.com>
22730
22731         * metadata.c
22732         (mono_metadata_load_generic_params): Make this actually work.
22733
22734         * reflection.c (mono_reflection_bind_generic_parameters): If our
22735         parent is a generic instance, pass all the `types' to it, no
22736         matter whether it has the same number of type parameters or not.
22737
22738 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
22739
22740         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
22741
22742         * assembly.c (mono_assembly_load_references): Move the image<->assembly
22743         assignment code to this function so it gets called recursively for all
22744         modules.
22745
22746         * image.c (load_modules): Remove the assembly assignment since it is
22747         now done by mono_assembly_load_references.
22748         
22749         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
22750         Add 'module' argument.
22751         (mono_module_get_types): New helper function.
22752         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
22753
22754 2003-11-08  Martin Baulig  <martin@ximian.com>
22755
22756         * class.c (mono_class_inflate_generic_method): Interface method
22757         don't have a header.
22758
22759         * reflection.c (mono_image_get_methodspec_token): Take an
22760         additional `MonoGenericInst *' argument instead of reading it from
22761         the header; this is necessary to support interfaces.
22762         (mono_image_create_token): Pass the `MonoGenericInst *' from the
22763         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
22764         (inflated_method_get_object): Take an additional `MonoGenericInst *'
22765         argument.
22766
22767         * reflection.h (MonoReflectionInflatedMethod): Added
22768         `MonoGenericInst *ginst'.
22769
22770 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
22771
22772         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
22773
22774 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
22775
22776         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
22777
22778 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22779
22780         * reflection.c 
22781         (reflection_methodbuilder_from_method_builder):
22782         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
22783         initialize a ReflectionMethodBuilder structure.
22784         (mono_image_get_methodbuilder_token):
22785         (mono_image_get_ctorbuilder_token): New functions to emit memberref
22786         tokens which point to types in another module inside the same assembly.
22787
22788         * reflection.c: Use the new helper functions.
22789         
22790         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
22791
22792         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
22793         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
22794
22795         * reflection.c (resolution_scope_from_image): Emit a moduleref if
22796         neccesary.
22797
22798         * reflection.c (mono_image_build_metadata): Emit metadata only for the
22799         current module. Emit the manifest only for the main module.
22800
22801         * reflection.c (mono_image_create_token): Add assertion when a 
22802         memberref needs to be created.
22803
22804         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
22805
22806         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
22807         larger buffer for the custom attribute blob. Fixes #50637.
22808         
22809 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22810
22811         * threadpool.c: notify listener on async processing handles after
22812         invoking the async callback. Thanks to Zoltan.
22813
22814 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
22815
22816         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
22817         avoid code duplication.
22818
22819         * reflection.h (MonoDynamicImage): New type which is currently unused,
22820         but will be used through the ref.emit code in place of 
22821         MonoDynamicAssembly.
22822
22823         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
22824         object layout.
22825
22826         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
22827         a MonoDynamicImage instead of just a MonoImage.
22828         
22829         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
22830         icalls to ModuleBuilder but keep their semantics, so they will work
22831         with moduleb->assemblyb. This will change later.
22832         
22833 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
22834
22835         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
22836         object layout.
22837
22838         * reflection.c (mono_image_build_metadata): Avoid creation of a default
22839         main module, since it is now done by the managed code.
22840
22841 2003-11-03  Martin Baulig  <martin@ximian.com>
22842
22843         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
22844         `ginst->klass' here.
22845         (method_encode_methodspec): Don't use the `ginst->generic_method's
22846         klass if it's a generic instance, use `ginst->klass' in this case.
22847
22848 2003-11-03  Martin Baulig  <martin@ximian.com>
22849
22850         * reflection.c (mono_image_get_generic_method_param_info):
22851         Removed, use mono_image_get_generic_param_info() instead.
22852         (mono_image_get_type_info): Write the GenericParam table before
22853         the Method table.  This is neccessary because in the GenericParam
22854         table, type parameters of the class (ie. '!0' etc.) must come
22855         before the ones from its generic methods (ie. '!!0' etc).
22856
22857 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
22858
22859         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
22860
22861 2003-11-02  Martin Baulig  <martin@ximian.com>
22862
22863         * reflection.c (create_generic_typespec): Take a
22864         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
22865         the generic parameters from it.
22866
22867 2003-11-02  Martin Baulig  <martin@ximian.com>
22868
22869         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
22870         instead of a `MonoClassField *' since we just need the type.
22871         (create_generic_typespec): New static function.  Creates a
22872         TypeSpec token for a generic type declaration.
22873         (mono_image_get_generic_field_token): New static function.
22874         (mono_image_create_token): If we're a FieldBuilder in a generic
22875         type declaration, call mono_image_get_generic_field_token() to get
22876         the token.
22877
22878 2003-11-02  Martin Baulig  <martin@ximian.com>
22879
22880         * reflection.h
22881         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
22882         `MonoReflectionGenericInst *declaring_type' and
22883         `MonoReflectionGenericInst *reflected_type' fields.
22884
22885         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
22886         `MonoReflectionGenericInst *declaring_type' and a
22887         `MonoReflectionGenericInst *reflected_type' argument instead of a
22888         single `MonoReflectionGenericInst *type' one.  Set
22889         `res->declaring_type' and `res->reflected_type' from them.
22890         (mono_reflection_inflate_field): Likewise.      
22891
22892 2003-11-02  Martin Baulig  <martin@ximian.com>
22893
22894         * class.c (mono_class_setup_vtable): Don't store generic methods
22895         in the vtable.  
22896
22897 2003-11-02  Martin Baulig  <martin@ximian.com>
22898
22899         * reflection.h (MonoReflectionGenericInst): Added
22900         `MonoReflectionType *declaring_type'.
22901
22902         * reflection.c (mono_reflection_bind_generic_parameters): Use
22903         `if (tb->parent)' instead of `klass->parent'.
22904
22905 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
22906
22907         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
22908         with an empty ASSEMBLY table.
22909
22910         * reflection.c (mono_image_build_metadata): Avoid using the same loop
22911         variable in the inner and outer loops.
22912
22913 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22914
22915         * metadata.h (mono_metadata_make_token): Put parentheses around macro
22916         argument.
22917
22918         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
22919         
22920         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
22921         icalls. Instead, do everything in managed code. This is needed since
22922         it is hard to restore the original domain etc. in unmanaged code in the
22923         presence of undeniable exceptions.
22924
22925         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
22926         New icalls to push and pop appdomain refs.
22927
22928 2003-10-31  Martin Baulig  <martin@ximian.com>
22929
22930         * class.c (inflate_generic_type): Renamed to
22931         mono_class_inflate_generic_type() and made it public.
22932
22933         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
22934         New interncall.
22935
22936         * loader.c (mono_field_from_memberref): Also set the retklass for
22937         typespecs.
22938
22939         * fielder.c (mono_image_get_inflated_field_token): New static
22940         method; creates a metadata token for an inflated field.
22941         (mono_image_create_token, fixup_method): Added support for
22942         "MonoInflatedField".
22943         (fieldbuilder_to_mono_class_field): New static function.
22944         (mono_reflection_inflate_field): New public function.
22945
22946         * reflection.h
22947         (MonoReflectionGenericInst): Added `MonoArray *fields'.
22948         (MonoReflectionInflatedField): New typedef.     
22949
22950 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
22951
22952         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
22953         for Solaris and other platforms without s6_addr16
22954
22955 2003-10-30  Martin Baulig  <martin@ximian.com>
22956
22957         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
22958         argument instead of two.
22959         (mono_class_inflate_generic_signature): Likewise.
22960         (inflate_generic_header): Likewise.
22961         (mono_class_inflate_generic_method): Likewise.  In addition, if
22962         `ginst->klass' is set, it becomes the new `method->klass'.
22963
22964         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
22965         field.
22966
22967         * reflection.c (encode_generic_method_sig): Write a 0xa as the
22968         first byte. [FIXME]
22969         (method_encode_methodspec): If we have generic parameters, create
22970         a MethodSpec instead of a MethodRef.
22971         (fixup_method): Added support for "MonoInflatedMethod" and
22972         "MonoInflatedCtor".
22973         (mono_image_create_token): Added support for "MonoInflatedMethod"
22974         and "MonoInflatedCtor".
22975         (inflated_method_get_object): New static function; returns a
22976         managed "System.Reflection.MonoInflatedMethod" object.
22977         (mono_reflection_bind_generic_method_parameters): Return a
22978         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
22979         (mono_reflection_inflate_method_or_ctor): Likewise.
22980         (mono_image_get_generic_method_param_info): Initialize unused
22981         fields to zero.
22982         (mono_image_get_generic_param_info): Likewise.
22983
22984         * reflection.h (MonoReflectionInflatedMethod): New public
22985         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
22986         "S.R.MonoInflatedCtor" classes.
22987
22988         * loader.c (method_from_memberref): If we're a TypeSpec and it
22989         resolves to a generic instance, inflate the method.
22990
22991 2003-10-28  Dick Porter  <dick@ximian.com>
22992
22993         * object.c (mono_runtime_run_main): Convert command-line arguments
22994         into utf8, falling back to the user's locale encoding to do so.
22995
22996 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22997
22998         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
22999         at this time.
23000
23001         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
23002
23003         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
23004         up icalls at method definition time. Partially fixes #33569.
23005
23006 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
23007
23008         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
23009         marshalling of arrays. Fixes #50116.
23010
23011         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
23012
23013         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
23014         points to a vtable in the dying appdomain.
23015
23016         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
23017         listeners into unmanaged code inside the lock.
23018
23019         * object.c (mono_class_vtable): Turn off typed allocation in non-root
23020         domains and add some comments.
23021
23022 2003-10-25  Martin Baulig  <martin@ximian.com>
23023
23024         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
23025
23026         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
23027
23028         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
23029         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
23030         currently parsing.  Create the generic class and store it in
23031         `generic_inst->klass' before parsing the type arguments.  This is
23032         required to support "recursive" definitions; see mcs/tests/gen-23.cs
23033         for an example.
23034         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
23035         to support recursive typespec entries.
23036
23037         * class.c (mono_class_setup_parent): If our parent is a generic
23038         instance, we may get called before it has its name set.
23039         (mono_class_from_generic): Splitted into
23040         mono_class_create_from_generic() and mono_class_initialize_generic().
23041
23042 2003-10-25  Martin Baulig  <martin@ximian.com>
23043
23044         * icall.c (ves_icall_Type_BindGenericParameters): Return a
23045         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
23046         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
23047         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
23048
23049         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
23050         (create_typespec): Likewise.
23051         (mono_reflection_bind_generic_parameters): Return a
23052         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
23053         (mono_reflection_inflate_method_or_ctor): New public function.
23054
23055         * reflection.h (MonoReflectionGenericInst): New typedef.        
23056
23057 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23058
23059         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
23060         inside the domain lock. Fixes #49993.
23061         
23062         * object.c (mono_class_vtable): When typed allocation is used, 
23063         allocate vtables in the GC heap instead of in the mempool, since the
23064         vtables contain GC descriptors which are used by the collector even
23065         after the domain owning the mempool is unloaded.
23066
23067         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
23068
23069         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
23070         reflect what it does. Also invalidate mempools instead of freeing
23071         them if a define is set.
23072
23073         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
23074         of the appdomain.
23075         
23076         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
23077         hold the finalizable objects in this domain.
23078
23079         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
23080         appdomain.
23081
23082         * appdomain.c (mono_domain_set): New function to set the current
23083         appdomain, but only if it is not being unloaded.
23084
23085         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
23086         appdomain which is being unloaded.
23087         
23088         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
23089         unloading of the root appdomain.
23090
23091         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
23092         icall to execute a method in another appdomain. Intended as a 
23093         replacement for InternalSetDomain, which can confuse the code 
23094         generation in the JIT.
23095
23096         * appdomain.c (mono_domain_is_unloading): New function to determine
23097         whenever an appdomain is unloading.
23098
23099         * appdomain.c (mono_domain_unload): New function to correctly unload
23100         an appdomain.
23101
23102         * assembly.c (mono_assembly_load_references): Check that an assembly
23103         does not references itself.
23104
23105         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
23106         domain manually, it asks the finalizer thread to do it, then waits for
23107         the result. Also added a timeout.
23108
23109         * icall.c: Register the new icalls.
23110
23111         * threads.h threads.c: Export the mono_gc_stop_world and 
23112         mono_gc_start_world functions.
23113         
23114         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
23115         function to fill out the mempool with 0x2a.
23116
23117 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
23118
23119         * reflection.h (MonoReflectionMethodAux): New structure to store
23120         information which is rarely used, thus is not in the MonoMethod
23121         structure.
23122
23123         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
23124         store the aux info.
23125
23126         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
23127         and marshalling info into the aux structure.
23128
23129         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
23130         from the aux structure.
23131
23132         * loader.c (mono_method_get_param_names): Retrieve the param names from
23133         the aux structure.
23134         
23135 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
23136
23137         * exception.h exception.c: Add AppDomainUnloadedException && fix 
23138         warning.
23139
23140 2003-10-21  Dick Porter  <dick@ximian.com>
23141
23142         * socket-io.c
23143         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
23144         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
23145
23146 2003-10-21  Martin Baulig  <martin@ximian.com>
23147
23148         * reflection.c (mono_reflection_bind_generic_parameters):
23149         `klass->parent' is NULL for interfaces.
23150
23151 2003-10-21  Martin Baulig  <martin@ximian.com>
23152
23153         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23154
23155 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
23156
23157         * exception.c (mono_exception_from_name_msg): New helper function for
23158         creating exceptions and initializing their message field.
23159
23160         * exception.c: Simplify functions using the new helper.
23161
23162         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
23163         New function.
23164
23165         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
23166         mono_raise_exception, since otherwise gcc doesn't generate the function
23167         epilog for raise_exception, confusing the stack unwinding in the JIT.
23168         Fixes #45043.
23169
23170         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
23171         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
23172         Fixes #49499.
23173
23174 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23175
23176         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
23177         utf8.
23178
23179 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
23180
23181         * icall.c: Removed GetUninitializedObject method because
23182           AllocateUninitializedClassInstance does the same.
23183
23184 2003-10-18  Martin Baulig  <martin@ximian.com>
23185
23186         * class.c (inflate_generic_signature): Renamed to
23187         mono_class_inflate_generic_signature() and made it public.
23188         (my_mono_class_from_generic_parameter): New static function; if we
23189         don't already have the generic parameter's MonoClass, create a
23190         very simple one which is just used internally in the runtime and
23191         not passed back to managed code.
23192
23193         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
23194
23195         * metadata.h (MonoMethodSignature): Moved the
23196         `MonoGenericParam *gen_params' to the MonoMethodHeader.
23197         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
23198
23199         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
23200         ves_icall_MonoMethod_GetGenericArguments(); this is now an
23201         interncall on the MonoMethod class, not on MethodInfo.
23202         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
23203         calling mono_reflection_bind_generic_method_parameters() directly.
23204
23205         * loader.c (mono_method_get_signature): If this is a MethodSpec;
23206         return the already computed `method->signature'.
23207         (method_from_methodspec): New static function to load a method
23208         from a MethodSpec entry.
23209         (mono_get_method_from_token): Call the new method_from_methodspec()
23210         for MethodSpec tokens.  
23211         (mono_get_method_from_token): If we're a generic method, load the
23212         type parameters.
23213
23214         * reflection.c (mono_image_get_memberref_token): Allow
23215         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
23216         table.
23217         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
23218         (mono_image_create_token): First check whether it's a generic
23219         method (so we'd need to create a MethodSpec), then do the other
23220         two alternatives.
23221         (mono_reflection_bind_generic_method_parameters): Return a
23222         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
23223         called directly from the interncall.
23224
23225 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
23226
23227         * reflection.c (load_public_key): Move loading of the public key
23228         into managed code.
23229
23230         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
23231
23232         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
23233         fields.
23234
23235         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
23236         culture, hash_alg and public_key. Fixes #49555.
23237
23238 2003-10-17  Martin Baulig  <martin@ximian.com>
23239
23240         * class.h (MonoGenericInst): Moved this declaration here and added
23241         `MonoMethod *generic_method'.
23242
23243         * icall.c
23244         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
23245         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
23246
23247         * metadata.c (mono_metadata_type_equal): Two types of
23248         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
23249         index; ie. don't compare the address of the `MonoGenericParam'
23250         structure.
23251         (mono_metadata_load_generic_params): Removed the `MonoMethod
23252         *method' argument.
23253
23254         * metadata.h (MonoGenericInst): Moved declaration to class.h.
23255         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
23256
23257         * reflection.c (method_encode_signature): Encode the number of
23258         generic parameters.
23259         (encode_generic_method_sig): New static function.
23260         (method_encode_methodspec): New static function; creates an entry
23261         in the MethodSpec table for a generic method.
23262         (mono_image_get_methodspec_token): New static function.
23263         (mono_image_create_token): Call mono_image_get_methodspec_token()
23264         for generic methods.
23265         (mono_reflection_bind_generic_method_parameters): New public
23266         function.  Instantiates a generic method.
23267
23268 2003-10-16  Martin Baulig  <martin@ximian.com>
23269
23270         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
23271         *gen_params' here from MonoMethodHeader.
23272
23273         * metadata.c (mono_metadata_parse_method_signature): If we have
23274         generic parameters, initialize `method->gen_params' and then set
23275         the correct `type->data.generic_param' in all the parameters.
23276
23277 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23278
23279         * threads.c (mono_threads_get_default_stacksize): New function to 
23280         return the default stacksize.
23281
23282         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
23283         termination of the finalizer thread, since the previous method had
23284         race conditions. Fixes #49628.
23285
23286         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
23287         as for the other managed threads.
23288
23289 2003-10-16  Martin Baulig  <martin@ximian.com>
23290
23291         * class.c (inflate_generic_signature): Copy `generic_param_count'
23292         and `gen_params'.
23293
23294         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
23295         New interncall.
23296
23297         * metadata.c (mono_metadata_parse_method_signature): Actually set
23298         the `method->generic_param_count' here.
23299         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
23300
23301 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23302
23303         * object.h: Add a new field to TypedRef to simplify the implementation
23304         of the REFANY opcodes in the JIT.
23305
23306         * icall.c: Make use of the new field.
23307
23308         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
23309         dynamically.
23310
23311 2003-10-15  Martin Baulig  <martin@ximian.com>
23312
23313         * class.c (mono_class_from_gen_param): Renamed to
23314         mono_class_from_generic_parameter() and moved most of the
23315         functionality from mono_reflection_define_generic_parameter()
23316         here; ie. we create a "real" class here.
23317         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
23318         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
23319         previously been called.
23320
23321         * class.h (MonoGenericParam): Moved the declaration of this struct
23322         here from metadata.h and added `MonoMethod *method'.
23323
23324         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
23325         interncall.
23326
23327         * loader.c (mono_get_method_from_token): If we have any generic
23328         parameters, call mono_metadata_load_generic_params() to read them
23329         from the MONO_TABLE_GENERICPAR.
23330
23331         * metadata.c (mono_metadata_load_generic_params): Added
23332         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
23333
23334         * metadata.h (MonoMethodSignature): Replaced
23335         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
23336         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
23337
23338         * reflection.c (mono_reflection_define_generic_parameter): Moved
23339         most of the functionality into the new
23340         mono_class_from_generic_parameter(); set the `method' field if
23341         we're a method parameter.       
23342
23343 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
23344
23345         * marshal.c (emit_struct_conv): if native size is 0
23346         emit no code.
23347
23348 2003-10-14  Martin Baulig  <martin@ximian.com>
23349
23350         * icall.c: The generics API has changed in the spec since it was
23351         added to System.Type; these modifications make it match the spec
23352         again.
23353         (ves_icall_Type_GetGenericParameters): Renamed to
23354         `ves_icall_Type_GetGenericArguments'.
23355         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
23356         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
23357         `ves_icall_MonoType_get_HasGenericArguments'.
23358         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
23359         `ves_icall_MonoType_get_IsGenericParameter'.
23360         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
23361         this is no interncall anymore.
23362         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
23363         `ves_icall_TypeBuilder_get_IsGenericParameter'.
23364
23365 2003-10-14  Martin Baulig  <martin@ximian.com>
23366
23367         * reflection.c (mono_reflection_bind_generic_parameters): Also
23368         inflate generic methods if we're reading the class from IL.
23369
23370 2003-10-13  Martin Baulig  <martin@ximian.com>
23371
23372         * reflection.c (mono_reflection_define_generic_parameter): This
23373         method isn't called directly from the icall anymore; take a
23374         `MonoReflectionAssemblyBuilder *' so we can use this for type and
23375         method generic parameters.
23376         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
23377         (method_builder_encode_signature): Encode generic parameters.
23378         (mono_image_get_method_info): Write generic params to the
23379         MONO_TABLE_GENERICPARAM table.
23380
23381         * reflection.h (MonoReflectionMethodBuilder): Added
23382         `MonoArray *generic_params'.
23383
23384         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
23385
23386         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
23387         wrapper for mono_reflection_define_generic_parameter().
23388         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
23389
23390 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
23391
23392         * marshal.h: Add missing function to fix build.
23393
23394         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
23395         the SetLastError pinvoke attribute.
23396
23397         * marshal.c (mono_marshal_set_last_error): New helper function called
23398         by the generated code.
23399         
23400         * marshal.c (mono_mb_emit_branch): New helper function.
23401
23402         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
23403
23404         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
23405         classes as parameters and return values of delegates. Fixes #29256. 
23406
23407 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
23408
23409         * locales.c: use gint32 in non HAVE_ICU case
23410
23411 2003-10-11  Martin Baulig  <martin@ximian.com>
23412
23413         * mono-debug.c (mono_debug_add_method): Added a workaround for
23414         bug #48591.
23415
23416 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23417
23418         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
23419         delegates passed to native code must use the STDCALL calling 
23420         convention. Fixes #35987.
23421
23422 2003-10-10  Martin Baulig  <martin@ximian.com>
23423
23424         * class.c (inflate_generic_type): If we're inflating for a generic
23425         type instance (and not for a generic method), return
23426         MONO_TYPE_MVAR unchanged.
23427
23428 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23429
23430         * string-icalls.c: Join ignores null strings in the source array.
23431         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
23432         * threads.c: GetAvailableTheads is slightly more accurate.
23433
23434 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
23435
23436         * threads.h threads.c : add mono_threads_set_default_stacksize
23437         and pass default to CreateThread calls.
23438
23439 2003-10-09  Dick Porter  <dick@ximian.com>
23440
23441         * icall.c:
23442         * locales.h:
23443         * locales.c: Internal calls for constructing CultureInfo and
23444         related objects from libicu (if its available.)
23445
23446 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23447
23448         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
23449
23450 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23451
23452         * threadpool.c: added an argument to async_invoke_thread that is the
23453         item to process, pass the MonoAsyncResult to the thread start function
23454         when creating a new thread. This way we don't need to acquire any lock
23455         when we're creating a new thread. Readded a semaphore for faster
23456         response times (instead of that Sleep i added).
23457
23458 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
23459
23460         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
23461         get daylight change dates better on Windows, fix handling
23462         of platforms without tm_gmtoff.
23463
23464 2003-10-06  Martin Baulig  <martin@ximian.com>
23465
23466         * class.c (inflate_generic_method): Renamed to
23467         mono_class_inflate_generic_method() and made public.
23468         (mono_class_init): Don't inflate the generic methods here.
23469         (mono_class_from_generic): Added `gboolean inflate_methods'
23470         argument.  Inflate the methods here.
23471
23472         * loader.c (mono_method_get_param_names): Ignore instances of
23473         generic types for the moment.
23474
23475         * reflection.c (fixup_method): Added support for inflated methods.
23476         (mono_image_create_token): Use mono_image_get_methodref_token()
23477         for inflated methods.
23478         (mono_custom_attrs_from_param): Ignore instances of generic types
23479         for the moment.
23480         (mono_reflection_bind_generic_parameters): New public function.
23481         Moved all the functionality from
23482         ves_icall_Type_BindGenericParameters() here and added support for
23483         dynamic types.
23484         (mono_reflection_define_generic_parameter): Initialize
23485         `klass->methods' here.
23486
23487         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
23488         functionality into mono_reflection_define_generic_parameter().
23489         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
23490         TypeBuilder, return that TypeBuilder.
23491
23492 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23493
23494         * appdomain.c: removed mono_delegate_semaphore.
23495
23496         * threadpool.c:
23497         (mono_thread_pool_add): moved hash table creation inside and the thread 
23498         creation outside of the critical region.
23499         (mono_thread_pool_finish): removed obsolete code.
23500         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
23501         continue or exit the thread depending on the queue.
23502
23503 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
23504
23505         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
23506         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
23507         handle more bool marshalling options
23508
23509 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
23510
23511         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
23512         arrays of structs. Also add a more descriptive error message when
23513         a structure member is marshalled as LPArray.
23514
23515 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23516
23517         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23518         marshalling arrays of complex types. Fixes #29098. Also remove an
23519         usused and incomplete function.
23520
23521 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
23522
23523         * gc.c: report heap_size - free_bytes as total memory allocated
23524         (bug#49362).
23525
23526 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
23529         fix timezone handling problems on Windows.
23530         
23531         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
23532         asserts when the year is outside the range handled by ms the functions.
23533
23534         * class.c (setup_interface_offsets): If the class is an interface,
23535         fill out its interface_offsets slot.
23536
23537 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23538
23539         * threadpool.c: mark threadpool threads as background.
23540
23541 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
23542
23543         * decimal.c - define DECINLINE to nothing if not using GCC
23544
23545 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23546
23547         * assembly.c: More refcount fixes.
23548
23549 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23550
23551         * string-icalls.c: if we're not trimming, return the same string.
23552         When not splitting, don't create a new string.
23553
23554 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23555
23556         * image.c:
23557         (mono_image_open): increment the ref_count inside the critical section.
23558
23559 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
23560
23561         * image.c (mono_image_open): Fix reference counting bug.
23562
23563 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
23564
23565         * marshal.c (mono_marshal_type_size) struct alignment changed for 
23566         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
23567         64bits. Avoid leak in mono_marshal_get_native_wrapper when
23568         mono_lookup_pinvoke_call throws.        
23569
23570 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * reflection.c (mono_reflection_parse_type): Fix #49114.
23573
23574         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
23575         temporary workaround for cygwin header problem.
23576
23577         * object.c (mono_object_isinst): Synchronize this with the code
23578         generated by the JIT for casts.
23579
23580 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23581
23582         * reflection.c (encode_type): Fix #38332.
23583
23584 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23585
23586         * marshal.c (mono_marshal_method_from_wrapper): New function to return
23587         the original method from the wrapper method.
23588
23589 2003-09-25  Martin Baulig  <martin@ximian.com>
23590
23591         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
23592         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
23593         (ves_icall_Type_get_IsGenericInstance): New interncall.
23594
23595 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
23596
23597         * object.c: fix cast warning in big endian code.
23598
23599 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
23600
23601         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
23602         
23603 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23604
23605         * assembly.c: don't call check_env from mono_assembly_load. It's
23606         already done once in mono_assemblies_init and may cause headaches when
23607         multiple threads are loading assemblies.
23608
23609 2003-09-19  Martin Baulig  <martin@ximian.com>
23610
23611         * reflection.c (mono_reflection_define_generic_parameter): Don't
23612         allocate `klass->methods', set `klass->flags' to
23613         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
23614
23615 2003-09-18  Martin Baulig  <martin@ximian.com>
23616
23617         * class.c (mono_class_init): Don't create `class->methods' if it's
23618         already initialized.
23619
23620         * metadata.c (mono_metadata_load_generic_params): Make this
23621         actually work.
23622
23623         * reflection.c (mono_reflection_define_generic_parameter): Set
23624         parent class and interfaces from the constraints.
23625
23626         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
23627         to keep this struct in sync with the declaration in TypeBuilder.cs.
23628
23629 2003-09-17  Martin Baulig  <martin@ximian.com>
23630
23631         * metadata.h (MonoType): Replaced the data's `int type_param'
23632         field with `MonoGenericParam *generic_param'.
23633         (MonoGenericParam): Added `MonoClass *klass'.
23634
23635         * class.c (mono_class_from_gen_param): Removed the
23636         `MonoImage *image' and `int type_num' arguments.
23637
23638         * metadata.c (mono_metadata_parse_generic_param): New static
23639         method; creates a MonoGenericParam which just contains the index.
23640         (do_mono_metadata_parse_type): Call
23641         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
23642         MONO_TYPE_MVAR.
23643
23644         * reflection.c (mono_image_typedef_or_ref): Generic type
23645         parameters may be in the same assembly, but never use a typedef
23646         for them.
23647         (mono_reflection_define_generic_parameter): We're now creating a
23648         "real" class for the type parameter; it's now safe to call
23649         mono_class_from_mono_type() on the class'es type, it'll do the
23650         right thing.
23651
23652 2003-09-16  Martin Baulig  <martin@ximian.com>
23653
23654         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
23655         `symfile->range_entry_size' and `symfile->class_entry_size' here;
23656         the `symfile' data structure must be fully initialized before it
23657         gets added to the table.
23658
23659 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23660
23661         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
23662
23663         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
23664         class init trampolines.
23665
23666 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23667
23668         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
23669         to the built-in profiler to turn off time and allocation profiling
23670         respectively.
23671
23672 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
23675         g_direct_equal.
23676
23677         * debug-helpers.c (mono_method_full_name): Print the wrapper type
23678         in human readable form.
23679
23680 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23681
23682         * reflection.c icall.c: Fixed warnings.
23683
23684         * image.c (load_class_names): Use a temporary hash table to hold the
23685         namespaces in order to avoid doing many string comparisons.
23686
23687         * image.h: Fix typo.
23688
23689         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
23690         Pass NULL instead of g_direct_equal to the GHashTable constructor 
23691         since the NULL case is short-circuited inside g_hash_table_lookup, 
23692         leading to better performance.  
23693
23694         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
23695         obtain the first custom attribute for a given index. Depends on the
23696         CustomAttribute table being sorted by the parent field.
23697
23698         * reflection.c (mono_custom_attrs_from_index): Use the new function 
23699         for better performance.
23700
23701 2003-09-07  Martin Baulig  <martin@ximian.com>
23702
23703         * class.c (mono_class_init): If we're a generic instance, inflate
23704         all our methods instead of loading them from the image.
23705         (mono_class_from_generic): Set `class->methods = gklass->methods'.
23706
23707 2003-09-07  Martin Baulig  <martin@ximian.com>
23708
23709         * mono-debug-debugger.c: Added support for constructors.
23710
23711 2003-09-06  Martin Baulig  <martin@ximian.com>
23712
23713         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
23714         New interncall.
23715
23716         * reflection.c (mono_reflection_setup_generic_class): Call
23717         ensure_runtime_vtable() to create the vtable.
23718
23719 2003-09-05  Martin Baulig  <martin@ximian.com>
23720
23721         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
23722         MONO_TYPE_MVAR.
23723
23724 2003-09-04  Martin Baulig  <martin@ximian.com>
23725
23726         * reflection.c (mono_reflection_define_generic_parameter): Generic
23727         parameters start with zero.
23728
23729 2003-09-04  Martin Baulig  <martin@ximian.com>
23730
23731         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
23732
23733         * reflection.h (MonoReflectionGenericParam): New typedef.
23734         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
23735         the generic parameters from the managed TypeBuilder.
23736
23737         * reflection.c (mono_reflection_define_generic_parameter): New function.
23738         (mono_reflection_create_runtime_class): Encode generic parameters.
23739         (mono_reflection_setup_generic_class): New function; this is
23740         called after adding adding all generic params to the TypeBuilder.
23741         (encode_type): Added MONO_TYPE_VAR.
23742
23743 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
23744
23745         * class.h class.c (mono_class_needs_cctor_run): Moved this method
23746         here from the JIT.
23747
23748         * assembly.h assembly.c: Moved the AOT loading code into an assembly
23749         load hook.
23750
23751 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
23752
23753         * reflection.h reflection.c class.h class.c: Delete duplicate 
23754         definition of mono_type_get_name () from reflection.c and export the
23755         one in class.c.
23756
23757         * class.c: Class loading fixes from Bernie Solomon 
23758         (bernard@ugsolutions.com).
23759
23760         * reflection.c: Endianness fixes from Bernie Solomon 
23761         (bernard@ugsolutions.com).
23762         
23763 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
23764
23765         * assembly.h assembly.c: Define a file format version for AOT
23766         libraries.
23767         
23768         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
23769
23770         * appdomain.h (MonoJitInfo): New field to determine whenever the
23771         code is domain neutral.
23772         
23773 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
23774
23775         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
23776
23777 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
23778
23779         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
23780         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
23781         Avoid caching the result since strings must be domain specific. Fixes
23782         #48050.
23783
23784 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
23785
23786         * marshal.c (mono_marshal_init): Make this callable multiple times
23787         since it is hard to find a correct place to call it.
23788
23789         * object.c (mono_runtime_class_init): Execute static constructors in
23790         the correct appdomain.
23791
23792         * image.c (build_guid_table): Handle the case when multiple images have
23793         the same GUID.
23794
23795 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23796
23797         * icall.c: added a couple of icalls for System.Web.
23798
23799 2003-08-28  Martin Baulig  <martin@ximian.com>
23800
23801         * icall.c (ves_icall_Type_BindGenericParameters): Use
23802         `klass->generic_inst' instead of `&klass->byval_arg' in the
23803         mono_type_get_object() call.  The returned type must be
23804         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
23805
23806 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
23807
23808         * NOTES: New file.
23809
23810         * object.c (mono_class_proxy_vtable): Make it thread safe.
23811
23812         * pedump.c: Fix warning.
23813
23814         * object.c appdomain.h: Get rid of metadata_section. 
23815         It is no longer needed and it was causing deadlocks with domain->lock.
23816
23817         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
23818
23819 2003-08-26  Martin Baulig  <martin@ximian.com>
23820
23821         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
23822
23823 2003-08-26  Martin Baulig  <martin@ximian.com>
23824
23825         * pedump.c (main): Call mono_metadata_init(),
23826         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
23827         and mono_loader_init().
23828
23829 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
23830
23831         * loader.h: Add missing include to fix build.
23832
23833         * image.h: mono_image_load_references is no more.
23834
23835         * assembly.c: Reworked assembly loading to make it really thread safe.
23836         After these changes, the assembly returned by mono_assembly_open is
23837         fully initialized, i.e. all its references assemblies are loaded.
23838
23839         * assembly.c (mono_image_load_references): Renamed to 
23840         mono_assembly_load_references, and made private, since clients no
23841         longer need to call it.
23842
23843         * class.c: Removed calls to mono_assembly_load_references, since it was
23844         a source of deadlocks.
23845
23846         * loader.h loader.c class.h class.c: Protect data structures using a 
23847         new lock, the loader lock.
23848
23849         * class.c (mono_class_setup_vtable): Create temporary hash tables and
23850         GPtrArrays only when needed.
23851
23852         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
23853         into empty structures by mcs. Fixes pinvoke7.cs.
23854         
23855         * domain.c (mono_init): Call a new initialization function.
23856
23857         * appdomain.c (mono_runtime_init): Call the new initializer function
23858         of the marshal module.
23859
23860         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
23861         inserted into empty structures by mcs. Fixes pinvoke7.cs.
23862
23863         * marshal.h marshal.c: Added locks around the wrapper caches to make
23864         this module thread safe.
23865
23866         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
23867         this argument. Fixes pinvoke1.exe.
23868
23869 2003-08-25  Lluis Sanchez <lluis@ximian.com>
23870
23871         * object.h: Added call_type field to MonoMethodMessage and the corresponding
23872         enumeration of values. Removed fields to store remote call output values in
23873         MonoAsyncResult. Not needed any more.
23874         * object.c: Initialize call_type and async_result fields in mono_message_init.
23875         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
23876         dispatching the message.
23877         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
23878         async call to finish. To do it use a message with EndInvoke call type.
23879
23880 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23881
23882         * loader.h loader.c (mono_method_hash_marhal_info): New function which
23883         determines whenever a method has marshalling info.
23884
23885 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23886
23887         * assembly.c: fix the build on windows.
23888
23889 2003-08-22 Lluis Sanchez <lluis@ximian.com>
23890
23891         * object.cs: Fixed bug #47785.
23892
23893 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
23894
23895         * string-icalls.c (StringReplace): If their are no occurances of
23896         the old string found return a reference to the supplied
23897         string. This saves some memory and matches MS behavoir.
23898         
23899 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23900
23901         * socket-io.c: fixed compilation for systems that define AF_INET6
23902         and don't define SOL_IP/SOL_IPV6.
23903
23904 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
23905
23906         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
23907         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
23908
23909         * rawbuffer.c rawbuffer.h: Make this module thread safe.
23910
23911         * domain.c: Make this module thread safe.
23912
23913         * domain.c (mono_init): Call new initialization function.
23914
23915         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
23916         reference types too. Fixes #38812.
23917
23918         * image.c (mono_image_init): Fixed warnings.
23919
23920         * class.c (mono_class_from_typeref): Handle assembly load failure
23921         correctly.
23922
23923         * appdomain.c (add_assemblies_to_domain): Handle the case when
23924         the references of an assembly are not yet loaded.
23925
23926         * metadata.c image.c assembly.c: Moved initialization of global
23927         variables to a separate function called at startup since lazy 
23928         initialization of these variables is not thread safe.
23929         
23930         * image.c assembly.c: Made this module thread safe by adding locks in 
23931         the appropriate places.
23932
23933         * domain.c (mono_init): Call the new initialization functions of the
23934         three modules.
23935
23936 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
23937
23938         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
23939           make a direct call. It is proxy's work to make the call asynchronous.
23940           mono_delegate_end_invoke(): If the targe is a proxy, just collect
23941           the return values.
23942         * object.cs: mono_method_call_message_new(): read AsyncResult and
23943           state object from parameters list, if this info is requested.
23944         * object.h: Added fields to store remote call output values in
23945           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
23946
23947 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23948
23949         * object.h: add needed fields to MonoThread.
23950         * threads.c, threads.h: allow registering a function to cleanup data
23951         allocated per thread by the JIT.
23952
23953 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23954
23955         * loader.h: portability fix by Bernie Solomon
23956         * <bernard@ugsolutions.com>.
23957
23958 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
23959
23960         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
23961         return a MonoArray. This simplifies the code and also ensures that
23962         the cache allways contains an object reference as a value.
23963
23964         * icall.c (ves_icall_get_parameter_info): Simplified using the new
23965         function.
23966
23967 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23968
23969         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
23970         fixes a problem with byte ordering when getting the address family for
23971         a socket.
23972
23973 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
23974
23975         * .cvsignore: Added monosn.
23976
23977         * reflection.h reflection.c loader.c: Added support for parameter
23978         marshalling to dynamically created types. Fixes #47295.
23979
23980 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23981
23982         * rand.c: remove useless warnings.
23983
23984 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23985
23986         * class.c: implemented ldtoken for methods and fieldrefs.
23987
23988 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23989
23990         * threadpool.c: when mono_async_invoke was called, no one took care of
23991         monitoring the queue. So if the method invoked took some time and we
23992         got new async invoke requests after 500 ms (the thread created waited
23993         that long in WaitForSingleObject), the new async invoke was not called
23994         until the previous one finished.
23995
23996         This is fixed now. Thanks to Totte for helping with it.
23997
23998 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23999
24000         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
24001
24002 2003-08-11  Martin Baulig  <martin@ximian.com>
24003
24004         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
24005
24006 2003-08-06  Martin Baulig  <martin@ximian.com>
24007
24008         * mono-debug-debugger.c: Added support for static fields,
24009         properties and methods.
24010
24011 2003-08-06  Martin Baulig  <martin@ximian.com>
24012
24013         * mono-debug-debugger.c: Don't store the MonoString's vtable to
24014         make this work for applications with multiple application domains.
24015
24016 2003-08-04  Martin Baulig  <martin@ximian.com>
24017
24018         * mono-debug-debugger.c: Completely reworked the type support; the
24019         most important thing is that we're now just using one single
24020         `MonoType' instance per type.
24021
24022 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
24023
24024         * mono-endian.h, mono-endian.c, icall.c: Added icall
24025         ves_icall_System_Double_AssertEndianity to assert double word endianity
24026         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
24027
24028 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24029
24030         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
24031         support, icalls and fixes.
24032
24033 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
24034
24035         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
24036         classes that are a punctuation character in .NET is not the same a
24037         g_unichar_ispunct.
24038
24039 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24040
24041         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
24042
24043 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
24044
24045         * icall.c: Add new MemCopy internalcall.
24046         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
24047         Simplified code; It is not necessary to handle all the cases here,
24048         as the C# code takes care of it.  Only handle the case of the name
24049         resource embedded into the assembly.
24050
24051         Changed signature to return the data pointer and the size of the
24052         data. 
24053
24054 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
24055
24056         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
24057         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
24058
24059 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
24060
24061         * socket-io.c: ignore EINTR error in select.
24062
24063 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
24064
24065         * class.h, class.c: removed unused subclasses field in MonoClass.
24066
24067 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
24068
24069         * icall.c: improve fix of get_base_definition(). If the parent class
24070           doesn't have the mehod, look at the parent of the parent.
24071         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
24072           to check if a parameter is an in or out parameter
24073           (PARAM_ATTRIBUTE_IN is not set by default).
24074           mono_method_return_message_restore(): Use mono_class_value_size to
24075           get the size of a value type. mono_type_stack_size (parameterType)
24076           does not return the correct value if parameterType is byRef.
24077           mono_load_remote_field(), mono_load_remote_field_new(),
24078           mono_store_remote_field(), mono_store_remote_field_new():
24079           raise exception if the remote call returns an exception.
24080
24081 2003-07-28  Martin Baulig  <martin@ximian.com>
24082
24083         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
24084         method.  This is a wrapper around mono_runtime_invoke() which
24085         boxes the instance object if neccessary.
24086
24087 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24088
24089         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
24090         metadata.h, row-indexes.h, verify.c: first cut of generics support.
24091
24092 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24093
24094         * icall.c: disable mcs bug workaround.
24095
24096 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24097
24098         * object.c (mono_runtime_class_init): Take the metadata_section
24099         mutex before obtaining the domain mutex.
24100
24101         * appdomain.h: Added definition of metadata_section mutex here. 
24102
24103         * object.c: define metadata_mutex here.
24104
24105 2003-07-24  Ravi Pratap  <ravi@ximian.com>
24106
24107         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
24108         fixed.
24109
24110 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
24111
24112         * reflection.c: Fix bug #46669
24113
24114 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24115
24116         * exception.c:
24117         * exception.h:
24118         * icall.c:
24119         * object.h: fill in the type name for TypeLoadException.
24120
24121 2003-07-23  Ravi Pratap  <ravi@ximian.com>
24122
24123         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
24124         relationship between TypeBuilders while compiling corlib) and bug
24125         45993 (Array types returned from the runtime while compiling
24126         corlib were from the loaded corlib).
24127
24128 2003-07-22  Martin Baulig  <martin@ximian.com>
24129
24130         * mono-debug-debugger.c: Reworked the type support a bit more;
24131         distinguish between types and classes.
24132
24133 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
24134
24135         * icall.c: add IsArrayImpl icall.
24136
24137 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
24138
24139         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
24140         initializing real_size only once. Also fix bug #46602.
24141
24142 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
24143
24144         * object.c: Renamed mono_metadata_section to metadata_section.
24145
24146 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
24147
24148         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
24149           empty array if the type is an array. Fixed.
24150           ves_icall_MonoMethod_get_base_definition: if the base method
24151           is abstract, get the MethodInfo from the list of methods of
24152           the class.
24153         * reflection.c: ParameterInfo.PositionImpl should be zero-based
24154           and it was 1-based. Fixed in mono_param_get_objects.
24155
24156 2003-07-20  Martin Baulig  <martin@ximian.com>
24157
24158         * mono-debug.h: Set version number to 31.
24159         (mono_debug_init): Added `MonoDomain *' argument.
24160
24161         * mono-debug-debugger.c: Reworked the type support; explicitly
24162         tell the debugger about builtin types; pass the `klass' address to
24163         the debugger.
24164
24165 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
24166
24167         * image.c: Allow new metadata tables to be loaded without a
24168         warning. Also update the warning message to give the new constant value.
24169                 
24170 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24171
24172         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
24173         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
24174         array type representation changes.
24175
24176 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24177
24178         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
24179         on Environment.Exit () call.
24180
24181 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24182
24183         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
24184         requires a matching corlib.
24185
24186 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
24187
24188         * Changelog: My editor decided to add a CR to each line. Sorry about that.
24189           Committed again without the CRs.
24190         
24191 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
24192
24193         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
24194           getting it from the "this" socket instance. Did not work
24195           if the socket is a subclass of Socket.
24196           Also fixed bug #35371.
24197
24198 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24199
24200         * metadata.c: fixed size for TypedByRef.
24201         * loader.c: when searching for a method, consider the vararg amrker.
24202         * unicode.c, decimal.c: constify some arrays.
24203
24204 2003-07-15  Dick Porter  <dick@ximian.com>
24205
24206         * socket-io.c: Fixed compilation for gcc < 3.2.
24207
24208         Fixed compilation for machines that don't have AF_INET6 (thanks to
24209         Bernie Solomon <bernard@ugsolutions.com> for that part.)
24210
24211         Fixed compile warnings.
24212         
24213         Fixed formatting and line endings.
24214
24215 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
24216
24217         * socket-io.h:
24218         * socket-io.c: Added IPv6 support.
24219
24220 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
24221
24222         * class.c (mono_class_is_assignable_from): New function to implement
24223         the is_assignable_from logic. Used by mono_object_isinst, 
24224         Type::IsAssignableFrom () and the interpreter.
24225
24226         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
24227         Object, even interfaces.
24228         
24229         * object.c (mono_object_isinst): Implement in terms of 
24230         is_assignable_from.
24231
24232         * icall.c (ves_icall_type_is_assignable_from): New icall.
24233
24234 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
24235
24236         * domain.c (foreach_domain): fix compiler warning.
24237
24238 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
24239
24240         * image.c (load_metadata_ptrs): use g_strndup because strndup is
24241         not available on all plattforms
24242
24243 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
24244
24245         * image.h image.c: Store the metadata version string in MonoImage.
24246         * icall.c: New icall to retrieve the image version.
24247         * reflection.c (create_dynamic_image): Fill in the image version field
24248         * reflection.c (build_compressed_metadata): Use the image version
24249         from the image structure.
24250
24251 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24252
24253         * appdomain.c: modified comment.
24254         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
24255         That will be its last iteration when mono_gc_cleanup is called from
24256         mono_runtime_cleanup and before the domain is unloaded.
24257
24258         Fixes bug #45962.
24259
24260 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
24261
24262         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
24263         attributes.
24264
24265 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24266
24267         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
24268         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
24269         Bernie Solomon <bernard@ugsolutions.com>.
24270
24271 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24272
24273         * object.c, object.h: provide mono_object_new_fast() for faster
24274         allocation in some special cases.
24275
24276 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24277
24278         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
24279         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
24280
24281 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24282
24283         * threadpool.c: fix leaks.
24284
24285 2003-07-01  Dick Porter  <dick@ximian.com>
24286
24287         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
24288         using MonoGHashTables.  Fixes threadpool bug posted to list.
24289
24290 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
24291
24292         * image.h, image.c: added support to load an assembly from a byte array.
24293         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
24294         assembly bundle support.
24295
24296 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
24297
24298         * threadpool.c (mono_thread_pool_add): keep a reference to the
24299         AsyncResult to prevent GC
24300
24301 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24302
24303         * class.c: leak fix.
24304
24305 2003-06-25  Dick Porter  <dick@ximian.com>
24306
24307         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
24308         for the async object, the WaitHandle object will close the handle.
24309         Fixes bug 45321.
24310
24311 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24312
24313         * class.c: in mono_array_class_get (), lookup from the hash with the
24314         same type we insert: this works around a bug in
24315         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
24316         lluis. The real fix will have to wait for after the release.
24317
24318 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24319
24320         * icall.c: fix memory leak when getting type members.
24321
24322 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
24323
24324         * reflection.c: added more pubtoken special cases.
24325
24326 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24327
24328         * class.c: handle field offset correctly when class size
24329         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
24330
24331 2003-06-20  Martin Baulig  <martin@ximian.com>
24332
24333         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
24334         *image' field.
24335
24336 2003-06-20  Martin Baulig  <martin@ximian.com>
24337
24338         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
24339
24340 2003-06-20  Martin Baulig  <martin@ximian.com>
24341
24342         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
24343         just distinguish between variables in registers and variables at
24344         an offset relative to a register.
24345
24346 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24347
24348         * icall.c: #ifdef out latest changes until mcs is fixed.
24349
24350 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24351
24352         * icall.c: return members in metadata order.
24353
24354 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24355
24356         * icall.c: avoid infinite loop in GetTimeZoneData.
24357
24358 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24359
24360         * icall.c: added Marshal.Prelink/All icalls.
24361
24362 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
24363
24364         * object.c, object.h: fix warnings and do some overflow checking
24365         when creating arrays.
24366
24367 2003-06-17  Dick Porter  <dick@ximian.com>
24368
24369         * file-io.h:
24370         * file-io.c: File attributes need to be tweaked slightly when
24371         passed from the managed to the w32 world.
24372
24373 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24374         * profiler.h profiler-private.h profiler.c: Rework last patch
24375         based on suggestion by Paolo.
24376         
24377 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24378
24379         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
24380         instruction level coverage data collection.
24381         * profiler.h profiler.c (: Added new callback function which can be
24382         used by the profiler to limit which functions should have coverage
24383         instrumentation.
24384         * profiler.c (mono_profiler_load): Call g_module_build_path to
24385         generate the file name of the profiler library.
24386
24387 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24388
24389         * profiler.c, profiler.h, profiler-private.h: added basic block 
24390         coverage profiling API.
24391
24392 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
24393
24394         * reflection.c (mono_reflection_create_runtime_class): Add support
24395         for events in dynamically generated code.
24396
24397         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
24398         not allocated.
24399
24400 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24401
24402         * icall.c: when getting timezone info, return reasonable values if we
24403         can't get the actual data.
24404
24405 2003-06-14  Dick Porter  <dick@ximian.com>
24406
24407         * threads.c (start_wrapper): Remove the reference to the thread
24408         object in the TLS data, so the thread object can be finalized.
24409         This won't be reached if the thread threw an uncaught exception,
24410         so those thread handles will stay referenced :-( (This is due to
24411         missing support for scanning thread-specific data in the Boehm GC
24412         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
24413
24414 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
24415
24416         * reflection.c: ensure streams and tables are first allocated with
24417         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
24418
24419 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24420
24421         * icall.c: fixed GetElementType for byrefs (bug# 44792).
24422
24423 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
24424
24425         * reflection.c (mono_reflection_create_runtime_class): Add support for
24426         properties to dynamically created classes.
24427         * reflection.c: Fix a few places where non-MonoObjects were inserted
24428         into the tokens hashtable.
24429
24430 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24431
24432         * object.c: some support to handle out of memory exceptions.
24433
24434 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
24435
24436         * marshal.c (mono_marshal_get_native_wrapper): support reference
24437         return types
24438
24439 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * object.h, object.c: more portability stuff from Bernie Solomon.
24442         Unexport mono_object_allocate(). Added mono_object_unbox ().
24443         Set exitcode when an unhandled exception is thrown.
24444
24445 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
24446
24447         * marshal.c (mono_marshal_get_native_wrapper): use custom
24448         marshaler for return types.
24449
24450 2003-06-10  Dick Porter  <dick@ximian.com>
24451
24452         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
24453         ip_mreq is available
24454
24455 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
24458         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
24459         by Bernie Solomon <bernard@ugsolutions.com>.
24460
24461 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
24462
24463         * gc.c (mono_gc_init): Avoid error message on shutdown when
24464         GC_DONT_GC=1 is used.
24465
24466         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
24467         New icall to return the GUID of a module.
24468
24469 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24470
24471         * class.c: ensure instance size always includes the parent's size
24472         even whem class size is set explicitly (fixes bug#44294).
24473
24474 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24475
24476         * profiler.h, profiler.c: made the simple profiler thread-safe,
24477         get more accurate timing info. Allow the loading of an
24478         externally-developed profiler module.
24479
24480 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
24481
24482         * marshal.c (mono_marshal_get_native_wrapper): improved
24483         class/byref arguments.
24484         (mono_marshal_get_native_wrapper): better string marshaling support.
24485
24486 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24487
24488         * class.c: ensure .pack and .size are handled correctly and
24489         simplified layout of static fields.
24490
24491 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24492
24493         * appdomain.c
24494         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
24495
24496         * loader.c (mono_lookup_pinvoke_call): look for modules in the
24497         current directory (fix bug 44008)
24498
24499 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
24500
24501         * marshal.c (mono_marshal_get_native_wrapper): started support for
24502         custom marshalers.
24503         (mono_delegate_to_ftnptr): consider marshalling specifications
24504
24505 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24506
24507         * reflection.c, reflection.h: emit custom marshal info.
24508
24509 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24510
24511         * object.c: free the GError.
24512         * icall.c: added CloseEvent_internal.
24513         * threads.[ch]:
24514         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
24515         call.
24516
24517 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
24518
24519         * loader.c (mono_method_get_signature): Add support for dynamic
24520         assemblies.
24521
24522 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24523
24524         * reflection.c: fixed bug #43905.
24525
24526 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24527
24528         * class.c, domain.c, icall.c, metadata.h, object.h: support for
24529         handling TypedReference and ArgIterator.
24530         * loader.c, loader.h: added function to get signature at call site.
24531
24532 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24533
24534         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
24535         data readonly. Buglets and warning fixes. Some MethodSpec support.
24536
24537 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * class.h, class.c, object.c: remove relative numbering support.
24540
24541 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
24542
24543         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
24544         free the string, until we get a chance to fix Gtk#
24545
24546 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24547
24548         * marshal.c: revert last patch.
24549
24550 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24551
24552         * icall.c: updates for new mono_class_vtable() not calling
24553         the type constructor anymore.
24554
24555 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24556
24557         * object.h, object.c: separate vtable creation from type
24558         initialization. Make running the .cctor thread safe.
24559
24560 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24561
24562         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
24563
24564 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24565
24566         * loader.c (mono_get_method): consider calling convention
24567
24568 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
24571         to return the invisible global type for a module.
24572
24573         * reflection.c (mono_image_build_metadata): Emit global fields too.
24574
24575 2003-05-20  Peter Williams  <peterw@ximian.com>
24576
24577         * loader.c (mono_lookup_internal_call): Add a few newlines.
24578
24579 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
24580
24581         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
24582         literal strings.
24583
24584         * appdomain.c (set_domain_search_path): Recalculate search path when
24585         AppDomainSetup.PrivateBinPath changes.
24586
24587         * object.c (mono_class_compute_gc_descriptor): It turns out some
24588         parts of the class libs (like System.Thread) holds pointers to
24589         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
24590         to treat native int a pointer type here.
24591         
24592 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
24593
24594         * appdomain.h, domain.c: add hashtable for jump target resolution.
24595
24596 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
24597
24598         * reflection.h reflection.c icall.c: Added new icalls 
24599         GetManifestResourceInfoInternal, GetModulesInternal and support
24600         infrastructure.
24601
24602 2003-05-16  Dick Porter  <dick@ximian.com>
24603
24604         * icall.c:
24605         * file-io.h:
24606         * file-io.c: Implement System.IO.MonoIO::GetTempPath
24607
24608 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
24609
24610         * object.c: mono_store_remote_field: little fix to previous patch.
24611
24612 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24613
24614         * class.c: add constructors to array classes.
24615         * icall.c: special case array construction for InternalInvoke (),
24616
24617 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
24618
24619         * class.h class.c reflection.c object.c: Added support for field
24620         defaults in dynamically generated classes.
24621
24622 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24623
24624         * reflection.c: properly encode charset for ddlimport.
24625
24626 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24627
24628         * threads.c: allow compiling without GC.
24629
24630 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24631
24632         * appdomain.h, object.c, object.h, threads.c, threads.h: added
24633         handling of thread static data.
24634
24635 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24636
24637         * reflection.h, reflection.c: added mono_custom_attrs_free ().
24638
24639 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24640
24641         * class.c (mono_array_class_get): always set the serializable flags
24642         (mono_array_class_get): always set the SEALED attribute for array types
24643
24644 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
24645
24646         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
24647         attributes (fix for bug 42021).
24648
24649 2003-05-12  Dick Porter  <dick@ximian.com>
24650
24651         * gc.c: Don't run finalizers when the finalizer thread is
24652         finishing up, because the default domain has already been
24653         destroyed.
24654
24655 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
24656
24657         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
24658         value is null, we should throw an exception.   This is slightly
24659         different than the other conventions used for the constructor.
24660
24661 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24662
24663         * socket-io.c: fixed windows build.
24664
24665 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24666
24667         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
24668
24669 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
24670
24671         * object.c (mono_string_new_wrapper): Compatibility fix for MS
24672         compilers.
24673
24674 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
24675
24676         * class.c (mono_class_layout_fields): Add experimental GC aware
24677         auto layout facility. Requires class library changes to work correctly.
24678
24679         (mono_class_setup_vtable): Avoid overriding explicit interface
24680         method implementations. Fixes iface3.exe test.
24681
24682         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
24683         object reference.
24684         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
24685         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
24686
24687         * metadata.h: Add new type classification macro which determines
24688         whenever the type holds an object reference.
24689
24690 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24691
24692         * marshal.c (mono_marshal_get_native_wrapper): cleanups
24693
24694 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
24695
24696         * gc.c (finalizer_thread): Work around a GC bug.
24697
24698 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
24699
24700         * marshal.c (emit_struct_conv): allow unions
24701
24702         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
24703
24704 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
24705
24706         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
24707
24708 2003-05-06  Martin Baulig  <martin@ximian.com>
24709
24710         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
24711
24712 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24713
24714         * socket-io.c:
24715         (Select_internal): allow NULLs, don't create arrays if not needed.
24716         Coupled with Socket.cs changes.
24717
24718         * threadpool.c:
24719         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
24720         register a finalizer for it that will close the semaphore handle. This
24721         fixes the leak and make Lupus' test run with > 4080 loops.
24722
24723 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24724
24725         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
24726         Jerome Laban (bug #42287)
24727
24728 2003-05-02  Martin Baulig  <martin@ximian.com>
24729
24730         * debug-mono-symfile.h
24731         (MonoSymbolFile): Moved declaration into mono-debug.h.
24732         (MonoDebugMethodJitInfo): Likewise.
24733         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
24734         argument.
24735         (_mono_debug_address_from_il_offset): Take a
24736         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
24737
24738         * mono-debug.h
24739         (MonoDebugDomainData): New struct.
24740         (mono_debug_get_domain_data): New function.
24741         (mono_debug_add_method): Take an additional `MonoDomain *'
24742         argument.
24743         (mono_debug_source_location_from_address): Likewise.
24744         (mono_debug_il_offset_from_address): Likewise.
24745         (mono_debug_address_from_il_offset): Likewise.
24746
24747 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
24748
24749         * reflection.c: one more check for null type in custom attrs.
24750
24751 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24752
24753         * reflection.c: avoid warning (comparison is always false due to limited
24754         range of data type).
24755
24756 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24757
24758         * icall.c: throw an exception in Type.GetField if the argument 'name'
24759         is NULL.
24760
24761 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
24762
24763         * reflection.c: fixed handling of enums in named arguments to custom
24764         attributes (bug #42123).
24765
24766 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24767
24768         * reflection.c: use the right array element type and handle
24769         a null for a Type argument, too.
24770
24771 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
24772
24773         * reflection.c: handle arrays as arguments to custom attributes.
24774
24775 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
24776
24777         * reflection.c: handle a string value in a custom attr
24778         ctor that takes an object.
24779
24780 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24781
24782         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
24783         (fix bug #42063)
24784
24785 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24786
24787         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
24788
24789 2003-04-27  Martin Baulig  <martin@ximian.com>
24790
24791         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
24792         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
24793         MONO_DEBUGGER_EVENT_BREAKPOINT.
24794         (mono_breakpoint_trampoline_code): Removed.
24795         (mono_debugger_event_handler): The last argument is now a
24796         `guint32'.
24797         (mono_debugger_insert_breakpoint_full): Removed the
24798         `use_trampoline' argument.
24799         (mono_debugger_method_has_breakpoint): Likewise.
24800         (mono_debugger_trampoline_breakpoint_callback): Renamed to
24801         mono_debugger_breakpoint_callback(); take the method and
24802         breakpoint number as arguments.
24803
24804 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24805
24806         * metadata.c: fix off by one when loading parameters attributes.
24807
24808 2003-04-24  Martin Baulig  <martin@ximian.com>
24809
24810         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
24811
24812 2003-04-24  Martin Baulig  <martin@ximian.com>
24813
24814         * mono-debug-debugger.c: Moved all code which interacts with the
24815         Mono Debugger here.
24816
24817         * debug-mono-symfile.c: This code now just deals with the symbol
24818         file itself, the debugger code is now in mono-debug-debugger.c.
24819
24820 2003-04-23  Martin Baulig  <martin@ximian.com>
24821
24822         * mono-debug.c (mono_debug_source_location_from_il_offset):
24823         New method; like mono_debug_source_location_from_address(), but
24824         takes an IL offset instead of a machine address.
24825
24826 2003-04-23  Martin Baulig  <martin@ximian.com>
24827
24828         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
24829         `line' field; this is now computed by the debugger.
24830
24831 2003-04-23  Martin Baulig  <martin@ximian.com>
24832
24833         * mono-debug.[ch]: New files.  This is the new debugging interface.
24834
24835         * mono-debug-debugger.[ch]: New files.  Moved all code which
24836         interacts with the Mono Debugger here.
24837
24838 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24839
24840         * domain.c (mono_init): initialize mono_defaults.monitor_class
24841
24842 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
24843
24844         * reflection.c (method_encode_code): Add a spicy exception to help
24845         future compiler authors.
24846
24847 2003-04-21  Martin Baulig  <martin@ximian.com>
24848
24849         * icall.c
24850         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
24851         Make this work with relative pathnames; g_filename_to_uri() needs
24852         an absolute filename.
24853
24854 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
24855
24856         * icall.c: Track name changes in Object and ValueType.
24857
24858 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
24859
24860         * metadata.c (mono_type_stack_size): size should be a multiple of
24861         sizeof (gpointer)
24862
24863 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24864
24865         * gc.c:
24866         (internal_domain_finalize): moved into mono_domain_finalize. No need
24867         to create another thread because the finalizers will be run in the
24868         finalizer thread.
24869         
24870         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
24871         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
24872         to be run (MS does this too).
24873
24874 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24875
24876         * object.c (mono_class_compute_gc_descriptor): Update comment.
24877
24878         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
24879
24880         * image.h: Add synchronized wrapper cache.
24881
24882         * image.c (do_mono_image_open): Initialize cache.
24883
24884         * reflection.c (create_dynamic_mono_image): Initialize cache.
24885
24886 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24887
24888         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
24889         ves_icall_System_Buffer_ByteLengthInternal.
24890
24891 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24892
24893         * reflection.c: setup klass->nested_in earlier. Allow
24894         a dash in the assembly name.
24895
24896 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
24897
24898         * metadata.c (mono_type_to_unmanaged): dont access
24899         type->data.klass for MONO_TYPE_OBJECT
24900         (mono_type_to_unmanaged): consider System.Delegate class
24901
24902 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * class.c: just setup supertypes in the proper place instead of
24905         initializing the full element class for arrays.
24906
24907 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24908
24909         * class.c: ensure the element class of arrays is initialized.
24910         Setup the supertype info for array classes, too.
24911
24912 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
24913
24914         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
24915
24916 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24917
24918         * Makefile.am: re-added -m option when running cygpath. This way,
24919         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
24920         separator.
24921         * mono-config.c: same codepath for locating mono config file for WIN32
24922         and the rest.
24923         * assembly.c: if mono_assembly_setrootdir is called, don't override
24924         the value set.
24925
24926 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24927
24928         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
24929         MONO_ASSEMBLIES variable.
24930
24931 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24932
24933         * icall.c: added Assembly::GetNamespaces() icall.
24934
24935 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24936
24937         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
24938
24939 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
24940
24941         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
24942         * object.c: fixed bug in the construction of vtable for proxies
24943
24944 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24945
24946         * object.c (mono_array_new): Mark mono_array_new as an icall.
24947
24948 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24949
24950         * class.c: fixed test for public method when overriding interfaces.
24951         Closes bug #40970.
24952
24953 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24954
24955         * appdomain.h, domain.c: added mono_domain_foreach() to
24956         be able to access the currently loaded appdomains.
24957         * object.c: make string interning work across sppdomains.
24958         Mark some functions for use as icalls.
24959
24960 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24961
24962         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
24963
24964         * reflection.h reflection.c: Allocate long living data using 
24965         GC_MALLOC_ATOMIC so the collector does not need to scan it.
24966
24967         * reflection.c: Double the allocation size in streams instead of
24968         increasing it, to prevent unneccesary copying on large assemblies.
24969         
24970         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
24971         creation if the assembly does not have the Run flag set.
24972
24973 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24974
24975         * class.h: avoid the C++ keywords in header files (Jerome Laban
24976         spotted and fixed this).
24977
24978 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24979
24980         * object.c:
24981         (mono_unhandled_exception): fill in the arguments for the
24982         UnhandledException event. Only trigger that event for the default
24983         domain (as MS does).
24984
24985 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
24986
24987         * object.c: Improve typed allocation stuff based on suggestions from
24988         Paolo. Also turn it on if the GC library supports it.
24989
24990 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
24991
24992         * object.c object.h class.h: Added experimental typed allocation
24993         facility using the interfaces in gc_gcj.h.
24994
24995         * os/gc_wrapper.h: Added new include files.
24996         
24997 2003-04-03  Martin Baulig  <martin@ximian.com>
24998
24999         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
25000         which is not yet enabled by default.
25001
25002         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
25003         functions.
25004         (mono_gc_lock, mono_gc_unlock): New static functions.
25005
25006         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
25007         functions; stop/start the world for the garbage collector.  This
25008         is using the windows API; we need to complete the SuspendThread()/
25009         ResumeThread() implementation in the io-layer to make this work on Unix.
25010         (mono_gc_push_all_stacks): New public function; tells the garbage
25011         collector about the stack pointers from all managed threads.
25012
25013 2003-04-03  Martin Baulig  <martin@ximian.com>
25014
25015         * object.h (MonoThread): Added `gpointer stack_ptr'.
25016
25017         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
25018
25019 2003-04-03  Martin Baulig  <martin@ximian.com>
25020
25021         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
25022
25023 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
25024
25025         * reflection.c (typebuilder_setup_fields): Initialize field.first and
25026         field.last.
25027
25028 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
25029
25030         * loader.c (mono_lookup_internal_call): Report the corlib that is
25031         out of sync.
25032
25033 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
25034
25035         * icall.c (ves_icall_type_GetTypeCode): fixed check for
25036         System.DBNull (it's class not valuetype).
25037
25038 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
25039
25040         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
25041         if the array method was already assigned a token (fixes bug#40646).
25042
25043 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
25044
25045         * reflection.c (mono_reflection_get_type): Attempt type resolve even
25046         if no assembly is given.
25047
25048 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
25049
25050         * metadata.h: Added the new tables.
25051
25052         * row-indexes.h: Added definitions for new tables.
25053
25054         * metadata.c: Add schemas for new tables, and add support for
25055         computing the sizes of them.
25056
25057         * class.c: Update for handling the new type cases.
25058
25059 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
25060
25061         * metadata.h (MONO_TYPE_IS_VOID): new macro
25062
25063 2003-03-31  Martin Baulig  <martin@ximian.com>
25064
25065         * threads.h (MonoThreadCallbacks): Added `thread_created'.
25066
25067         * threads.c (mono_thread_new_init): Call `thread_created' in the
25068         mono_thread_callbacks.
25069
25070 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
25071
25072         * loader.h: added marshalbyrefobject_class to mono_defaults
25073         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
25074         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
25075           generation of output parameters.
25076           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
25077         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
25078           contextbound and the target object belongs to the context of the caller.
25079         * object.h: added context and unwrapped_server variables in MonoRealProxy.
25080         * object.c: Implemented support for interfaces and abstract classes
25081           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
25082           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
25083
25084 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
25085
25086         * class.h class.c (mono_class_is_subclass_of): New function.
25087         
25088         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
25089         routines for most common case (calls from ArrayList::ToArray).
25090
25091         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
25092         routine so programs which call Environment::Exit() can be profiled.
25093
25094         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
25095         Added MONO_ARCH_SAVE_REGS.
25096
25097         * icall.c (ves_icall_type_is_subtype_of): Use new function.
25098
25099 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
25100
25101         * blob.h: Add a couple of new MonoType types definitions.
25102
25103         * tabledefs.h: Add a couple of new call convs.
25104
25105 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
25106
25107         * reflection.h (MonoReflectionDynamicAssembly): track changes in
25108         the layout of the class.
25109
25110         * reflection.c (alloc_table): double the size on overflow to avoid
25111         unnecessary copying.
25112
25113         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
25114         avoid filling out metadata tables and blobs. Also set mb->ilgen to
25115         null so it can be garbage collected.
25116         
25117 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
25118
25119         * reflection.c (mono_reflection_get_type): Return the resolved type
25120         only if it is in the assembly we searched.
25121
25122         * reflection.c (ensure_runtime_vtable): Initialize method slots.
25123
25124         * class.c (mono_class_setup_vtable): Set the slot of the overriding
25125         method.
25126
25127 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25128
25129         * appdomain.c:
25130         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
25131         the right one is 'file:///blah', but MS allows it.
25132         * assembly.c:
25133         (mono_assembly_open): allow 'file://blah'
25134
25135         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
25136
25137 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
25138
25139         * socket-io.c: fixes bug #40310.
25140
25141 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
25142
25143         * reflection.c (mono_reflection_parse_type): handle deeply nested
25144         types correctly.
25145
25146         * reflection.c (mono_image_create_token): Use unique token values
25147         since they will be put into a hash table.
25148
25149         * class.c (mono_class_setup_vtable): If a method occurs in more than
25150         one place in the vtable, and it gets overriden, then change the
25151         other occurances too.
25152
25153         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25154         object as return type.
25155
25156 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
25157
25158         * icall.c: Deleted "ToString" implementation for double and float
25159         because they are full implemented in managed code.
25160
25161 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
25162
25163         * reflection.c, reflection.h: implemented and exported functions
25164         to retrieve info about custom attributes.
25165
25166 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25167
25168         * appdomain.c: moved Uri handling to assembly.c
25169         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
25170         work when using a file Uri in *nix and windows.
25171
25172         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
25173         GetReferencedAssemblies.
25174
25175 2003-03-18  Dick Porter  <dick@ximian.com>
25176
25177         * icall.c: Rename a couple of internal calls
25178
25179         * threads.c: Set the thread state to Stopped when a thread exits.
25180         Fixes bug 39377.
25181
25182 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
25183
25184         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
25185         New icall.
25186
25187         * object.c (mono_class_vtable): fix warning.
25188
25189 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
25190
25191         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
25192
25193         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
25194         memory.
25195         (method_encode_clauses): Create exception info structures in the right
25196         order.
25197         (mono_reflection_setup_internal_class): Initialize supertypes field.
25198
25199         * class.c object.c: Handle interfaces which implement other interfaces 
25200         correctly.
25201
25202         * class.h class.c: Move the supertypes array initialization code into 
25203         a separate function so it can be used for dynamic types too. Also call
25204         it earlier, in mono_class_init(), since it can be used before the
25205         type is initialized.
25206
25207 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25208
25209         * Makefile.am:
25210         * assembly.c:
25211         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
25212
25213         * appdomain.c:
25214         * appdomain.h:
25215         * marshal.c:
25216         * object.c: remove warnings.
25217
25218 2003-03-13  Martin Baulig  <martin@ximian.com>
25219
25220         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
25221         (MonoDebugLexicalBlockEntry): New types.
25222
25223         * debug-mono-symfile.c
25224         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
25225
25226 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25227
25228         * process.c: ret can be any non-zero value accroding to MS doc.
25229
25230 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
25231
25232         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
25233         fixing a warning for a miss-used prototype, would have cause
25234         random memory corruption.
25235
25236 2003-03-07  Martin Baulig  <martin@ximian.com>
25237
25238         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
25239         getting really annoying ....
25240
25241 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
25242
25243         * reflection.c (fixup_method): added support for array methods.
25244
25245 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
25246
25247         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
25248         (pointed out by Michael Adams).
25249
25250 2003-03-04  Dick Porter  <dick@ximian.com>
25251
25252         * icall.c: Temporarily reverted the Double and Single ToString()
25253         change, because it broke nunit.
25254
25255 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * object.h, threads.h: make include files compatible with C++
25258         (patch by Jerome Laban <jlaban@wanadoo.fr>).
25259
25260 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
25261
25262         * icall.c: Erased ToString helper functions for Double and Single.
25263         Now, that implementations ar all in managed code (Double and Single
25264         Formatters).
25265
25266 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
25267
25268         * appdomain.c: Added method for initializing the default context of
25269         a domain. Added internal call for getting the default context.
25270         * appdomain.h: Added context variable in MonoDomain struct.
25271         * domain.c: mono_domain_set also sets the default context of the domain
25272         * icall.c: Mapped internal method InternalGetDefaultContext.
25273         * object.c: mono_object_get_virtual_method returns always a remoting
25274         wrapper if the object is a transparent proxy.
25275         mono_runtime_invoke_array: when creating an object by calling the
25276         constructor, if the created object is a proxy, then the constructor should
25277         be called using the a remoting wrapper.
25278
25279 2003-03-03  Dick Porter  <dick@ximian.com>
25280
25281         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
25282         variable so it compiles on solaris.  Problem spotted by
25283         Christopher Taylor <ct@cs.clemson.edu>
25284
25285 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25286
25287         * appdomain.c:
25288         (get_info_from_assembly_name): don't leak value.
25289
25290         * icall.c:
25291         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
25292         result.
25293
25294 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
25295
25296         * assembly.c: export mono_image_load_references ().
25297         * class.c: handle function pointers. mono_class_from_name() now
25298         supports nested type names directly.
25299
25300 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
25301
25302         * reflection.h reflection.c: Encode already created dynamic methods 
25303         and fields correctly as a DEF instead of a REF.
25304
25305         * reflection.c: Get rid of the force_ref argument to 
25306         mono_image_typedef_or_ref since it was wrong in the first place.
25307
25308         * string-icalls.c: add error checking to string constructors according
25309         to the MSDN docs.
25310
25311         * reflection.c: Emit types in the order their TypeBuilders were 
25312         created. Previously, a new table index was assigned to each type before
25313         the tables were emitted. This was wrong because the signature blob
25314         might already refer to a type by its original table index.
25315
25316 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
25317
25318         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
25319         change.
25320         
25321 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25322
25323         * Makefile.am: make assemblies dir have \ instead of / on windows.
25324
25325 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
25326
25327         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
25328         iterate over the NESTEDCLASS table using a linear search since the
25329         table is not guaranteed to be sorted by the secondary key.
25330
25331         * class.c (mono_class_create_from_typedef): fixed up call to
25332         mono_metadata_nesting_typedef.
25333         
25334 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
25335
25336         * marshal.c (mono_string_to_byvalstr): clear the memory as
25337         suggested by Jerome Laban <jlaban@wanadoo.fr>
25338
25339 2003-02-26  Dick Porter  <dick@ximian.com>
25340
25341         * process.c: Cope with padding in .rsrc blocks
25342
25343 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
25344
25345         * metadata.h: reverted the filter_len change, it breaks reflection
25346         
25347 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
25348
25349         * metadata.h: added a new field to store the filter_len
25350         
25351
25352 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
25353
25354         * reflection.c: handle custom attributes for types and members
25355         created with Reflection.Emit (bug#38422).
25356
25357 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
25358
25359         * reflection.c: define RTSpecialName automatically for constructors for
25360         compatibility with MS.NET.
25361
25362         * reflection.c (mono_reflection_create_runtime_class): initialize
25363         nested_in field of dynamically created classes.
25364
25365 2003-02-22  Martin Baulig  <martin@ximian.com>
25366
25367         * debug-mono-symfile.h: Incremented version number.
25368
25369 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
25370
25371         * object.h icall.c process.c: fix warnings.
25372
25373 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
25374
25375         * appdomain.h appdomain.c:
25376         (mono_domain_try_type_resolve): split the 
25377         name_or_tb argument into a name and a tb argument.
25378         (mono_domain_has_type_resolve): new function to check whenever the
25379         application has registered a TypeResolve event handler.
25380         
25381         * icall.c reflection.h reflection.c: move the type resolve logic into
25382         mono_reflection_get_type () so it will be invoked when 
25383         Assembly::GetType () is called.
25384
25385         * reflection.c:
25386         (mono_reflection_get_type): renamed to get_type_internal.
25387         (mono_reflection_get_type): fixed type name generation so it works 
25388         for nested types too.
25389         (mono_reflection_get_type): call has_type_resolve () to avoid the 
25390         costly type name generation if there is no resolve event handler.
25391
25392 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
25393
25394         * class.c, image.c: load exported types from file references.
25395
25396 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
25397
25398         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
25399           used to cache the managed methods used to create proxies and make 
25400           remote invocation of methods.
25401         * class.h: Added in MonoVTable a flag to indicate that a class needs 
25402           to be remotely created.
25403         * object.c: Modified the method mono_class_vtable(). It now initializes 
25404           the remote flag of the vtable. Modified mono_object_new_specific(), 
25405           so now it checks the remote flag.
25406         * icall.c: Added a couple of internal methods, one for enabling instance 
25407           creation interception for a type, and one for creating objects bypassing
25408           the remote check.
25409
25410 2003-02-18  Martin Baulig  <martin@ximian.com>
25411
25412         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
25413         New interncall to get a method's metadata token.
25414
25415         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
25416         New interncall for the debugger.
25417
25418 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
25419
25420         * class.c (mono_class_setup_vtable): allocate supertype array
25421
25422 2003-02-18  Martin Baulig  <martin@ximian.com>
25423
25424         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
25425
25426 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25427
25428         * reflection.c:
25429         (assembly_name_to_aname): jump over unknown properties (i've found
25430         something like: 'type, assembly, version=xxx, custom=null, public...',
25431         so now will ignore custom=null and still get the rest of the values).
25432
25433 2003-02-17  Dick Porter  <dick@ximian.com>
25434
25435         * threads.c: Have Thread.Start() wait for a semaphore to signal
25436         that the thread has set up all its local data.  This fixes bug
25437         34323, where Abort() raced the new thread's TLS data.
25438
25439         Also removes the handle_store() call from start_wrapper, because
25440         threads are now always created suspended and there is no longer a
25441         race between the parent and child threads to store the info.
25442
25443 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
25444
25445         * image.c: explain the #- heap issue in a message, hopefully
25446         avoiding FAQs on mono-list.
25447
25448 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25449
25450         * icall.c:
25451         (GetEntryAssembly): if the domain has not invoked
25452         AppDomain.ExecuteAssembly yet, return the assembly of the default
25453         AppDomain.
25454
25455 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
25456
25457         * class.c (mono_ldtoken): make it work in dynamic assemblies.
25458
25459 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
25460
25461         * metadata.c, reflection.c: simple speedup to type hash
25462         and equals code.
25463
25464 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
25465
25466         * image.c, image.h, class.c, assembly.c: move module loading
25467         to MonoImage. When loading metadata, consider alignemnet from
25468         the start of metadata, not from the metadata address in memory.
25469
25470 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
25471
25472         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
25473         AssemblyBuilder objects. Factored out custom attribute creation into
25474         a separate function.
25475         (create_custom_attr): new function to create custom attributes.
25476
25477 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
25478
25479         * Makefile.am: Got tired of typing the full pathname to pedump.
25480         Until there is another option, am installing this.
25481
25482 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
25483
25484         * class.c (class_compute_field_layout): always set field->parent 
25485         (mono_ldtoken): use mono_defaults.fieldhandle_class;
25486
25487 2003-02-11  Dick Porter  <dick@ximian.com>
25488
25489         * threads-types.h:
25490         * monitor.c: Rewrote Monitor, making lock much faster and
25491         Pulse/Wait work as specified.  Also uses much fewer handles, and only
25492         creates them as needed.
25493
25494         * exception.c: Added SynchronizationLockException
25495
25496         * threads.c: Deleted old Monitor implementation.  The new one is
25497         in a new file.
25498
25499 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
25500
25501         * class.c: handled TypedReference type code. Set the correct size for
25502         class data. Setup interface_offsets for interface classes, too.
25503
25504 2003-02-09  Martin Baulig  <martin@ximian.com>
25505
25506         * debug-mono-symfile.h: Reflect latest symbol writer changes.
25507
25508 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
25509
25510         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
25511         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
25512         * object.c: fixed mono_object_get_virtual_method () for interfaces.
25513         * verify.c: check for code that runs after the end of the method.
25514
25515 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
25516
25517         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
25518         "System.Math::Round2".
25519         * sysmath.h: Added Floor, Round and Round2 definitions.
25520         * sysmath.c: Modified certain functions that were not 100% compliant
25521         with MS.NET (math precision) and added the implementation of Floor,
25522         Round and Round2.
25523
25524 2003-02-07  Martin Baulig  <martin@ximian.com>
25525
25526         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
25527
25528 2003-02-07  Martin Baulig  <martin@ximian.com>
25529
25530         * debug-mono-symfile.c: Reflected latest symwriter changes.
25531         (mono_debug_create_mono_symbol_file): Removed.
25532         (mono_debug_open_mono_symbol_file): Take an argument which
25533         specifies whether to create a dynamic symbol file.
25534
25535 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
25536
25537         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
25538
25539 2003-02-05  Martin Baulig  <martin@ximian.com>
25540
25541         * reflection.c (mono_image_build_metadata): Make this public,
25542         protect it against being called multiple times, don't create
25543         resources and don't build the compressed metadata here.
25544         (mono_image_create_pefile): Do this here.
25545
25546         * icall.c
25547         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
25548
25549 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25550
25551         * socket-io.c: fixed bug #36322.
25552
25553 2003-02-06  Piers Haken <piersh@friskit.com>
25554
25555         * appdomain.[ch]:
25556         * class.h:
25557         * debug-mono-symfile.c:
25558         * icall.c:
25559         * loader.c:
25560         * mono-config.c:
25561         * monosn.c:
25562         * reflection.c:
25563         * socket-io.c: warning cleanups
25564
25565 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
25566
25567         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
25568         function. works like remoting invoke, but does a check for the Proxy first.
25569
25570 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
25571
25572         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
25573
25574 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
25575
25576         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
25577         array of pointers.
25578         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
25579         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
25580
25581         * object.c (mono_store_remote_field_new): used by the new jit
25582         instead of mono_store_remote_field
25583         (mono_load_remote_field_new): used by the new jit
25584         instead of mono_load_remote_field
25585
25586 2003-02-05  Patrik Torstensson
25587
25588         * appdomain.c: changed unload to take the domain id instead
25589         of domain
25590         
25591         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
25592
25593
25594 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25595
25596         * appdomain.c: don't look for assemblies in ApplicationBase if
25597         PrivateBinPathProbe is set.
25598
25599 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25600
25601         * object.c: make the first argument in main_args contain the absolute
25602         path to the assembly. Fixes bug #37511.
25603
25604 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25605
25606         * icall.c: get correct UTC offset for countries not using daylight
25607         time saving. Fixes bug #30030.
25608
25609 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25610
25611         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
25612         and 1 are the family).
25613
25614 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
25615
25616         * icall.c (ves_icall_InternalExecute): removed wrong assertion
25617
25618         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
25619
25620 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
25621
25622         * reflection.c: added support for SignatureHelper tokens, which is
25623         needed by the Calli opcode.
25624
25625         * reflection.h: track changes to SignatureHelper class.
25626
25627         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
25628
25629 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25630
25631         * appdomain.c: fixed loading assemblies from PrivateBinPath.
25632
25633 2003-02-03  Patrik Torstensson
25634         * appdomain.[c|h], domain.c : 
25635          - Added support for getting a domain via domain id
25636          - Support for setting and getting domain from System.AppDomain 
25637            (used in cross appdomain channel)
25638          - Added support for get/set for a MonoAppContext on a thread 
25639            (Context class in System.Runtime.Remoting.Contexts),
25640          - Removed hack in Get/SetData and ExecuteAssembly.
25641         
25642         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
25643         the managed world to get control when a proxy is created.
25644
25645         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
25646         
25647 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
25648
25649         * icall.c
25650         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
25651         Populate the codebase field as well.
25652
25653 2003-02-02  Martin Baulig  <martin@ximian.com>
25654
25655         * debug-mono-symfile.c
25656         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
25657         (mono_debug_symfile_add_method): Allow interncalls.
25658
25659 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25660
25661         * icall.c: throw parse exception if strtod fails or the string is empty.
25662
25663 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
25664
25665         * marshal.c: handle object type separately from defined
25666         class types.
25667
25668 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
25669
25670         * marshal.c: handle NATIVE_LPSTR for strings when it's
25671         explicitly specified.
25672
25673 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
25674
25675         * reflection.c, reflection.h, icall.c: setup the reflection
25676         handle cache for ModuleBuilders and AssemblyBuilders.
25677
25678 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
25679
25680         * reflection.c (reflection_methodbuilder_to_mono_method): set
25681         pinvoke flag
25682
25683 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25684
25685         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
25686
25687 2003-01-29  Dick Porter  <dick@ximian.com>
25688
25689         * threads.c: No need for the fake_thread kludge now that Thread
25690         doesn't run a class constructor
25691         
25692 2003-01-29  Dick Porter  <dick@ximian.com>
25693
25694         * threads.c: Use g_direct_hash instead of the rather bogus
25695         g_int_hash
25696
25697 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
25698
25699         * marshal.c (mono_marshal_get_native_wrapper): add check for null
25700         (fix pinvoke12.exe)
25701         (mono_marshal_get_struct_to_ptr): generate valid IL code
25702         (mono_marshal_get_ptr_to_struct): generate valid IL code
25703         (*): correctly set sig->pinvoke, we need to memdup the signature
25704         to do that
25705
25706 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
25707
25708         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
25709         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
25710
25711 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
25712
25713         * profiler.c: provide more callers information.
25714
25715 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
25716
25717         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
25718
25719         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
25720
25721         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
25722
25723 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
25724
25725         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
25726         exception instead of going into an infinite loop on dates which it 
25727         can't yet handle.
25728
25729         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
25730         out-of-range exception if needed.
25731
25732         * class.c (mono_class_setup_vtable): allow a virtual method to provide
25733         an implementation for an interface method and to override an inherited
25734         method at the same time. 
25735         Imagine a scenario when a virtual method is used to override a
25736         virtual abstract method in a parent class, and this same method 
25737         provides an implementation for an method inherited from an interface. 
25738         In this case, the interface resolution code will set im->slot, which 
25739         means that the virtual method override pass will skip this method 
25740         which means a pointer to the abstract method inherited from the parent
25741         will remain in the vtable of this non-abstract class.
25742
25743         * class.c: (mono_class_setup_vtable): continue search for a real 
25744         method if only an abstract method is found.     
25745
25746 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
25747
25748         * reflection.c: add size to encoding for ByValStr and ByValArray
25749         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
25750
25751 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
25752
25753         * class.c (mono_class_setup_vtable): pass the override info as an
25754         argument.
25755
25756         * class.c (mono_class_setup_vtable): set the slot of overriding methods
25757         correctly.
25758         
25759         * reflection.c (ensure_runtime_vtable); add support for method 
25760         overrides.
25761         
25762 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
25763
25764         * reflection.c (resolution_scope_from_image): Hack to work to work with
25765         dynamic assemblies.
25766
25767         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
25768         added a 'force_ref' argument to force this function to allways return 
25769         a TypeRef. This is needed by mono_image_get_memberref_token ().
25770         
25771 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
25772
25773         * reflection.c (mono_image_get_type_info): interfaces really don't have
25774         a parent.
25775
25776         * reflection.c (mono_image_basic_init): fill out missing fields of
25777         image structure.
25778
25779         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
25780         dynamic assemblies. This is required so dynamic assemblies show up in
25781         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
25782         Type::GetType() etc. This is consistent with MS behaviour.
25783
25784         * image.c image.h reflection.c: add newly created classes to the name 
25785         cache so mono_class_get () will find them.      
25786
25787 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
25788
25789         First part of changes to get IKVM.NET running under mono.
25790         
25791         * appdomain.h, appdomain.c: added new function 
25792         mono_domain_try_type_resolve() which will emit TypeResolve events. 
25793         This function will call AppDomain::DoTypeResolve to do the actual work.
25794
25795         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
25796         moved existing code dealing with dynamic tokens to a new function 
25797         called mono_reflection_lookup_dynamic_token (). This function will 
25798         raise TypeResolve events when appropriate. Since reflection.c is not 
25799         part of libmetadata, a new hook function called 
25800         mono_lookup_dynamic_token() is added to class.c which will call this.
25801
25802         * assembly.h assembly.c: make the invoke_load_hook function public,
25803         so it can be called for dynamic assemblies.
25804
25805         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
25806
25807         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
25808         type isn't found.
25809
25810         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
25811         MonoGHashTable, since it contains pointers to objects which the GC 
25812         needs to track.
25813
25814         * assembly.c (search_loaded): remove unused variable.
25815         
25816 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
25817
25818         * object.c: fixed issue exposed by gcc-generated IL programs
25819         that use RVA data for pointers.
25820
25821 2003-01-25  Martin Baulig  <martin@ximian.com>
25822
25823         * threads.c (start_wrapper): Moved the initialization of
25824         `start_func' above the mono_new_thread_init() call to which we
25825         pass it as argument.
25826
25827 2003-01-24  Martin Baulig  <martin@ximian.com>
25828
25829         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
25830         the MonoThread pointer.
25831
25832 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
25833
25834         * icall.c: Rename `PowImpl' to Pow.
25835
25836 2003-01-23  Dick Porter  <dick@ximian.com>
25837
25838         * threads.c (start_wrapper): Create a Thread object if needed, so
25839         the Main() thread can do the class initialisation in a subthread
25840         that has been set up to allow managed code execution.
25841
25842         Pass the thread ID instead of the MonoThread pointer to the thread
25843         start and attach callbacks.  This change is required, because the
25844         jit thread start callback must be called _before_ the Thread
25845         object can be created.
25846         
25847         (mono_thread_init): Removed much object creation code that is no
25848         longer needed.  No managed code is called from here now.
25849
25850         * object.c (mono_runtime_exec_managed_code): Create a subthread
25851         for Main, and call back to the runtime to use it.
25852         Set the exit code when Main exits.
25853
25854         * gc.c: Make sure domain finalisation happens in a subthread.
25855         Re-enable threaded GC, fixing bug 31333 (again).
25856
25857         * environment.c: System.Environment internall calls (so far just
25858         ExitCode is here, the others are still in icall.c)
25859
25860         * appdomain.c (mono_runtime_cleanup): All threads running managed
25861         code should have finished before mono_runtime_cleanup() is
25862         reached, so no need to clean up threads.
25863
25864 2003-01-22  Martin Baulig  <martin@ximian.com>
25865
25866         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
25867         `gpointer func' arguments.      
25868         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
25869         but added `MonoThread *thread' argument.
25870         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
25871
25872         * threads.c (mono_new_thread_init): Added `gpointer func' argument
25873         and pass it to the mono_thread_start_cb callback.
25874         (mono_install_thread_callbacks): New public function to install a
25875         set of callbacks which are set by the debugger.
25876         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
25877
25878 2003-01-22  Martin Baulig  <martin@ximian.com>
25879
25880         * Makefile.am: Install debug-mono-symfile.h.
25881
25882 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
25883
25884         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
25885
25886 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
25887
25888         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
25889         * class.c (mono_ptr_class_get): correctly set access levels of pointers
25890         (mono_array_class_get): correctly set access levels of arrays
25891
25892 2003-01-20      Patrik Torstensson
25893         * image.h (MonoAssemblyName): changed major, minor, build, revision
25894         from signed to unsigned.
25895
25896 2003-01-20  sean kasun <skasun@azstarnet.com>
25897
25898         * reflection.c (load_cattr_value): Now this handles
25899         MONO_TYPE_SZARRAY.  Fixes bug #35629
25900
25901 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
25902
25903         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
25904         integer value
25905
25906 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25907
25908         * decimal.c: fixed bug #26056.
25909
25910 2003-01-17  Martin Baulig  <martin@ximian.com>
25911
25912         * gc.c: Raise an ExecutionEngineException instead of using g_error().
25913
25914 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25915
25916         * exception.[ch]:
25917         (mono_get_exception_type_initialization): new function.
25918
25919         * object.c: throw a TypeInitializationException when an exception is
25920         thrown invoking the class constructor.
25921
25922 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25923
25924         * reflection.c: fixed attribute reading.
25925
25926 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25927
25928         * icall.c:
25929         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
25930         provided, look for the type in the calling assembly and then in
25931         mscorlib; if the assembly name is provided, only try that one.
25932
25933 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
25934
25935         * object.c: register the vtable before there is a chance it's
25936         queried again recursively.
25937
25938 2003-01-13  Duncan Mak  <duncan@ximian.com>
25939
25940         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
25941         gc-internal.h. 
25942         
25943 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
25944
25945         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
25946
25947 2003-01-11  Martin Baulig  <martin@ximian.com>
25948
25949         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
25950         this to 20 for the release.
25951
25952 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
25953
25954         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
25955
25956         * loader.c (mono_method_get_marshal_info): bug fix
25957
25958         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
25959         structures with explicit layout
25960
25961 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
25962
25963         * profiler.c: made the output more readable (and sorted). 
25964         Added caller information for the allocation profiler.
25965
25966 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
25967
25968         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
25969
25970 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25971
25972         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
25973         to get value types.
25974         
25975 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
25976
25977         * object.c, profiler.h, profiler.c, profiler-private.h:
25978         Added object allocation profiler.
25979
25980 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
25981
25982         * reflection.h, reflection.c: handle global methods.
25983         Compress blob entries.
25984
25985 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
25986
25987         * marshal.c: fix compilation.
25988
25989 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
25990
25991         * loader.c (mono_method_get_marshal_info): impl.
25992
25993         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
25994
25995 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25996
25997         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
25998         for reference types.
25999
26000 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
26001
26002         * loader.c: fixed off by one error in loaded parameter names.
26003
26004 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
26005
26006         * marshal.c (mono_marshal_get_icall_wrapper): like
26007         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
26008         instead of a MonoMethod.
26009
26010 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26011
26012         * decimal.c: fixed bug #36537.
26013
26014 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
26015
26016         * marshal.c: throw a missing method exception if a
26017         P/Invoke method is not found.
26018
26019 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
26020
26021         * icall.c: allow a null this for constructors.
26022
26023 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
26024
26025         * icall.c: raise the proper exceptions if the arguments to the
26026         internal Invoke are incorrect.
26027
26028 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
26029
26030         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
26031
26032 2003-01-03  Martin Baulig  <martin@ximian.com>
26033
26034         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
26035
26036 2002-12-31  Martin Baulig  <martin@ximian.com>
26037
26038         * debug-mono-symfile.c: Completely rewrote the type section.
26039         Instead of using individual malloc()ed fields, we use one big
26040         continuous memory area and offsets into this area.
26041         See the comments in the source code for details.
26042
26043 2002-12-30  Martin Baulig  <martin@ximian.com>
26044
26045         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
26046
26047 2002-12-30  Martin Baulig  <martin@ximian.com>
26048
26049         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
26050         line number table in this data blob instead of using an external
26051         pointer.
26052
26053 2002-12-28  Martin Baulig  <martin@ximian.com>
26054
26055         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
26056
26057 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
26058
26059         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
26060         as a boxed return type.
26061
26062 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
26063
26064         * appdomain.c
26065         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
26066         g_build_filename to properly get separators on the filename created.
26067
26068         * object.h: Small change, introduce MonoMarshalByRefObject to
26069         track the layout of that structure in the C# universe as we make
26070         changes there.
26071
26072 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
26073
26074         * object.c: removed assert to allow static fields on interfaces.
26075         * loader.c: a TypeSpec may be used for any type, not just arrays.
26076
26077 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26078
26079         * class.c, class.h: added mono_class_array_element_size ().
26080         Ignore static methods in interfaces.
26081
26082 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26083
26084         * threads.c: fixed the build under cygwin.
26085
26086 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
26087
26088         * reflection.c: handle nullref constants. Allocate keys for
26089         reflection handles with the GC.
26090
26091 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
26092
26093         * threads.c, threads.h: added mono_thread_get_abort_signal()
26094         to get a suitable signal for thread abort.
26095
26096 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
26097
26098         * metadata.c: fix handling of ExportedType table.
26099
26100 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26101
26102         * icall.c: added WriteWindowsDebugString internal call.
26103
26104 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26105
26106         * reflection.h: added fields to match C# implementation.
26107
26108 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26109
26110         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
26111
26112 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
26113
26114         * gc.h, gc-internal.h: Rename header for GC internal calls to
26115         gc-internal.h from gc.h as to not clash with Boehm GC having its
26116         header installed as <gc.h> in outside include paths.
26117         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
26118         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
26119
26120 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26121
26122         * icall.c: assign minor, build and revision in FillName.
26123
26124 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
26125
26126         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
26127         Added support for running code generated by Reflection.Emit.
26128
26129 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26130
26131         * appdomain.c: check for NULL argument in LoadFrom.
26132
26133 2002-12-10  Dick Porter  <dick@ximian.com>
26134
26135         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
26136
26137 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26138
26139         * appdomain.c: fix buglet when building exe file name.  Handle full
26140         assembly name (needed after latest changes to AssemblyName).
26141         * image.c:
26142         (mono_image_close): free some hashtables.
26143
26144 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
26145
26146         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
26147         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
26148         on some systems (redhat 7.3) 
26149
26150 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
26151
26152         * threads.c: delete the critical section of a sync block,
26153         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
26154
26155 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
26156
26157         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
26158
26159 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26160
26161         * appdomain.[ch]: handle the assembly preload event to try loading the
26162         assemblies using the paths we have in the current domain.
26163
26164         * assembly.[ch]: created an assembly preload hook that is called to try
26165         loading the assembly by other means that the ones provided here.
26166
26167         * domain.c: initialize the domain search path.
26168
26169         From now on, assemblies (TODO: except corlib and System) are loaded
26170         according to these rules when using mono_assembly_load ():
26171
26172                 1. It tries to load the assembly from the ApplicationBase
26173                 of the current domain appending .dll and .exe (TODO: have to
26174                 try loading from name/name.dll and name/name.exe).
26175
26176                 2. It tries the search path specified in PrivateBinPath for the
26177                 current domain (if any).
26178
26179                 3. Previous behavior.
26180
26181 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
26182
26183         * icall.c: implemented GetInterfaceMap() related icall.
26184         * domain.c, loader.h: load MethodInfo in mono_defaults.
26185
26186 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
26187
26188         * gc.c: disable the finalizer thread for now, untill all the issues
26189         with it are resolved.
26190
26191 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26192
26193         * string-icalls.c: handle embedded nulls in string ctor when the
26194         length is specified.
26195
26196 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26197
26198         * class.c: look for explicit interface implementation in parent
26199         classes, too.
26200
26201 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
26202
26203         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
26204
26205 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
26206
26207         * gc.c: protect handles with a critical section.
26208
26209 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26210
26211         * icall.c:
26212         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
26213         parameters. If no assembly specified, try getting the type from all
26214         the assemblies in the current domain, else, load the assembly and get
26215         the type from it.
26216
26217 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26218
26219         * marshal.c: applied patch from Aleksey Demakov that fixes
26220         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
26221
26222 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26223
26224         * icall.c: fixed get_location.
26225
26226 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
26227
26228         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
26229         declarations to make it work with older gcc. 
26230
26231         * loader.c (mono_get_method): set signature->pinvoke for native calls
26232
26233 2002-11-20  Dick Porter  <dick@ximian.com>
26234
26235         * threads.c (mono_thread_init): Set the main thread's handle
26236
26237 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
26238
26239         * gc.c: allow compilation without GC support. Changed to match the
26240         mono coding style.
26241
26242 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26243
26244         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
26245
26246 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
26247
26248         * reflection.c: set a public key token on the core assemblies.
26249
26250 2002-11-18  Dick Porter  <dick@ximian.com>
26251
26252         * threads.c: Split out some thread initialisation so that other
26253         files can set the start callback function.
26254
26255         * gc.c: Run finalisers in a separate thread, to avoid stack
26256         overflow.  Fixes bug 31333.
26257
26258         * appdomain.c: Set up GC finalisation thread.
26259
26260         * reflection.c: 
26261         * object.c: 
26262         * domain.c: Use gc.h macros for GC_malloc
26263         
26264 2002-11-15  Dick Porter  <dick@ximian.com>
26265
26266         * threadpool.c: 
26267         * threads.c:
26268         * appdomain.c: Removed mono_runtime_init_with_attach(),
26269         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
26270         merging the extra parameter with the existing function.  Removed
26271         unneeded code in mono_thread_attach().
26272
26273 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
26274
26275         * image.c (mono_image_loaded_by_guid): a method to get loaded
26276         images by guid. 
26277         (load_metadata_ptrs): we store the guid as string.
26278
26279 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
26280
26281         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
26282
26283         * metadata.c (mono_guid_to_string): imported method form Zoltan
26284         Varga (slightly modified)
26285
26286         * assembly.c (mono_assembly_open): load precompiled code
26287
26288         * loader.h (MonoMethod): we store the method token for use in the
26289         aot compiler. 
26290
26291 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26292
26293         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
26294         the hook function called when an assembly is loaded.
26295         
26296         * domain.c: Modified file.
26297         (mono_domain_assembly_load): removed hash table insertion of assemblies.
26298
26299         Fixes bug #33196.
26300
26301 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
26302
26303         * reflection.c: Map PEFileKind to the value expected by the WinNT
26304         image loader. 
26305
26306 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26307
26308         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
26309         Read until the buffer is filled completely.
26310
26311 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26312
26313         * icall.c: implemented MonoType.InternalGetEvent ().
26314
26315 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26316
26317         * appdomain.c: implemented InitAppDomainSetup. Delayed
26318         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
26319         the entry_assembly.
26320
26321         * assembly.c: base_dir is now an absolute path ending with
26322         G_DIR_SEPARATOR.
26323
26324         * icall.c: modified get_location according to the above changes.
26325
26326         * object.c: init AppDomain.SetupInformation for the default domain after
26327         we have the entry assembly.
26328
26329         * domain.c: when unloading a domain, setup = NULL.
26330
26331 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
26332
26333         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
26334
26335 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
26336
26337         * object.h, object.c: introduced mono_object_get_virtual_method ()
26338         to lookup the method invoked on an object when a callvirt is done on
26339         a method.
26340         * icall.c: make MethodInfo::Invoke() always do a virtual call.
26341
26342 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26343
26344         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
26345         current domain when loaded an assembly and failed to load it.
26346
26347         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
26348
26349 2002-10-31  Dick Porter  <dick@ximian.com>
26350
26351         * icall.c: 
26352         * file-io.h: 
26353         * file-io.c: Return the error status in a parameter, as the
26354         GetLastError() value has long since been blown away if we try and
26355         look it up in a subsequent internal call invocation.  Delete the
26356         GetLastError() internal call, because it's useless.
26357
26358 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
26359
26360         * class.[ch]: added cast_class to fix bug 29517
26361
26362 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
26363
26364         * marshal.c: create valid IL code in the filter clause:
26365         the new JIT is less forgiving:-)
26366
26367 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26368
26369         * icall.c: removed get_property internal call.
26370
26371 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
26372
26373         * appdomain.h domain.c: Added an ID to appdomains.
26374         
26375         * threads.c threads.h icall.c: Implement icall
26376         Thread:GetDomainID(), and remove unused icall 
26377         CurrentThreadDomain_internal.
26378
26379 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26380
26381         * icall.c: Don't recurse through the base types in GetConstructor.
26382         Fixes bug #32063. 
26383
26384 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
26385
26386         * mempool.h, mempool.c: added mono_mempool_empty() and
26387         mono_mempool_stats().
26388
26389 2002-10-23  Dick Porter  <dick@ximian.com>
26390
26391         * file-io.c: 
26392         * file-io.h: 
26393         * icall.c: Added MonoIO.GetFileType internal call
26394
26395 2002-10-17  Dick Porter  <dick@ximian.com>
26396
26397         * appdomain.c (mono_runtime_cleanup): Don't signal the async
26398         delegate semaphore before waiting for all threads to finish,
26399         because new threads can also call async delegates.  Fixes bug
26400         32004.
26401
26402         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
26403         of 3 seconds, in case another async job is queued.  (This part is
26404         needed because the bug fix reintroduced the 3s exit lag.)  This
26405         makes the mono_runtime_shutdown flag superfluous.
26406
26407 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
26408
26409         * reflection.c: include ehader size in method section headers.
26410         Really check for suplicated modules entries.
26411
26412 2002-10-17  Martin Baulig  <martin@gnome.org>
26413
26414         * debug-mono-symfile.c: Added back support for locals.
26415
26416 2002-10-14  Martin Baulig  <martin@gnome.org>
26417
26418         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
26419         MONO_TYPE_VOID.
26420
26421 2002-10-14  Martin Baulig  <martin@gnome.org>
26422
26423         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
26424         mono_class_get() instead of looking in the class cache. 
26425
26426 2002-10-13  Martin Baulig  <martin@gnome.org>
26427
26428         * debug-mono-symfile.c: Set version number to 28, include the
26429         signature in method names.
26430
26431 2002-10-13  Martin Baulig  <martin@gnome.org>
26432
26433         * debug-mono-symfile.h: Set version number to 27.
26434
26435 2002-10-11  Martin Baulig  <martin@gnome.org>
26436
26437         * gc.c: Don't register/unregister NULL pointers as disappearing links.
26438
26439 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26440
26441         * metadata.c, metadata.h: added helper function to allocate signatures.
26442
26443 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26444
26445         * icall.c: added internal call to get the location of machine.config.
26446
26447 2002-10-08  Martin Baulig  <martin@gnome.org>
26448
26449         * debug-mono-symfile.c: Ignore classes with a pending init for the
26450         moment.
26451
26452 2002-10-03  Dick Porter  <dick@ximian.com>
26453
26454         * threads.c: Freebsd pthread_t is a pointer
26455
26456 2002-10-03  Dick Porter  <dick@ximian.com>
26457
26458         * socket-io.c: Implemented GetHostName_internal
26459
26460 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26461
26462         * mono-config.c:
26463         (mono_config_parse_file): don't leak the text.
26464
26465 2002-10-02  Martin Baulig  <martin@gnome.org>
26466
26467         * debug-mono-symfile.c: Added support for methods.
26468
26469 2002-10-01  Martin Baulig  <martin@gnome.org>
26470
26471         * debug-mono-symfile.c: Don't emit methods and line numbers for
26472         the dynamic symbol file, just write the type table.  We can easily
26473         have an external helper program which creates a symbol file for an
26474         IL file.        
26475
26476 2002-10-01  Dick Porter  <dick@ximian.com>
26477
26478         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
26479         Only add the handle to the cleanup array when we're about to
26480         launch the thread.  Bug 31425 deadlocked when the test was run on
26481         mono under w32.
26482
26483 2002-10-01  Martin Baulig  <martin@gnome.org>
26484
26485         * debug-mono-symfile.c: Added support for properties.
26486
26487 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
26488
26489         * reflection.c: unaligned store fix from Mark Crichton
26490         <crichton@gimp.org>.
26491
26492 2002-09-27  Martin Baulig  <martin@gnome.org>
26493
26494         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
26495         New interncall.
26496
26497 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
26498
26499         * assembly.h, assembly.c: use a sane API to hook into the assembly
26500         loading process instead of a useless special-purpouse hack
26501         (ngen needs a hook, too, for example).
26502
26503 2002-09-27  Dick Porter  <dick@ximian.com>
26504
26505         * threads.c (mono_thread_init): Call GetCurrentProcess() so
26506         io-layer can set up some process handle info.  Not needed on w32,
26507         but doesn't hurt either.
26508
26509         * process.c: Pass the program name in the second parameter to
26510         CreateProcess, so the path is searched.  Include the working
26511         directory. Implemented process name, process enumeration, and some
26512         process detail internal calls.
26513         
26514         * icall.c: Added internal calls for process lookup, and some
26515         process details
26516
26517 2002-09-26  Martin Baulig  <martin@gnome.org>
26518
26519         * assembly.c (mono_install_open_assembly_hook): New global
26520         function to install a function to be invoked each time a new
26521         assembly is loaded.
26522         (mono_assembly_open): Run this callback function if set.
26523
26524         * debug-mono-symfile.c: Put back line numbers for the dynamic
26525         symbol file and also record the .il file as source file.  This
26526         allows us to install the temporary symbol file as `file.dbg' just
26527         like a compiler-generated one.
26528
26529 2002-09-26  Nick Zigarovich <nick@chemlab.org>
26530
26531         * Corrected typo in gc.c (BOHEM vs BOEHM).
26532
26533 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26534
26535         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
26536         GetProperties. Also avoid calling g_slist_length in GetProperties and
26537         GetMethods.
26538
26539 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
26540
26541         * reflection.c: avoid unaligned stores (bug spotted by
26542         Mark Crichton  <crichton@gimp.org>).
26543
26544 2002-09-25  Martin Baulig  <martin@gnome.org>
26545
26546         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
26547         instead of guint64 for addresses and added prologue/epilogue info.
26548
26549 2002-09-25  Martin Baulig  <martin@gnome.org>
26550
26551         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
26552         store line number info.  For the dynamic symbol file, we only need
26553         to provide the JIT generated dynamic line number info for the dynamic
26554         symbol file.
26555
26556 2002-09-25  Martin Baulig  <martin@gnome.org>
26557
26558         * debug-mono-symfile.h: Incremented version number.
26559
26560 2002-09-24  Martin Baulig  <martin@gnome.org>
26561
26562         * class.c (mono_debugger_class_init_func): New global function
26563         pointer variable.
26564         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
26565         call it.
26566
26567         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
26568         function.  This is called via the mono_debugger_class_init_func
26569         hook to add all types to the dynamic type table.
26570         (ves_icall_MonoDebugger_GetType): New interncall to get a class
26571         from its metadata token.
26572
26573         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
26574         New interncall for the debugger.
26575
26576 2002-09-24  Nick Drochak <ndrochak@gol.com>
26577
26578         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
26579         before using it in case it is null.
26580         
26581 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
26582
26583         * metadata.c: allow custom modifiers in local var signatures
26584         (bug spotted by Zoltan Varga).
26585
26586 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
26587
26588         * class.c: deal with the <Module> class that may have a NULL vtable.
26589         Eliminate warnings.
26590
26591 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
26592
26593         * image.c, image.h: more strong name helpers.
26594         * monosn.c: more work: convert pem keys to cryptoapi format.
26595
26596 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
26597
26598         * string-icalls.c: speedup IndexOf.
26599
26600 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
26601
26602         * icall.c: updates from Zoltan.2.Varga@nokia.com.
26603
26604 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
26605
26606         * icall.c: cleanup: use mono_object_domain ().
26607
26608 2002-09-23  Martin Baulig  <martin@gnome.org>
26609
26610         * debug-mono-symfile.c: Improved type support.
26611
26612 2002-09-22  Martin Baulig  <martin@gnome.org>
26613
26614         * debug-mono-symfile.c: Added support for reference types and strings.
26615
26616 2002-09-22  Martin Baulig  <martin@gnome.org>
26617
26618         * debug-mono-symfile.c: Started to work on the type table.
26619
26620 2002-09-21  Martin Baulig  <martin@gnome.org>
26621
26622         * debug-mono-symfile.c: Largely reworked the symbol table format.
26623         The symbol table is now incrementally updated each time a new
26624         method is added.  We're now also using our own magic and version
26625         so that you don't need to recompile all your classes if the
26626         dynamic table changes.
26627         (mono_debug_update_mono_symbol_file): Removed.
26628         (mono_debug_symfile_add_method): New function to add a method.
26629
26630 2002-09-21  Martin Baulig  <martin@gnome.org>
26631
26632         * icall.c
26633         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
26634         New interncall.
26635
26636         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
26637         New interncall to get a method from its metadata token.
26638
26639 2002-09-21  Martin Baulig  <martin@gnome.org>
26640
26641         * debug-mono-symfile.c: Create type table.
26642
26643 2002-09-20  Martin Baulig  <martin@gnome.org>
26644
26645         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
26646
26647 2002-09-20  Martin Baulig  <martin@gnome.org>
26648
26649         * debug-mono-symfile.c: Provide information about params and locals.
26650
26651 2002-09-20  Martin Baulig  <martin@gnome.org>
26652
26653         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
26654         New interncall.
26655
26656         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
26657         interncall to get a method from its metadata token.
26658
26659 2002-09-20  Martin Baulig  <martin@gnome.org>
26660
26661         * debug-mono-symfile.c: Added a few checks for method->header
26662         being non-NULL.  This should never happen, but for the moment
26663         let's use a g_warning() rather than a g_assert().
26664
26665 2002-09-19  Mark Crichton  <crichton@gimp.org>
26666
26667         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
26668         even if support for it isn't present.  Added an #ifdef to fix this.
26669
26670         * socket-io.c: Added checks back for Solaris support.
26671
26672 2002-09-19  Martin Baulig  <martin@gnome.org>
26673
26674         * debug-mono-symfile.c (read_string, write_string): Reflect latest
26675         changes in the symbol file format.
26676
26677 2002-09-18  Martin Baulig  <martin@gnome.org>
26678
26679         * debug-mono-symfile.c: Set version number to 21.
26680
26681 2002-09-18  Dick Porter  <dick@ximian.com>
26682
26683         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
26684         on netbsd.  Fixes bug 30051.
26685
26686 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26687
26688         * reflection.c:
26689         (set_version_from_string): little fix.
26690
26691 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
26692
26693         * monosn.c, Makefile.am: added strong name utility.
26694         * reflection.h, reflection.c: implemented delayed signing,
26695         locale, version and hash id assembly attributes.
26696
26697 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
26698
26699         * loader.c, metadata.c: load param attributes in signatures.
26700
26701 2002-09-16  Martin Baulig  <martin@gnome.org>
26702
26703         * debug-mono-symfile.c: Added string table with all method names.
26704
26705 2002-09-14  Martin Baulig  <martin@gnome.org>
26706
26707         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
26708         fast method lookup.
26709
26710 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
26711
26712         * reflection.c: record the public key token of referenced assemblies.
26713
26714 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
26715
26716         * image.c, image.h: added functions to get the strong name and the
26717         public key of an assembly.
26718         * pedump.c: use them.
26719
26720 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
26721
26722         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
26723
26724 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
26725
26726         * marshal.c (mono_marshal_get_managed_wrapper): Added
26727         MONO_TYPE_BOOLEAN 
26728
26729 2002-09-11  Martin Baulig  <martin@gnome.org>
26730
26731         * gc.c: Call GC_unregister_disappearing_link() on all links when
26732         finalizing them, this is necessary to aviod a crash in boehm's
26733         finalize handler.
26734
26735 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
26736
26737         * gc.c: handle GetTarget for finalized objects spotted and fixed by
26738         nick@chemlab.org.
26739
26740 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
26741
26742         * icall.c: implemented MonoType::Module.
26743         * reflection.c, reflection.h: mono_module_get_object () from
26744         Tomi Pakarinen <tomi.pakarinen@welho.com>.
26745
26746 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
26747
26748         * icall.c: ignore overridden methods in GetMethods ().
26749         Fix for FieldInfo::SetValue().
26750         * object.c: handle float/double in runtime invoke.
26751
26752 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26753
26754         * object.c: allow a constructor to be called again on an object.
26755
26756 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
26757
26758         * class.h, class.c: move field layout code to it's own function and
26759         export it. Get an interface id earlier. Move fields in MonoClass
26760         so they are more cache friendly and align the bitfields.
26761         * loader.c: temporary handle get_param_names() for a runtime method.
26762         * reflection.c, reflection.h: more code to handle runtime creation of
26763         types.
26764
26765 2002-09-09  Martin Baulig  <martin@gnome.org>
26766
26767         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
26768         signature with the pinvoke field being set for the actual call.
26769
26770 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
26771
26772         * icall.c: removed some unused icalls. Start of map of glib charsets
26773         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
26774
26775 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
26776
26777         * debug-helpers.c: break infinite loop (found and fixed by
26778         Holger Arnold <harnold@gmx.de>).
26779
26780 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
26781
26782         * icall.c: target may be null in create_delegate.
26783
26784 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
26785
26786         * marshal.c: handle a boolean return type.
26787
26788 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
26789
26790         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
26791
26792 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
26793
26794         * gc.c: fix weakreferences.
26795
26796 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
26797
26798         * icall.c: added icall to get default codepage.
26799
26800 2002-09-03  Dick Porter  <dick@ximian.com>
26801
26802         * threads.h: 
26803         * threads.c: Use MonoThread instead of MonoObject where
26804         apropriate.
26805
26806         Store running thread objects in a hash table, so that we have all
26807         the info to hand when waiting for them to finish
26808         (means we don't need OpenThread() any more, so mingw builds should
26809         be fully functional again.)
26810
26811         * verify.c:
26812         * object.h: Added thread ID to MonoThread
26813
26814 2002-09-03  Martin Baulig  <martin@gnome.org>
26815
26816         * icall.c (System.Reflection.Assembly::get_location): New interncall.
26817
26818 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26819
26820         * icall.c: fixed leak in get_temp_path. Thanks lupus.
26821
26822 2002-09-03  Martin Baulig  <martin@gnome.org>
26823
26824         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
26825         argument to store the end address of the disassembled instruction.
26826
26827         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
26828         here from debug-symfile.h.
26829         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
26830         JIT into this struct.
26831         (MonoSymbolFile): Added `char *image_file' field.
26832         (MonoDebugGetMethodFunc): Removed.
26833         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
26834         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
26835         (mono_debug_find_method): New method.
26836
26837         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
26838         create a full symbol file.
26839         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
26840         and static symbol files.
26841         (mono_debug_find_method): The symbol file keeps an internal method hash,
26842         call this to get a MonoDebugMethodInfo from a MonoMethod.
26843
26844         * debug-symfile.[ch]: Removed.
26845
26846 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
26847
26848         * image.c (do_mono_image_open): Remove linker version check.
26849
26850 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
26851
26852         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
26853         wrappers for instance methods.
26854         
26855 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26856
26857         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
26858
26859 2002-08-28  Dick Porter  <dick@ximian.com>
26860
26861         * Makefile.am: Export HOST_CC for w32 builds
26862
26863 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
26864
26865         * file-io.c process.c: MonoString are null terminated, no
26866         need for mono_string_to_utf16() anymore.
26867
26868 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
26869
26870         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
26871
26872 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
26873
26874         * icall.c, reflection.h: speedup System.MonoType.
26875
26876 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
26877
26878         * reflection.c: allow null as the value of a string argument in
26879         custom attributes constructors.
26880
26881 2002-08-27  Martin Baulig  <martin@gnome.org>
26882
26883         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
26884         `trampoline_address' field.
26885
26886 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
26887
26888         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
26889         check (fixes bug #29486) 
26890
26891 2002-08-27  Martin Baulig  <martin@gnome.org>
26892
26893         * debug-mono-symfile.c: Changed the file format in a way that allows us
26894         open it read-only and to use a specially malloced area for all the
26895         dynamic data.  We can now also generate a symbol file on-the-fly if we're
26896         debugging IL code and there is no MCS generated symbol file for it.
26897
26898 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
26899
26900         * object.c: added a define for a good string and array
26901         creation speedup (not enabled by default because we need to deal with
26902         the synch stuff).
26903
26904 2002-08-26  Martin Baulig  <martin@gnome.org>
26905
26906         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
26907         function to create a dynamic symbol file.  This is used by the
26908         debugger to create a symbol file for IL code on-the-fly.
26909
26910 2002-08-26  Martin Baulig  <martin@gnome.org>
26911
26912         * loader.c (mono_lookup_pinvoke_call): Include the error message
26913         from g_module_error() in the error message.
26914
26915 2002-08-24  Martin Baulig  <martin@gnome.org>
26916
26917         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
26918         function to update the symbol file.  The symbol file is mmap()ed
26919         writable, but private.  This allows us to install the symbol file
26920         together with the assembly.
26921
26922 2002-08-24  Martin Baulig  <martin@gnome.org>
26923
26924         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
26925         but they can read the new symbol file format which mcs is now creating.
26926
26927         * debug-symfile.c (mono_debug_find_source_location): Moved to
26928         debug-mono-symfile.c; this is now operating on the new symbol file.
26929
26930 2002-08-23  Martin Baulig  <martin@gnome.org>
26931
26932         * debug-helpers.c (mono_method_desc_from_method): New function to get
26933         a MonoMethodDesc from a MonoMethod.
26934
26935 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
26936
26937         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
26938         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
26939
26940 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
26941
26942         * string-icalls.[ch]: make helper methods static.
26943
26944 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26945
26946         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
26947         types to it and to SetValueInternal.
26948
26949         * object.c: Moved handle_enum label to its proper place. This was the
26950         f... bug! ;-)
26951
26952         This time i compiled mcs and gtk-sharp and they both work.
26953
26954 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26955
26956         * icall.c: reverted partially my previous patch until 
26957         object.c:set_value handles enums correcly.
26958
26959 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26960
26961         * icall.c:
26962         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
26963         (ves_icall_System_Environment_get_MachineName): removed warning when
26964         compiling under cygwin.
26965
26966 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
26967
26968         * object.c: fixed field_get_value() for reference types.
26969
26970 2002-08-22  Dick Porter  <dick@ximian.com>
26971
26972         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
26973         Don't free a buffer while it's still needed.  Patch from Jonathan
26974         Liger <Jonathan.liger@wanadoo.fr>
26975
26976 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
26977
26978         * icall.c (ves_icall_System_Environment_get_Platform): Add new
26979         internal call.
26980
26981 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
26982
26983         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
26984         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
26985
26986         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
26987         we call unmanaged code which throws exceptions.
26988
26989 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
26990
26991         * appdomain.h: added per-domain entry_assembly.
26992         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
26993         arguments.
26994         * icall.c: Assembly::GetEntryAssembly icall.
26995         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
26996         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
26997
26998 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
26999
27000         * appdomain.h, gc.c: added mono_domain_finalize ().
27001
27002 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27003
27004         * object.c:
27005         (mono_print_unhandled_exception): changed g_warning by g_printerr
27006         because g_log has a 1024 characters limit (yeah, i got a big stack
27007         trace). Don't print exception name, that should be in ToString 
27008         returned string.
27009
27010 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27011
27012         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
27013         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
27014
27015 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27016
27017         * object.c:
27018         (mono_print_unhandled_exception): after previous commit, i realized
27019         that MS calls ToString on the exception. I changed this function to
27020         do that. This way we get stack_trace for free.
27021
27022 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27023
27024         * object.c:
27025         (mono_print_unhandled_exception): invoke Message property instead of
27026         getting 'message' field from Exception. Don't allocate memory for
27027         'trace' and 'message' if not needed.
27028
27029 2002-08-18  Dick Porter  <dick@ximian.com>
27030
27031         * unicode.c: Fix asserts to match Encoder.cs checks
27032
27033 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
27034
27035         * marshal.c: fix unaligned store issue and a few wrong
27036         opcode argument types.
27037
27038 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27039
27040         * icall.c: added GetUninitializedObjectInternal internal call.
27041
27042 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
27043
27044         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
27045         to the right domain.
27046
27047 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
27048
27049         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
27050
27051         * class.c (class_compute_field_layout): set blittable to false for Strings
27052
27053         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
27054
27055 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
27056
27057         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
27058         first chunk of code to create types at runtime. Code to
27059         handle ReflectedType/DeclaringType. Make reflection handles
27060         domain specific.
27061
27062 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
27063
27064         * class.c: set correct name in arrays.
27065
27066 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
27067
27068         * appdomain.c (mono_domain_transfer_object): make it work with
27069         valuetypes. bug fixes.
27070
27071 2002-08-12  Dick Porter  <dick@ximian.com>
27072
27073         * object.h: Rename some parameters to avoid c++ keywords (Patch
27074         from Joseph Wenninger <kde@jowenn.at>)
27075
27076 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
27077
27078         * icall.c: added icall to implement Assembly.GetFile*.
27079
27080 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
27081
27082         * reflection.h, reflection.c: code to embed managed resources.
27083
27084 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
27085
27086         * class.c: move all the type size stuff into
27087         class_compute_field_layout().
27088
27089 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
27090
27091         * class.c: ensure enums have always the correct instance size.
27092         * unicode.c: remove wrong assert.
27093
27094 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
27095
27096         * assembly.c: fix mem corruption issue.
27097         * image.h, image.c: added mono_image_get_resource () to access
27098         managed resources.
27099         * icall.c: implemented Assembly.EntryPoint property and some
27100         Managed Resources related internalcalls.
27101
27102
27103 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
27104
27105         * image.c, image.h: impemented mono_image_get_entry_point ().
27106         * appdomain.c: use mono_image_get_entry_point.
27107
27108 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
27109
27110         * reflection.c: support the object type argument when loading
27111         custom attributes.
27112
27113 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
27114
27115         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
27116         String as return type.
27117
27118 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
27119
27120         * reflection.c: fix encoding of named args for custom attrs to match
27121         the ms implementation. Read them back when instantiating custom
27122         attributes.
27123
27124 2002-08-02  Radek Doulik  <rodo@ximian.com>
27125
27126         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
27127         by Dietmar as quick fix
27128         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
27129         16 as stack size, used on more places as quick fix before Dietmar
27130         will fix it properly
27131
27132 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
27133
27134         * object.h, object.c: added accessors for fields and properties.
27135
27136 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
27137
27138         * class.c, class.h: made mono_class_get_field_from_name ()
27139         loop on parent types.
27140         Added mono_class_get_property_from_name ().
27141
27142 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
27143
27144         * class.c, class.h: move the code to setup the type vtable in its own
27145         function so that it can be reused also for types created at runtime.
27146         Eliminate the "class" identifier from the header file.
27147         * reflection.c: setup the vtable for enums so that we can create
27148         objects for use in SetConstant ().
27149
27150 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
27151
27152         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
27153         instead of the delegate itself as this pointer (bug #28383)
27154
27155 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
27156
27157         * marshal.c (mono_marshal_get_managed_wrapper): added return type
27158         conversions.
27159
27160 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27161
27162         * loader.c: don't set the pinvoke bit on icalls.
27163
27164 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
27165
27166         * debug-helpers.c (mono_method_full_name): only print a number to
27167         indicate wrapper type (so that the output is more readable in traces).
27168
27169 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
27170
27171         * class.c (mono_class_init): include method override patch from Paolo
27172
27173 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
27174
27175         * icall.c: fixed GetTypeCode().
27176
27177 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
27178
27179         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
27180         use real delegate invoke function to make it work with multicast
27181         delegates (fix bug# 28291).
27182
27183 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
27184
27185         * object.c: load constant strings.
27186
27187 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27188
27189         * reflection.c: no magic numbers.
27190         * tabledefs.h: security action enum.
27191
27192 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
27193
27194         * assembly.c: fix possible memory corruption.
27195
27196 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
27197
27198         * reflection.h, reflection.c: added support for linking resources.
27199         * verify.c: check we have an updated corlib.
27200
27201 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
27202
27203         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
27204         string arrays.
27205         (mono_marshal_string_array): null terminate unmanaged string arrays.
27206         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
27207
27208 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27209
27210         * icall.c: Type.GetType () can now return also types from the
27211         calling assembly.
27212
27213 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
27214
27215         * loader.h, loader.c: stack walking support.
27216         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
27217         GetCallingAssembly.
27218
27219 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
27220
27221         * marshal.c: added optimisations for blittable types 
27222
27223         * class.c (mono_array_class_get): do not set blittable attribute on arrays
27224         (mono_class_setup_mono_type): set blittable attribute for single
27225         and double.
27226
27227         * marshal.c (mono_string_utf8_to_builder): impl.
27228         (mono_string_builder_to_utf8): impl.
27229         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
27230
27231 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
27232
27233         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
27234         (mono_marshal_get_managed_wrapper): impl. byref types
27235
27236 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27237
27238         * icall.c:
27239         (search_method): don't display debug message. 
27240
27241 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
27242
27243         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
27244
27245 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
27246
27247         * appdomain.c: set the missing filename when throwing exception.
27248
27249 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
27250
27251         * metadata.c (mono_type_size): code cleanup
27252         (mono_type_stack_size): removed some test code
27253
27254 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
27255
27256         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
27257         mono_get_exception_file_not_found now.
27258
27259         * exception.c (mono_exception_from_name_two_strings): New version
27260         that will call a constructor with two string arguments. 
27261         (mono_get_exception_file_not_found): New helper routine, used to
27262         report file-not-found errors.
27263
27264 2002-07-20  Dick Porter  <dick@ximian.com>
27265
27266         * process.h:
27267         * process.c: Pass file handles to CreateProcess
27268         
27269         * icall.c:
27270         * file-io.h:
27271         * file-io.c: Implemented CreatePipe
27272
27273 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
27274
27275         * metadata.c (mono_get_param_info): set alignment for value types
27276
27277 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
27278
27279         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
27280         Constify mono_domain_assembly_open().
27281         * loader.c: handle null namespace in icalls.
27282
27283 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
27284
27285         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
27286         (emit_str_to_ptr_conv): marshal object as structs
27287
27288         * metadata.c (mono_type_to_unmanaged): marshal object as structs
27289
27290         * marshal.c (mono_marshal_get_runtime_invoke): support value types
27291
27292 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
27293
27294         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
27295         (mono_marshal_get_native_wrapper): we an now return value types
27296
27297 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27298
27299         * verify.c: more checks implemented.
27300
27301 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
27302
27303         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
27304         (fix bug #27695)
27305         (mono_marshal_get_native_wrapper): allow byref arguments
27306         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
27307         impl. PtrToStringXXX methods
27308         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
27309         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
27310         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
27311         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
27312         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
27313
27314 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
27315
27316         * reflection.c: fix buglet in parsing an assembly name.
27317
27318 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
27319
27320         * marshal.c (emit_ptr_to_str_conv): first impl.
27321
27322 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
27323
27324         * object.c, class.h: cache the vtable in the class as suggested by
27325         vargaz@freemail.hu (Zoltan Varga).
27326
27327 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
27328
27329         * class.h, loader.c: added mono_field_from_token().
27330         * verify.c: first cut of type checking code.
27331
27332 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
27333
27334         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
27335
27336 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
27337
27338         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
27339         (fix bug #27782)
27340         (mono_marshal_get_remoting_invoke): impl.
27341         (mono_delegate_begin_invoke): impl.
27342         (mono_mb_emit_save_args): impl.
27343         (mono_delegate_end_invoke): impl.
27344         (mono_marshal_get_delegate_begin_invoke):
27345         (mono_marshal_get_delegate_end_invoke):
27346         (mono_marshal_get_delegate_invoke): generate a special name for
27347         those methods (including the signature) and associate them whith
27348         the delegate class. 
27349
27350 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
27351
27352         * reflection.[ch]: 
27353         (mono_reflection_type_from_name): now it has a MonoImage parameter
27354         which is used as the default image to search the type in. If the image
27355         is NULL or getting the type from it fails, it defaults to corlib.
27356
27357         * icall.c: changed 1 call to mono_reflection_type_from_name to match
27358         new parameter.
27359
27360 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
27361
27362         * reflection.c: update the parameter table index.
27363
27364 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
27365
27366         * domain.c: don't include the mark byte in the string hash.
27367
27368 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
27369
27370         * icall.cs: icall for Type.GetTypeCode ().
27371         * verify: a couple of fixes and disabled local initialization checks.
27372
27373 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
27374
27375         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
27376
27377         * debug-helpers.c (mono_method_full_name): print the type of the
27378         runtime wrapper
27379
27380         * metadata.c (mono_signature_hash): a hash function for signatures
27381         (mono_signature_hash): better hash algorithm
27382
27383         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
27384
27385         * debug-helpers.c (mono_method_full_name): this can now generate
27386         method names with signatures
27387
27388         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
27389         method dont have this pointers.
27390
27391 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
27392
27393         * reflection.c: fixup typebuilder tokens.
27394         * image.c: fix buglet.
27395         * marshal.h: remove whitespace.
27396         * metadata.h, metadata.c: reinstate code that was removed.
27397         * verify.c: handle catch directives and fix another couple of bugs.
27398
27399 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
27400
27401         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
27402         (mono_marshal_get_native_wrapper): make it comp. with the old code
27403         (mono_marshal_get_native_wrapper): support boolean
27404         (mono_marshal_get_managed_wrapper): support more types
27405
27406 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
27407
27408         * class.c (class_compute_field_layout): compute class->blittable attribute.
27409
27410 2002-07-09  Dick Porter  <dick@ximian.com>
27411
27412         * threads.c: Make the thread cleaning up cope with threads that
27413         call ExitThread()
27414
27415 2002-07-08  Radek Doulik  <rodo@ximian.com>
27416
27417         * reflection.c (method_encode_code): use non-translated values to
27418         compute finally_start, this fixes exception handling on ppc, yay!
27419
27420         * decimal.h (struct signscale): fix endianess
27421
27422 2002-07-07  Radek Doulik  <rodo@ximian.com>
27423
27424         * reflection.c: swap box_val and not val
27425
27426 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
27427
27428         * reflection.c, reflection.h: handle full assembly info in type name.
27429         Handle Type arguments when loading custom attributes.
27430         * icall.c: updated to use new mono_reflection_type_from_name () method.
27431
27432 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27433
27434         * loader.c:
27435         (method_from_memberref): also print assembly name when method not found.
27436
27437 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27438
27439         * icall.c:
27440         (ves_icall_TypeGetProperties): fixed bug #27473. 
27441
27442 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27443
27444         * reflection.c: display image name and token when cannot find the
27445         .ctor for an attribute.
27446
27447 2002-07-05  Martin Baulig  <martin@gnome.org>
27448
27449         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
27450
27451 2002-07-04  Dick Porter  <dick@ximian.com>
27452
27453         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
27454         compile on mingw.  This will cause mingw builds to not wait for
27455         subthreads to terminate after the main thread does.  I've lodged a
27456         bug with the mingw developers for them to wrap OpenThread().
27457
27458 2002-07-03  Dick Porter  <dick@ximian.com>
27459
27460         * threads.c: Store thread IDs instead of handles, because
27461         GetCurrentThread() returns a pseudohandle and therefore stores
27462         useless values.  mono_thread_cleanup() continues checking the
27463         array of threads until it is empty, to cope with subthreads
27464         spawning new threads after the main thread has finished.
27465
27466         * profiler.h:
27467         * profiler.c:
27468         * profiler-private.h: Pass the thread ID to thread profiler
27469         functions, instead of a handle
27470
27471 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
27472
27473         * verify.c: fixes to make it more usable.
27474         * pedump.c: added --verify code to verify IL code in an assembly.
27475
27476 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27477
27478         * reflection.c: turn errors into warnings to allow compiling corlib.
27479
27480 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
27481
27482         * reflection.c: add special cases to compile corlib.
27483
27484 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
27485
27486         * reflection.c: handle properties with only a set method.
27487
27488 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
27489
27490         * opcodes.h: add enum with opcodes in opval order.
27491
27492 2002-07-01  Dick Porter  <dick@ximian.com>
27493         
27494         * object.h:
27495         * object.c (mono_runtime_run_main): Removed unneeded argument
27496
27497 2002-06-28  Martin Baulig  <martin@gnome.org>
27498
27499         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
27500
27501 2002-06-27  Dick Porter  <dick@ximian.com>
27502
27503         * threads.c: Store the handle in both the parent thread and in the
27504         subthread, to minimise the time between starting a new thread and
27505         storing its ID.
27506
27507 2002-06-26  Dick Porter  <dick@ximian.com>
27508
27509         * appdomain.c (mono_runtime_cleanup): Close the socket library
27510         after all the threads have finished, not before
27511
27512 2002-06-26  Martin Baulig  <martin@gnome.org>
27513
27514         * debug-symfile.c (mono_debug_find_source_location): Added
27515         `guint32 *line_number' argument.  If it's not NULL, store the line number
27516         there and return the file name without the line number.
27517
27518 2002-06-25  Dick Porter  <dick@ximian.com>
27519
27520         * icall.c:
27521         * process.h:
27522         * process.c: Process forking and other support functions
27523
27524 2002-06-25  Dick Porter  <dick@ximian.com>
27525
27526         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
27527         things dont happen when the image is closed.
27528         (mono_image_lookup_resource): Walk the resource section looking
27529         for a particular entry
27530
27531         * cil-coff.h: PE resource section decoding
27532
27533 2002-06-25  Dick Porter  <dick@ximian.com>
27534         
27535         * assembly.h:
27536         * assembly.c: 
27537         (mono_assembly_foreach): Accessor functions to walk the list of
27538         loaded assemblies
27539         (mono_assembly_set_main):
27540         (mono_assembly_get_main): Process methods need to know which
27541         assembly is the "main" one
27542
27543         * object.c (mono_runtime_run_main): Record the main assembly
27544
27545         * debug-helpers.c: Fix typo
27546
27547 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
27548
27549         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
27550         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
27551
27552 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
27553
27554         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
27555
27556 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
27557
27558         * image.c (do_mono_image_open): Initialize reference count,
27559         otherwise we leak the MonoImage.
27560
27561 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
27562
27563         * reflection.c: small tweak to handle self-hosting.
27564
27565 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
27566
27567         * reflection.c: fix type name parse code.
27568
27569 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
27570
27571         * reflection.c: break out of the loop.
27572         * image.c: special case corlib.
27573
27574 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27575
27576         * reflection.c: add all the custom attrs at the end to ensure the
27577         ctors have been properly initialized when the attributes are defined
27578         in the current assembly.
27579
27580 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
27581
27582         * reflection.c: handle correctly multiple-nested types.
27583
27584 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
27585
27586         * row-indexes.h: fix typos.
27587         * reflection.c: adjust for typos and fix method_def_or_ref
27588         encoding in MethodImpl table.
27589
27590 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
27591
27592         * reflection.c: fix entry point patching (thanks Serge!).
27593
27594 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
27595
27596         * verify.c: add check for System.Exception
27597
27598 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
27599
27600         * image.c, class.c: minifix for code just c&p'ed.
27601         * reflection.c: warning fix.
27602         * object.h, loader.h, domain.c: load also StringBuilder.
27603
27604 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
27605
27606         * marshal.h, marshal.c: some support code to handle complex marshaling.
27607
27608 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27609
27610         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
27611         Better signatures with vtable error dump.
27612
27613 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
27614
27615         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
27616
27617 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
27618
27619         * icall.c (ves_icall_Type_GetField): impl.
27620
27621 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27622
27623         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
27624         to retrieve a marshal description blob for a field or param.
27625
27626 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
27627
27628         * reflection.h, reflection.c: change order of nested type emission
27629         to avoid table corruption. The NestedTypes table is sorted.
27630         * icall.c: change order of GetConstructor results to workaround mcs bug.
27631
27632 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
27633
27634         * reflection.h, reflection.c: handle field and param marshal
27635         information.
27636
27637 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
27638
27639         * icall.c, marshal.c marshal.h: more Marshal class implementation.
27640
27641 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
27642
27643         * reflection.c: fix call convention.
27644
27645 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
27646
27647         * reflection.h, reflection.c: mono_image_get_memberref_token()
27648         takes a type instead of a class, now. Added
27649         mono_image_get_array_token() to create tokens for the special
27650         multi-dim array methods.
27651
27652 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27653
27654         * assembly.c: handle modules (no assembly table). Split
27655         loading references in its own function.
27656         * class.c: handle moduleref resolution scope.
27657         * image.c, image.h: cache module name in image.
27658
27659 2002-06-07  Martin Baulig  <martin@gnome.org>
27660
27661         * reflection.c (mono_image_get_type_info): Only add a class layout entry
27662         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
27663
27664 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
27665
27666         * icall.c: more signature fixes that used uint instead of int.
27667
27668 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27669
27670         * reflection.c: fixed signature of field refs.
27671
27672 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27673
27674         * class.c, reflection.c: handle typerefs of nested types
27675         (both on read and when writing files).
27676
27677 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
27678
27679         * icall.c: fix method signatures that tried to workaround the previous
27680         typo, d'oh!
27681
27682 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
27683
27684         * debug-helpers.c: fix typo.
27685
27686 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
27687
27688         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
27689         rewrote the PE/COFF writing code (our programs are understood by the
27690         ms runtime, now).
27691
27692 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
27693
27694         * gc.c, gc.h, icall.c: weakreference support.
27695
27696 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
27697
27698         * Makefile.am, mono-config.c: use $(sysconfdir).
27699
27700 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
27701
27702         * icall.c: changed default precision of Double.ToString() to 15.
27703         Fixed memory leak. Unified with Single.ToString.
27704
27705 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
27706
27707         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
27708
27709 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
27710
27711         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
27712         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
27713         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
27714         and myself.
27715
27716 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27717
27718         * debug-symfile.c, sysmath.c: yet more compilation fixes.
27719
27720 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
27721
27722         * reflection.c, socket-io.c: more compilation fixes.
27723
27724 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
27725
27726         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
27727         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
27728         unicode.c: warning and compiler compatibility fixes.
27729
27730 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
27731
27732         * class.h, metadata.c: fixed warnings/compilation errors.
27733
27734 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
27735
27736         * Makefile.am, mono-config.c, mono-config.h: configuration file
27737         support routines.
27738         * loader.c, loader.h: make Dll mapping configurable at runtime in the
27739         config file. Export methods to insert and lookup mappings.
27740
27741 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
27742
27743         * reflection.c: handle types and boxed objects in custom attr
27744         constructors.
27745
27746 2002-05-30  Martin Baulig  <martin@gnome.org>
27747
27748         * debug-symfile.c
27749         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
27750
27751 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
27752
27753         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
27754         to lookup the implmap row for a P/Invoke method.
27755         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
27756         P/Invoke method from the runtime on an as needed basis.
27757
27758 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
27759
27760         * metadata.c (mono_metadata_parse_signature): impl.
27761
27762 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
27763
27764         * class.c: handle .pack directive.
27765
27766 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
27767
27768         * object.c: initialize static fields with RVA data.
27769
27770 2002-05-25  Martin Baulig  <martin@gnome.org>
27771
27772         * debug-symfile.c
27773         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
27774
27775 2002-05-24  Martin Baulig  <martin@gnome.org>
27776
27777         * debug-symfile.c
27778         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
27779         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
27780         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
27781
27782 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
27783
27784         * object.c: special case string ctros in invoke.
27785         * gc.c: silly whitespace changes.
27786
27787 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
27788
27789         * threadpool.[ch]: impl. a threadpool that can
27790         be used by mint and mono.
27791
27792 2002-05-22  Martin Baulig  <martin@gnome.org>
27793
27794         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
27795         The first argument is now a `MonoReflectionModuleBuilder *', the return
27796         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
27797         `methods' field to get the method builder.  The `token' argument is the
27798         unfixed token.
27799
27800         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
27801         invalid characters instead of g_assert_not_reached()ing.  This seems
27802         to be the behaviour of mscorlib.
27803
27804 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
27805
27806         * object.c (mono_runtime_invoke_array): applied patch from Rachel
27807         Hestilow to fix bug #25104
27808
27809 2002-05-21  Martin Baulig  <martin@gnome.org>
27810
27811         * debug-symfile.c (mono_debug_find_source_location): New function.
27812         Looks up an IL offset in the line number table and returns the source
27813         location as a string.
27814
27815 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27816
27817         * icall.c:
27818         (mono_double_ToStringImpl): changed %f by %g until we have something
27819         better.
27820
27821 2002-05-21  Nick Drochak  <ndrochak@gol.com>
27822
27823         * icall.c : Use different name for Math.Pow's icall.  Needed to check
27824         parameters first in C#.
27825
27826 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
27827
27828         * icall.c, reflection.h: added icall to get info about an event.
27829
27830 2002-05-20  Radek Doulik  <rodo@ximian.com>
27831
27832         * object.c (mono_value_box): don't use memcpy for boxing on BIG
27833         endian
27834         (mono_value_box): don't use memcpy for small sizes on
27835         architectures with unaligned access
27836
27837 2002-05-20  Martin Baulig  <martin@gnome.org>
27838
27839         * reflection.c (mono_reflection_setup_internal_class): Don't crash
27840         if `tb->parent == NULL'.
27841         (mono_reflection_create_internal_class): New function.  This is
27842         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
27843         for enum types.
27844
27845         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
27846         New interncall.
27847
27848 2002-05-19  Martin Baulig  <martin@gnome.org>
27849
27850         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
27851         argument to get the length, don't default to the array length.
27852
27853 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
27854
27855         * assembly.c (mono_assembly_setrootdir): New function used to
27856         override the MONO_ASSEMBLIES directory.
27857
27858 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
27859
27860         * icall.c: ValueType_GetHashCode() initialize local var.
27861
27862 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
27863
27864         * reflection.c: sort custom attributes table.
27865
27866 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
27867
27868         * reflection.c: support named args in custom attributes (write support).
27869
27870 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
27871
27872         * reflection.c: fix finally position calculation.
27873
27874 2002-05-15  Radek Doulik  <rodo@ximian.com>
27875
27876         * reflection.c: fixed endianess at many places
27877
27878         * icall.c (ves_icall_InitializeArray): comment out debug msg
27879
27880 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
27881
27882         * object.c (mono_unhandled_exception): new function to handle
27883         unhandled exceptions.
27884         (mono_unhandled_exception): call the UnhandledException event.
27885         (mono_runtime_delegate_invoke): impl.
27886
27887 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
27888
27889         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
27890         returns the RVA, not the direct pointer to the data. Handle the case
27891         when the class size is fixed.
27892
27893 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
27894
27895         * reflection.c: fix some endianess issues.
27896
27897 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
27898
27899         * object.c (mono_runtime_invoke): is now able to catch exceptions.
27900
27901         * threads.c (mono_thread_init): added a callback which is invoked
27902         at thread start.
27903
27904 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
27905         
27906         * icall.c: make GetHashCode return non-negative values.
27907
27908 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
27909
27910         * object.c, icall.c, gc.c: revert to address-based hashcode.
27911
27912 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
27913
27914         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
27915
27916 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
27917
27918         * icall.c, class.c: special case <Module>.
27919
27920 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
27921
27922         * icall.c: fix bug in GetNow().
27923
27924 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
27925
27926         * object.c (mono_runtime_class_init): make sure that we call all
27927         static class constructors.
27928
27929 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
27930
27931         * reflection.c: sort methodsemantics table.
27932
27933 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
27934
27935         * reflection.h, reflection.c: honour init locals setting.
27936
27937 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
27938
27939         * icall.c: copied Double ToStringImpl for Single ToStringImpl
27940
27941 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
27942
27943         * reflection.c: support ContructorBuilders in attribute blob creation.
27944
27945 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
27946
27947         * reflection.c: some changes to build a binary that can be run
27948         directly in windows.
27949
27950 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
27951
27952         * loader.c: print a big message when an icall can't be found.
27953
27954 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27955
27956         * string-icalls.c: fix bug 24248.
27957
27958 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
27959
27960         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
27961         icall.c, reflection.h: separate assembly loading by pathname and by
27962         assembly name. Use the MONO_PATH env var to search for assemblies.
27963
27964 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
27965
27966         * assembly.c, image.h: add some support for assemblies
27967         with multiple modules.
27968         * class.c, class.h: export mono_class_from_typeref().
27969         * loader.c: remove duplicated code and use mono_class_from_typeref(),
27970         instead.
27971
27972 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
27973
27974         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
27975         documentation says (the ECMA one is correct).
27976
27977 2002-05-02  Dick Porter  <dick@ximian.com>
27978
27979         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
27980         Don't name the synchronisation mutex.
27981
27982 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
27983
27984         * rand.c
27985         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
27986         Make the prototypes match.
27987         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
27988         Same.
27989
27990         * icall.c
27991         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
27992         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
27993         all systems have tm.tm_zone, so use strftime() with %Z to print
27994         the timezone abreviation into a temp string.
27995
27996         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
27997         rather than mono_array_addr() on a MonoString on Big Endian
27998         machines.
27999
28000 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
28001
28002         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
28003         fix bug 24041
28004
28005 2002-04-30  Dick Porter  <dick@ximian.com>
28006
28007         * socket-io.c: Cope with SOCKET being an integer rather than a
28008         pointer now.
28009
28010         * threads.c: Added Thread_free_internal, to deal with thread
28011         handle cleanup.  Moved calls to handle_store() and handle_remove()
28012         to start_wrapper(), so each can only be called once.  Allocate
28013         synchronisation blocks with GC_malloc(), and use GC finalisation
28014         to close the handles.
28015
28016         * icall.c: added System.Threading.Thread::Thread_free_internal
28017
28018 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28019
28020         * icall.c: support Environment.Exit, CommandLineArgs().
28021
28022 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28023
28024         * object.c, object.h: added mono_runtime_run_main () and
28025         mono_runtime_get_main_args () for use in System.Environment.
28026
28027 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28028
28029         * gc.c: fix thinko, enable actual finalization since the jit is now
28030         fixed.
28031
28032 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28033
28034         * gc.c, object.c: take into account that an object may be offset wrt the address
28035         returned by GC_malloc().
28036
28037 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28038
28039         * image.c: handle files without entries in the assembly table (modules).
28040
28041 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
28042
28043         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
28044         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
28045         allowed to be null when it's System.Object class setup.
28046
28047 2002-04-27  Martin Baulig  <martin@gnome.org>
28048
28049         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
28050         if `tb->parent == NULL' rather than crashing.
28051
28052 2002-04-28  Nick Drochak  <ndrochak@gol.com>
28053
28054         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
28055         calling acos() where asin() should have been called.
28056
28057 2002-04-26  Martin Baulig  <martin@gnome.org>
28058
28059         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
28060         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
28061         there's a subdirectory called `System', but we don't want to read that
28062         subdirectory as an assembly.
28063
28064 2002-04-25  Martin Baulig  <martin@gnome.org>
28065
28066         * debug-symfile.c: Reflect latest MonoString changes.
28067
28068 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28069
28070         * rand.c, rand.h: instance method icalls need to have an explicit
28071         this pointer as first argument in the C implementation.
28072
28073 2002-04-25  Nick Drochak <ndrochak@gol.com>
28074
28075         * icall.c: Fix typo in map for GetNonZeroBytes
28076
28077 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
28078
28079         * string-icalls.c : String does now passes unit tests without any 
28080         errors, the following changes has been made:
28081         
28082         Implemented replace methods.
28083         Renaming of methods to (try) follow the standard.
28084         Fixed compare ordinal
28085         Made all memory allocated directly to function instead of via icall function.
28086         Small performance fix in is_in_array function
28087                         
28088  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
28089
28090         c (mono_string_Internal_ctor_charp_int_int):
28091         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
28092         sindex < 0, throw ArgumentOutOfRangeException instead of
28093         ArgumentNullException.
28094
28095         Added new check for length == 0, however
28096         I need to make it return String.Empty from the C code.
28097         
28098         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
28099         that calculate the length for us here.
28100         
28101         (mono_string_Internal_ctor_sbytep_int_int): Replaced
28102         mono_string_new_utf16 with mono_string_new, since value is utf8.
28103
28104 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28105
28106         * object.c: register the object for finalization if needed.
28107         Allocate one more char in the string for the terminating 0 char.
28108
28109 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28110
28111         * class.c, class.h, image.c: check if a type implemenst a destructor.
28112         Use the proper key for array class lookups.
28113         * icall.c: register the icalls in the System.GC class.
28114         * gc.c, gc.h: GC-related functions and icalls.
28115
28116 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28117
28118         * icall.c:
28119         * socket-io.c:
28120         * unicode.c: free some strings gotten from mono_string_to_utf8 and
28121         changed a couple of free () by g_free ().
28122
28123         * decimal.c: one-liner in the comments for decimal2string ().
28124
28125 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
28126
28127         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
28128
28129 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
28130
28131         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
28132         * object.c (mono_runtime_invoke_array) : handle null in params
28133
28134 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
28135
28136         * string-icalls.c: fixed bug in split (one off bug)
28137
28138 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
28139
28140         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
28141         * icalls.c: added String::Equals as internal method
28142
28143 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
28144
28145         * threads.c: fixed bug in the double interlocked functions
28146
28147 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
28148
28149         * threads.c: implemented all of the new interlocked icalls.
28150         * string-icalls.c: fix a bug in insert.
28151         * icalls.c: added the icalls for interlocked, removed old string functions.
28152         
28153 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28154
28155         * loader.c: fix off-by-one error when reading argument names.
28156
28157 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28158
28159         * profiler.c: win32 counter implementation (untested).
28160         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
28161         (the latter needs testing and more complete impl. from win32 folks).
28162
28163 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
28164
28165         * object.c: mono_array_new_full workaround mono_array_class_get
28166         problem.
28167
28168 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
28169
28170         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
28171         * object.h (mono_string_chars): Changed casting type.
28172
28173 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
28174
28175         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
28176                            method signatures to use gunichar2 instead of gint16.
28177
28178 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
28179
28180         * object.h, object.c: domain-specific versions of mono_object_new and
28181         mono_array_new.
28182
28183 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
28184
28185         * object.c: changed String layout
28186
28187         * string-icalls.c (mono_string_Internal_ctor_chara): added
28188         internal string constructors.
28189
28190 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
28191
28192         * threads.c: pass 'this' to the thread start routine.
28193
28194 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28195
28196         * string-icalls.c: fix IndexOf and LastIndexOf. Now
28197         InternalCompareStr don't call twice mono_string_cmp_char for the last
28198         character. Improved performance in mono_string_cmp_char.
28199
28200 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28201
28202         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
28203         code into its own library: libmonoruntime.
28204
28205 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
28206
28207         * object.h, object.c: changed array format so that szarrays do not
28208         require a bounds structure.
28209         * icall.c, appdomain.c: support for new szarray format.
28210
28211 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
28212
28213         * metadata.c: compare also the retuns type when comparing signatures:
28214         we didn't do this as an optimization since really overloaded methods
28215         must differ also in the arguments, but this doesn't work with
28216         low-level IL code (or when using explicit conversion operators: see
28217         bug#23498 for an example).
28218
28219 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28220
28221         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
28222
28223 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28224
28225         * icall.c: make MonoType::GetElementType its own icall.
28226
28227 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
28228
28229         * icall.c: remove MonoMethod_get_Name().
28230         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
28231         object.
28232
28233 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
28234
28235         * string-icalls.c: optimized a few methods.
28236
28237 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
28238
28239         * icall.c: added all new string internal calls
28240         * string-icalls.c: added, new string internal call implementation.
28241         * object.c: added mono_string_new_size for allocating a string a size
28242
28243 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
28244
28245         * object.c (mono_object_isinst): use the same code as in the
28246         optimized x86 version.
28247
28248 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28249
28250         * profiler.c: TSC-based timer code (faster and more accurate).
28251         Not hooked up in configure, yet (set USE_X86TSC to 1).
28252
28253 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
28254
28255         * profiler.c, profiler.h: track time spent compiling methods.
28256         * threads.c: track thread creation/destruction.
28257
28258 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
28259
28260         * profiler.c, profiler.h, profiler-private.h: profiling interface
28261         and sample implementation. Moved here so that it can be used also by
28262         the jit.
28263
28264 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
28265
28266         * reflection.c, reflection.h: keep types and other handles separate in
28267         the hash tables for referred tokens. Add guid for modules.
28268
28269 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
28270
28271         * assembly.c: fix bugs found with valgrind.
28272         * metadata.h, metadata.c: added mono_metadata_guid_heap().
28273
28274 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
28275
28276         * threads: added icall support for getting current domain for
28277                    the thread.
28278  
28279 2002-04-13  Martin Baulig  <martin@gnome.org>
28280
28281         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
28282         (MonoDebugVarInfo): Added `index' field for register based addresses.
28283         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
28284         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
28285         `MonoDebugVarInfo *params' and `guint32 this_offset' with
28286         `MonoDebugVarInfo *this_var'.
28287
28288         * debug-symfile.c (relocate_variable): New static function to write
28289         a location description for a local variable or method parameter.
28290
28291 2002-04-12  Martin Baulig  <martin@gnome.org>
28292
28293         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
28294         stack offset and begin/end scope address of a local variable.
28295         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
28296         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
28297         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
28298
28299         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
28300         Added new relocation types for start/end scope of a local variable.
28301
28302 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28303
28304         * object.h: add mono_object_domain() macro.
28305         * reflection.c: handle typespecs.
28306         * icall.c: MonoMethod::get_Name() implementation.
28307
28308 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28309
28310         * icall.c: String::GetHashCode() icall implementation.
28311
28312 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28313
28314         * icall.c: String::IndexOfAny icall.
28315         * object.c, object.h: make array->max_length more useful.
28316         Intrduced mono_object_class() and mono_string_length() macros.
28317
28318 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28319
28320         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
28321         instead of g_unichar_isdigit.
28322
28323 2002-04-11  Nick Drochak  <ndrochak@gol.com>
28324
28325         * icall.c: Implement a simple Double.ToString().
28326
28327 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28328
28329         * appdomain.h: only io-layer.h is supposed to be included.
28330         * icall.c: explicitly import environ. Fix warning.
28331
28332 2002-04-10  Nick Drochak  <ndrochak@gol.com>
28333
28334         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
28335                 return true even if it's not Daylight Savings time.
28336                 Only return false for the case where the function isn't
28337                 implemented for a plaform (read Windows).
28338
28339 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28340
28341         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
28342         data with a mutex.
28343
28344 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
28345
28346         * mempool.c (mono_mempool_alloc): only use g_malloc when
28347         absolutely necessary.
28348
28349 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
28350
28351         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
28352
28353         * class.c (mono_class_vtable): use domain mempool to allocate vtable
28354         (mono_class_proxy_vtable): use domain mempool
28355
28356 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28357
28358         * appdomain.h, appdomain.c: split initialization that requires the
28359         execution engine support into mono_runtime_init().
28360
28361 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
28362
28363         * class.c (mono_class_init): don't include vtable inside MonoClass
28364         to save some memory, gather some statistics.
28365         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
28366
28367 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28368
28369         * icall.c: internalcall implementation for ValueType.Equals().
28370
28371 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
28372
28373         * object.c (mono_message_init): moved 
28374         (mono_runtime_exec_main): new arch. independent impl.
28375         (mono_runtime_invoke_array): new method - like
28376         mono_runtime_invoke, but you can pass an array of objects.
28377         (mono_remoting_invoke): new arch. independent impl.
28378         (mono_message_invoke): new arch. independent impl.
28379         (mono_runtime_class_init): new arch. independent impl.
28380         (mono_runtime_object_init): new arch. independent impl.
28381
28382 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28383
28384         * metadata.c, object.c, reflection.c: documented the exported
28385         functions.
28386
28387 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28388
28389         * icall.c: simpler code to pass the assembly builder data to corlib.
28390         Implement GetNestedTypes() internalcall.
28391
28392 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
28393
28394         * class.c: warn if a type can't be loaded.
28395
28396 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
28397
28398         * image.h: typedef MonoImageOpenStatus
28399         * types.h: removed unused file
28400         
28401 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
28402
28403         * icall.c: Enum_ToObject accepts enum value arguments.
28404
28405 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28406
28407         * class.c: move initialization of properties, events and nested
28408         classes, so that they happen for interfaces, too.
28409
28410 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28411
28412         * icall.c: cleanup some ugly casts in Array_SetValue*.
28413
28414 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28415
28416         * icall.c: the values array fro enums is of the correct type, now.
28417         Implement (correctly) getFullName instead of assQualifiedName for
28418         MonoType.
28419         * reflection.h, reflection.c: added mono_type_get_name ().
28420
28421 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28422
28423         * assembly.c, image.h: for each MonoImage, record from wich assembly
28424         it was loaded.
28425         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
28426         Make Type.Assembly work.
28427
28428 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
28429
28430         * debug-symfile.h: use char* instead of gpointer to avoid
28431         unnecessary casts.
28432
28433         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
28434
28435         * icall.c (ves_icall_InternalExecute): impl. FielSetter
28436         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
28437
28438 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
28439
28440         * icall.c (mono_message_init): impl. (code cleanup)
28441         (ves_icall_InternalExecute): impl. FieldGetter
28442
28443         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
28444         defined we call all (non-static)methods through the vtable. 
28445
28446 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
28447
28448         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
28449         finalizer even though the memory is still referenced (and the chunk of
28450         memory is not freed).
28451
28452 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
28453
28454         * assembly.c: fix brokeness.
28455
28456 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
28457
28458         * class.c: kill some warnings. Check explicit interface method
28459         implementation also without considering the namespace.
28460         Load also literal strings in static class data.
28461
28462 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
28463
28464         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
28465         (default_assembly_name_resolver): Make the resolver take the
28466         "base" directory where the assembly was originally defined, so we
28467         can load DLLs that are in the same directory as the assembly that
28468         is being referenced.
28469
28470 2002-03-28  Dick Porter  <dick@ximian.com>
28471
28472         * file-io.h: 
28473         * file-io.c:
28474         * socket-io.c: 
28475         * unicode.h: 
28476         * unicode.c: Warning cleanups
28477
28478 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
28479
28480         * object.h, reflection.h: use the correct type instead of MonoObject.
28481
28482 2002-03-28  Martin Baulig  <martin@gnome.org>
28483
28484         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
28485         (mono_debug_update_symbol_file): Initialize classes if necessary.
28486
28487 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
28488
28489         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
28490         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
28491
28492 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
28493
28494         * assembly.h: fix function prototype.
28495         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
28496         * mono-endian.h: use const cast.
28497
28498 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
28499
28500         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
28501
28502 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
28503
28504         * loader.c: don't assert when a typeref can't be loaded, give
28505         a chance to the runtime to trow an exception instead.
28506         * loader.h: fix warning.
28507
28508 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
28509
28510         * class.c (mono_class_proxy_vtable): added proxy support
28511
28512 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
28513
28514         * icall.c: removed last of PAL calls, added System.Environment
28515         * file-io.h, file-io.c: MonoIO implementation
28516         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
28517
28518 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
28519
28520         * appdomain.c: do not use the byte marker in ldstr table lookup.
28521         * debug-helpers.c: allow two ':' to separate class and method name.
28522         * object.c: allocate arrays bounds with the GC, too.
28523         * verify: add a few more checks.
28524
28525 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
28526
28527         * reflection.c: output also literal strings. Allocate parameter data
28528         with GC_malloc() (thanks, Martin, for catching this!).
28529
28530 2002-03-26  Martin Baulig  <martin@gnome.org>
28531
28532         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
28533         include the `this' offset in the `param_offsets'.
28534
28535 2002-03-25  Martin Baulig  <martin@gnome.org>
28536
28537         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
28538         mono_debug_get_class() function to get the classes. Added new
28539         relocation types for arrays and strings.
28540         (mono_debug_get_class): New static function to search in all
28541         referenced assemblies for a metadata token.
28542
28543         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
28544
28545 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
28546
28547         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
28548         hold gc-allocated objects. Make the string heap a stream like the
28549         others. Removed duplicated code when writing stream info.
28550         Added asserts to catch possible buffer overflows. Set the sorted map
28551         for tables that need sorting. Added some documentation.
28552
28553 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
28554
28555         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
28556         for interned strings and vtables.
28557
28558 2002-03-24  Martin Baulig  <martin@gnome.org>
28559
28560         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
28561         it in the array since it was created with g_slist_prepend().
28562
28563 2002-03-24  Martin Baulig  <martin@gnome.org>
28564
28565         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
28566         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
28567         (mono_debug_method_from_token): Renamed to
28568         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
28569         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
28570
28571         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
28572         relocation types.
28573
28574         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
28575
28576 2002-03-24  Martin Baulig  <martin@gnome.org>
28577
28578         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
28579         (mono_debug_method_from_token): New func.
28580
28581         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
28582         New interncall, calls mono_debug_local_type_from_signature().
28583         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
28584         calls mono_debug_method_from_token().
28585
28586 2002-03-23  Martin Baulig  <martin@gnome.org>
28587
28588         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
28589         specifies the number of bytes to be converted, not the array size.
28590         Return the number of chars, not the number of bytes.
28591         (ves_icall_iconv_get_chars): The `byteCount' argument
28592         specifies the number of bytes to be converted, not the array size.
28593
28594 2002-03-23  Martin Baulig  <martin@gnome.org>
28595
28596         * reflection.h (MonoReflectionSigHelper): New type.
28597
28598         * reflection.c (mono_reflection_sighelper_get_signature_local),
28599         (mono_reflection_sighelper_get_signature_local): New functions.
28600
28601         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
28602         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
28603         interncalls.
28604
28605 2002-03-23  Martin Baulig  <martin@gnome.org>
28606
28607         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
28608         is_writeable is set.
28609         (mono_raw_buffer_update): New function to write the modified map
28610         back to disk.
28611
28612         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
28613
28614         * debug-symfile.c (mono_debug_update_symbol_file): Call
28615         mono_raw_buffer_update() when done writing.
28616
28617 2002-03-23  Martin Baulig  <martin@gnome.org>
28618
28619         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
28620
28621         * debug-symfile.c: Added support for arguments and local variables.
28622
28623 2002-03-23  Dick Porter  <dick@ximian.com>
28624
28625         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
28626         protected by ifdefs, hence breaking the w32 build.
28627
28628 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28629
28630         * object.c: implement is_interned() the right way.
28631
28632 2002-03-21  Martin Baulig  <martin@gnome.org>
28633
28634         * debug-symfile.[ch]: New files to handle debugging information
28635         files. There's also support to dynamically update these symbol
28636         files to include machine dependent information.
28637
28638 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
28639
28640         * threads.c (mono_thread_create): new function to create thread
28641         from C
28642
28643 2002-03-20  Martin Baulig  <martin@gnome.org>
28644
28645         * icall.c (ves_icall_InternalInvoke): Create a new object if the
28646         method is a constructor.
28647         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
28648         points to ves_icall_InternalInvoke().
28649
28650 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
28651
28652         * file-io.c: Flush shouldn't throw exceptions.
28653
28654 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
28655
28656         * file-io.c: FileStream flush support; FileSetLength now
28657         restores file pointer.
28658
28659 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
28660
28661         * class.c: set image for pointer classes.
28662
28663 2002/03/19  Nick Drochak <ndrochak@gol.com>
28664
28665         * sysmath.c: Forgot one.
28666
28667 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
28668
28669         * sysmath.c: Avoid redefining existing names.
28670
28671 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
28672
28673         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
28674         handled by runtime as icall rather than dllimport from libm.so
28675         * file-io.c, file-io.h: fixed handle argument type.
28676
28677 2002-03-18  Dick Porter  <dick@ximian.com>
28678
28679         * reflection.c (mono_image_get_type_info): rename interface to
28680         iface, because of "#define interface struct" on windows.
28681
28682 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
28683
28684         * class.c, class.h: rename and export mono_ptr_class_get().
28685         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
28686         * reflection.c, reflection.h, icall.c: better/saner type name
28687         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
28688         method signatures.
28689
28690 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
28691
28692         * class.c (mono_class_init): removed hardcoded GHC_SLOT
28693
28694         * icall.c (ves_icall_InternalInvoke): impl.
28695
28696 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
28697
28698         * reflection.c: output the interface map table, too.
28699
28700 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
28701
28702         * class.c (class_compute_field_layout): separate computation of 
28703         static field layout
28704
28705 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
28706
28707         * icall.c: added System.Buffer support.
28708         * file-io.c: moved file icalls from PAL to FileStream.
28709
28710 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
28711
28712         * icall.c (ves_icall_System_Object_GetHashCode): impl.
28713
28714 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
28715
28716         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
28717
28718 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
28719
28720         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
28721
28722 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
28723
28724         * debug-helpers.{c,h}: moved here from monograph some useful functions
28725         to locate a method by name/signature in a class or image. Included
28726         also a small and flexible IL disassembler.
28727
28728 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
28729
28730         * reflection.c: fixup tokens in methods with small header size, too.
28731
28732 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
28733
28734         * object.c (mono_string_to_utf8): remove assert(!error), instead
28735         print a warning. 
28736
28737 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
28738
28739         * icall.c: update to the new mono_Array_class_get interface.
28740
28741 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
28742
28743         * appdomain.c, object.c: Boehm-GC enable.
28744         * icall.c: make get_data_chunk() support split data requests.
28745         Ensure a class is initialized in more cases. Return only the first
28746         property found in GetProperties() or the compiler gets confused. 
28747         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
28748         * reflection.h, reflection.c: add fixup mechanism for field and method
28749         tokens. Initialize assembly->typeref in a single place. Output
28750         properties after events. Support custom attributes for events, too.
28751         Typo fix for paramter custom attrs.
28752
28753 2002-03-07  Martin Baulig  <martin@gnome.org>
28754
28755         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
28756
28757 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
28758
28759         * class.c (mono_array_class_get): fix. for multi. dim. arrays
28760
28761 2002-03-06  Martin Baulig  <martin@gnome.org>
28762
28763         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
28764         non-zero lower bounds. See testcases #F10-#F13.
28765
28766 2002-03-05  Martin Baulig  <martin@gnome.org>
28767
28768         * exception.c (mono_get_exception_argument_out_of_range): New exception.
28769
28770         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
28771         ves_icall_System_Array_GetValue(), only calculate the absolute array position
28772         here.
28773         (ves_icall_System_Array_SetValue): Likewise.
28774         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
28775         as argument and does the actual work. This function is used when copying a
28776         multi-dimensional array.
28777         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
28778         now do all the widening conversions of value types.
28779         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
28780
28781 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28782
28783         * class.c: remove some magic numbers and use the smbolic names,
28784         instead. Added init_events() to load event info at class init time.
28785         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
28786         and mono_metadata_methods_from_event().
28787         * reflection.h, reflection.c: added support for writing out the evnets
28788         related information.
28789
28790 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
28791
28792         * reflection.h, icall.c: use a different method (GetInterfaces)
28793         to gather interface info and add isbyref, isprimitive and
28794         ispointer to the ves_icall_get_type_info() return value.
28795
28796 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
28797
28798         * class.h: stared adding support for events.
28799         * icall.c: split find_members implementation. Added debug icall to get
28800         the address of an object.
28801         * reflection.c: handle TypeBuilders in mono_type_get_object().
28802
28803 2002-03-01  Martin Baulig  <martin@gnome.org>
28804
28805         * icall.c (ves_icall_System_Array_GetLength): This must throw an
28806         ArgumentOutOfRangeException(), not an ArgumentException().
28807         (ves_icall_System_Array_GetLowerBound): Likewise.
28808         (ves_icall_System_Array_GetValue): Improved argument checking.
28809         (ves_icall_System_Array_SetValue): Improved argument checking.
28810
28811 2002-03-01  Martin Baulig  <martin@gnome.org>
28812
28813         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
28814         called with invalid arguments rather than just dying with g_assert().
28815         (ves_icall_System_Array_SetValue): Likewise.
28816         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
28817         raise a NotImplementedException instead.
28818         (ves_icall_System_Array_GetLength): Added argument checking.
28819         (ves_icall_System_Array_GetLowerBound): Added argument checking.
28820
28821 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
28822
28823         * object.h (mono_assert): new macros mono_assert and
28824         mono_assert_not_reached
28825
28826 2002-02-28  Martin Baulig  <martin@gnome.org>
28827
28828         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
28829         and "System::String::IsInterned" to "System::String::_IsInterned".
28830
28831 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
28832
28833         * icall.c: remove hacks for typebuilder. Added icall to create a
28834         modified type from a tybebuilder.
28835         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
28836         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
28837         to create a backing MonoClass for a TypeBuilder.
28838
28839 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28840
28841         * class.c, class.h: more refactoring of class init.
28842         Export mono_class_setup_mono_type() and mono_class_setup_parent().
28843
28844 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
28845
28846         * marshal.c, marshal.h: start of marshaling interface.
28847
28848 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
28849
28850         * icall.c: fix order in assembly qualified name icall.
28851
28852 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
28853
28854         * class.c: do not free str, since we store it in the hash table.
28855         * reflection.h: add label field to MonoILExceptionInfo.
28856         * reflection.c: handle references to more than one assembly. Handle
28857         case when there isn't a module created in the assembly.
28858
28859 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
28860
28861         * class.c: Fix typo. Start refactoring of class init code.
28862
28863 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
28864
28865         * appdomain.c: exit with 1 on error.
28866         * class.c: we already have the name in MonoClassField.
28867         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
28868         MonoStreamHeader instead of an offset of image->raw_metadata.
28869
28870 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
28871
28872         * appdomain.c (mono_init): Be even more descriptive about the error.
28873
28874 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
28875
28876         * appdomain.c: give the user an informative message when corlib can't
28877         be loaded.
28878
28879 2002-02-26  Martin Baulig  <martin@gnome.org>
28880
28881         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
28882         New icall to get the time zone data.
28883
28884 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28885
28886         * reflection.c: set virtual and raw size of section correctly.
28887         * threads.c: transfer domain information to newly created threads.
28888
28889 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
28890
28891         * class.c: when instancing a class in a domain, load the default
28892         vaules for static fields from the constant table. Fix System.Enum to
28893         not be an enum.
28894         * icall.c: implement Object::GetType() internalcall. Implemented
28895         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
28896         Fixed checking of binding flags in find_members().
28897         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
28898         * reflection.c: handle enumerations when writing to the constant
28899         table. Use a different object cache for types.
28900
28901
28902 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
28903
28904         * object.c (mono_object_isinst): fix for arrays
28905
28906         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
28907
28908 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
28909
28910         * object.c: don't use mprotect ()  and fix intern pool hash table
28911         lookup for big endian systems.
28912
28913 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
28914
28915         * icall.c: change type_is_subtype_of () signature.
28916
28917 2002-02-21  Mark Crichton  <crichton@gimp.org>
28918
28919         * rand.c, rand.h: Added random number generator for
28920         System.Security.Cryptography classes.
28921
28922         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
28923
28924         * icall.c: Added System.Security.Cryptography calls.
28925
28926 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28927
28928         * class.c, icall.c, metadata.c: better support for pointer types.
28929         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
28930         * reflection.c: Add support for getting custom attrs for properties
28931         and simplify some code.
28932
28933 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
28934
28935         * icall.c: change getToken () and add custom attribute GetBlob()helper
28936         method.
28937         * reflection.h: add custom attrs array to the reflection builder structures.
28938         * reflection.c: encode and emit custom attributes for all the relevant
28939         reflection objects. Cache fieldref and methodref tokens. Change
28940         mono_image_create_token() interface to take a MonoDynamicAssembly.
28941         More complete custom attributes decoder. Load custom attributes for
28942         Assembly, Field, Method and Constructor objects, too. Make the
28943         returned array an Attribute[] one, not object[]. Added
28944         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
28945         custom attribute constructor.
28946
28947 2002-02-20  Dick Porter  <dick@ximian.com>
28948
28949         * icall.c:
28950         * rawbuffer.c:
28951         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
28952         problem code out for now).
28953
28954 2002-02-19  Radek Doulik  <rodo@ximian.com>
28955
28956         * object.c (mono_ldstr): use hash table to avoid multiple swapping
28957
28958 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
28959
28960         * icall.c: register the GetCustomAttributes method.
28961         * object.c, object.h: add mono_string_new_len ().
28962         * reflection.h, reflection.c: added mono_runtime_invoke(),
28963         mono_install_runtime_invoke(). Added
28964         mono_reflection_get_custom_attrs () to load custom attributes and
28965         create the attribute objects.
28966
28967 2002-02-19  Dick Porter  <dick@ximian.com>
28968         * threads-dummy-types.c:
28969         * threads-dummy-types.h:
28970         * threads-dummy.c:
28971         * threads-dummy.h:
28972         * threads-pthread-types.c:
28973         * threads-pthread-types.h:
28974         * threads-pthread.c:
28975         * threads-pthread.h:  Deleted obsolete files
28976
28977 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
28978
28979         * class.c (mono_class_vtable): runtime init the class when we
28980         allocate static class data.
28981
28982         * icall.c (ves_icall_System_Array_SetValue): check for null values.
28983
28984         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
28985         and String - but we will need generic marshalling support in the
28986         future. 
28987         (mono_init): set the domain name in a ms compatible way
28988
28989         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
28990         String[].
28991
28992 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
28993
28994         * object.c (mono_array_clone): use alloca() instead of g_malloc  
28995         for sizes
28996
28997         * appdomain.c (mono_domain_unload): impl.
28998
28999 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
29000
29001         * appdomain.c, object.c: fix intern pool implementation.
29002         * class.c: fix alignment code.
29003
29004 2002-02-16  Radek Doulik  <rodo@ximian.com>
29005
29006         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
29007         and s2 > s1, just copy lower bytes to be compatible with little
29008         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
29009         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
29010
29011         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
29012         force big_endian to be 1 for big endian machines 
29013         (ves_icall_iconv_new_decoder): ditto
29014
29015 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
29016
29017         * socket-io.c (convert_sockopt_level_and_name): If the system
29018         doesn't define SOL_IP or SOL_TCP, get them by hand using
29019         getprotobyname() and caching the values (because this could be a
29020         slow operation).
29021         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
29022         Use the appropriate struct when the system does support it. Ie,
29023         not all systems have struct ip_mreqn so use struct ip_mreq when
29024         appropriate.
29025
29026 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
29027
29028         * reflection.c: handle finally clauses.
29029
29030 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
29031
29032         * socket-io.c: use g_snprintf() instead of snprintf.
29033
29034 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
29035
29036         * reflection.c (mono_param_get_objects): Cast second argument to
29037         mono_method_get_param_names to a const char** to silence the
29038         compiler warning.
29039
29040         * appdomain.c (mono_domain_assembly_open): Put parens around the
29041         truth statement in the for-loop.
29042
29043         * unicode.c (iconv_convert): Got rid of a compiler warning about
29044         int i being unused when the system has a new iconv.
29045         (iconv_get_length): Same.
29046
29047         * image.c (load_class_names): Cast the second argument to
29048         g_hash_table_insert() to char* to hush compiler warnings about the
29049         arg being a const.
29050         (mono_image_open): Same here.
29051
29052         * socket-io.c: Don't conditionally include sys/filio.h or
29053         sys/sockio.h here anymore since we now get them from
29054         io-layer/io-layer.h
29055         (inet_pton): If the system doesn't support inet_aton, implement
29056         using inet_addr and also #define INADDR_NONE if it isn't defined
29057         by the system.
29058
29059 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
29060
29061         * metadata.c, metadata.h: added function to get packing and size info
29062         of a typedef.
29063         * reflection.h, reflection.c: handle field RVA data. Save info about
29064         the table layout if needed. Assign typedef indexes to all the types
29065         before dumping the info about them to avoid forward reference problems.
29066
29067 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
29068
29069         * socket-io.c (convert_sockopt_level_and_name): ifdef
29070         SO_ACCEPTCONN because it is not defined on my system (old debian)
29071
29072 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
29073
29074         * opcode.c: use stddef.h to get NULL.
29075
29076 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
29077
29078         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
29079         for FIONBIO, FIONREAD and SIOCATMARK.
29080         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
29081         define INADDR_NONE and besides, inet_addr() is deprecated and
29082         should not be used. Use inet_pton() instead - it also has the
29083         added bonus that it can easily handle IPv6 addresses as well.
29084         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
29085
29086 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
29087
29088         * decimal.c: remove _MSC_VER conditional.
29089
29090 2002-02-13  Dick Porter  <dick@ximian.com>
29091
29092         * socket-io.c: 
29093         * icall.c: Internal calls for Blocking, Select, Shutdown,
29094         GetSocketOption and SetSocketOption
29095
29096 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
29097
29098         * assembly.cs: better resolver: use it instead of some kludgy
29099         code.
29100
29101 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
29102
29103         * reflection.c: the best way to speed-up the compiler is to avoid
29104         infinite loops.
29105
29106 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
29107
29108         * class.c (mono_class_vtable): changed the object layout
29109         (obj->vtable->class). 
29110         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
29111
29112 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
29113
29114         * assembly.c: look for assemblies in the assembly dir, too.
29115
29116 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
29117
29118         * class.c: fix thinko in mono_class_from_type().
29119
29120 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
29121
29122         * exception.h, exception.c: added TypeLoadException.
29123         * object.h, object.c: added mono_array_clone ().
29124         * icall.c: handle throwOnError in AssemblyGetType().
29125         Added Array.Clone().
29126         * opcode.h, opcode.c: use a single value for the opcode val.
29127         Compile fix for non-gcc compilers.
29128
29129 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
29130
29131         * opcodes.c, opcodes.h: export interesting info about opcodes.
29132
29133 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
29134
29135         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
29136         icalls. 
29137
29138         * class.c (class_compute_field_layout): set element_class for enums
29139         (mono_class_create_from_typedef): set element_class for normal classes
29140
29141         * icall.c (ves_icall_System_Enum_get_value): impl.
29142
29143         * class.c (mono_class_create_from_typedef): do not set valuetype
29144         flag for System.ValueType and System.Enum
29145
29146 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
29147
29148         * unicode.c (iconv_convert): fix big endian problem.
29149
29150 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
29151
29152         * class.c: add asserts if we are ever going to scribble over memory.
29153         * socket-io.c: not all systems have AF_IRDA defined.
29154
29155 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
29156
29157         * class.c (class_compute_field_layout): do not consider static
29158         fields to compute alignment
29159
29160 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
29161
29162         * appdomain.c (mono_appdomain_get): impl.
29163         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
29164
29165 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
29166
29167         * icall.c: ignore "file://" prefix when loading an assembly.
29168
29169 2002-01-23  Dick Porter  <dick@ximian.com>
29170
29171         * socket-io.c:
29172         * icall.c:
29173         * Makefile.am: Added socket support
29174
29175 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
29176
29177         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
29178         code back.  This should return the assemblies that are loaded by
29179         the runtime on behalf of an application domain. 
29180
29181         The current implementation is still broken, it just returns every
29182         assembly loaded, but until we get real applications domain this
29183         will do.
29184
29185 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
29186
29187         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
29188         AppDomain object.
29189
29190 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
29191
29192         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
29193         the mono_class_from_name lookup.
29194         (ves_icall_get_parameter_info): ditto.
29195         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
29196         method.
29197         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
29198
29199 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
29200
29201         * class.c: load also nested classes on class init.
29202         System.ValueType instance methods gets passed boxed
29203         values, unless methods in derived classed that get a pointer to the
29204         data.
29205         * icall.c: use better name parsing code in GetType().
29206         * image.c, image.h: add mono_image_loaded ().
29207         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
29208         * reflection.c, reflection.h: added mono_reflection_parse_type().
29209
29210 2002-01-22  Veronica De Santis <veron78@interfree.it>
29211
29212         * icall.c : Added mapping of internal calls for Manual and Auto reset events
29213         * threads.c : Added the implementation of internal calls for events
29214         * threads.h : Added prototypes of internal calls for events
29215         
29216 2002-01-21  Radek Doulik  <rodo@ximian.com>
29217
29218         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
29219
29220 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
29221
29222         * class.c (mono_class_init): set min_align to 1 (instead of 0)
29223         (mono_class_value_size): use min_align
29224
29225 2002-01-20  Dick Porter  <dick@ximian.com>
29226
29227         * threads.h:
29228         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
29229         so it compiles on w32.
29230
29231 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
29232
29233         * metadata.c (mono_type_stack_size): impl.
29234
29235         * class.c (mono_class_get_field): impl. memberref token
29236
29237 2002-01-16 Veronica De Santis <veron78@@interfree.it>
29238
29239         * icall.h : Added the internal calls mapping for CreateMutex_internal
29240                     and ReleaseMutex_internal.
29241         * threads.h : Added the prototype of mutexes internal calls.
29242         * threads.c : Added the implementations of mutexes internal calls.
29243
29244 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
29245
29246         * metaparse.h: removed unused file.
29247         * reflection.c, reflection.h: added stream_data_align () function 
29248         to align data in streams and keep stream aligned. Add support for
29249         exception support in method headers.
29250
29251 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
29252
29253         * unicode.c: make iconv_convert () return the number of bytess written
29254         in the output buffer.
29255
29256 2002-01-15  Dick Porter  <dick@ximian.com>
29257         * threads.c: Make the runtime's idea of infinite timeouts coincide
29258         with the class library's
29259
29260         Fix a particularly egregious bug in mono_thread_cleanup(). That
29261         code was so utterly bogus it must have been written on a Monday.
29262
29263 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
29264
29265         * reflection.h: add subtypes field to TypeBuilder.
29266         * reflection.c: encode constants for literal fields.
29267         Handle subtypes. Fix user string token (and add a zero byte)
29268         at the end.
29269         
29270 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
29271
29272         * class.c (mono_class_init): bug fix: assign slot numbers for
29273         abstract methods.
29274
29275 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
29276
29277         * reflection.c: don't try to output a code RVA for abstract methods.
29278         Small fixes for method header format. Output parameter info to the
29279         ParamDef table. Save method overriding info to MethodImpl table.
29280         Fix property support. Allow typedef.extends to be a type in the
29281         building assembly.
29282         * verify.c: fix off-by-one error.
29283
29284 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
29285
29286         * class.c: fix mono_class_from_mono_type () for szarray types.
29287         Remove unused cache check in mono_class_from_type_spec().
29288         * icall.c: *type_from_name () functions handle simple arrays and byref.
29289         * reflection.c: handle byref and szarray types. Handle methods without
29290         body (gets P/Invoke compilation working). Handle types and fields in
29291         get_token ().
29292         * reflection.h: add rank to MonoTypeInfo.
29293
29294 2002-01-10  Dick Porter  <dick@ximian.com>
29295
29296         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
29297         internal calls
29298
29299 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
29300
29301         * icall.c: initialize class in type_from_handle ().
29302         Loop also in parent classes for get_method ().
29303         * reflection.c: properly encode class and valuetype types.
29304         Start on encoding TypeBuilder types. Handle fieldrefs.
29305         Use correct length when registering a user string.
29306         Handle ConstructorBuilder and MonoMethod in get_token ().
29307         Make mono_type_get_object () aware of cached types.
29308         * object.c: back out change to mono_string_new ().
29309
29310 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
29311         * object.c: mono_string_new should return a NULL when the string 
29312         passed in is NULL -- not try to deference it.
29313         
29314 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
29315
29316         * icall.c: hack to make IsSubType work for TypeBuilders.
29317         * reflection.c: emit constructors before methods.
29318         Retrieve param names in mono_param_get_objects().
29319
29320 2002/01/05  Nick Drochak  <ndrochak@gol.com>
29321
29322         * Makefile.am: fix list of headers and sources so automake 1.5
29323         doesn't complain. Removed \# at end of list.
29324
29325 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
29326
29327         * reflection.c: get token for a method ref. Set return type of
29328         constructor to void.
29329         * loader.c: debug message.
29330         * class.c: typo fix.
29331
29332 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
29333
29334         * icall.c: fix array init with rank > 1. FindMembers
29335         loops in parent class as well.
29336         * image.c: do not insert nested types in name cache.
29337         * reflection.c: warning fix.
29338         * reflection.h: add override method (for interface impl).
29339
29340 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
29341
29342         * metadata.c: fix customattr decoding.
29343
29344 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
29345
29346         * rawbuffer.cs: Added native Win32 implementation, avoids using
29347         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
29348
29349 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
29350
29351         * class.c: make the low-level routines handle the cache.
29352
29353 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
29354
29355         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
29356
29357 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
29358
29359         * class.c: fix mono_array_element_size() for objects.
29360         * class.h, class.c: add properties to MonoClass and load them
29361         at init time.
29362         * icall.c: check with isinst() when assigning a value to an array
29363         instead of requiring the classes to match exactly.
29364         Implemented icall for System.Type::GetType().
29365         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
29366         enums. Handle bindingflags when looking for methods and fields.
29367         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
29368         and mono_metadata_methods_from_property().
29369         * reflection.h, reflection.c: added structures for propreties,
29370         parameters and enums. Implemented mono_property_get_object() and
29371         mono_param_get_objects().
29372
29373 2001-12-18  Dick Porter  <dick@ximian.com>
29374
29375         * file-io.c: Use mono_string_to_utf16() instead of
29376         mono_string_chars()
29377
29378         * object.c: Added mono_string_to_utf16(), which copies the non
29379         NULL-terminated MonoString into a new double-null-terminated
29380         buffer.
29381
29382 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
29383
29384         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
29385
29386 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
29387
29388         * file-io.c: raise exceptions if handle is invalid.
29389
29390 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
29391
29392         * assembly.c: yet another check for mscorlib.
29393         * class.c, class.h: load nesting info for classes.
29394         * icall.c: many new functions to support the Reflection classes.
29395         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
29396         * reflection.h, reflection.c: mono_image_create_token(),
29397         mono_assembly_get_object(), mono_type_get_object(),
29398         mono_method_get_object(), mono_field_get_object(): methods to return
29399         objects that parallel the C representation of assemblies, types,
29400         methods, fields.
29401
29402 2001-12-11  Dick Porter  <dick@ximian.com>
29403
29404         * icall.c:
29405         * file-io.c: Internal calls for file IO.
29406
29407 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
29408
29409         * tabledefs.h: missing FileAttributes.
29410         * verify.h, verify.c: use is_valid_string () to simplify and check for
29411         valid strings more correctly. Fix warnings and speeling.
29412         Check more tables: Filed, File, ModuleRef, StandAloneSig.
29413         Check code: branches, maxstack, method calls.
29414
29415 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
29416
29417         * object.c (mono_object_allocate): removed static, so that the jit
29418         can allocate value types.
29419
29420         * icall.c (ves_icall_System_DateTime_GetNow): impl.
29421
29422 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
29423
29424         * class.c: init enum types right away and register the
29425         token->MonoClass map in mono_class_create_from_typedef ().
29426         * verify.h, verify.c: first cut of the verifier.
29427         * pedump.c: add --verify switch to verify metadata tables.
29428         * tabledefs.h: add some missing enums.
29429
29430 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
29431
29432         * class.c (mono_install_runtime_class_init): impl.
29433         (mono_class_init): renamed mono_class_metadata_init to
29434         mono_class_init, also removed the metadata_inited flag
29435
29436         * object.c (mono_object_isinst): use faster algorithm
29437
29438 2001-11-30  Radek Doulik  <rodo@ximian.com>
29439
29440         * mono-endian.h: reverted last change
29441         added function prototypes
29442
29443         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
29444         add mono-endian.c back
29445
29446         * mono-endian.c: returned back, as Paolo pointed out, it's needed
29447         for unaligned access, I've mistaked it with endianess. I am
29448         sorry.
29449         (mono_read16): fix reverted endianess
29450         (mono_read64): ditto
29451         (mono_read32): ditto
29452
29453 2001-11-30  Dick Porter  <dick@ximian.com>
29454
29455         * exception.c: Implement mono_exception_from_name()
29456
29457 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
29458
29459         * metadata.h, metadata.c: remove params_size and locals_size and their
29460         calculation from the metadata code: they are only usefult to the
29461         interp.
29462
29463 2001-11-29  Radek Doulik  <rodo@ximian.com>
29464
29465         * object.c (mono_ldstr): swap bytes here, it's probably not the
29466         best place, but works for me now, I'll redo it once I know mono
29467         better, also note that I add PROT_WRITE and don't reset back, also
29468         note that it's only affects big endians, so x86 should be OK
29469
29470         * mono-endian.h (read16): use just glib macros for both endians
29471
29472         * mono-endian.c: removed as glib macros are used in in
29473         mono-endian.h so we don't need to care about endianess for read
29474         macros as glib does that for us already
29475
29476 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
29477
29478         * class.h, class.h: take minimum alignment into consideration so
29479         that the fields of a class remain aligned also when in an array.
29480
29481 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
29482
29483         * loader.h, loader.c: add mono_method_get_param_names().
29484         * class.c: 0-init class fields.
29485
29486 2001-11-26  Dick Porter  <dick@ximian.com>
29487
29488         * icall.c:
29489         * threads-types.h:
29490         * threads.c: New file that handles System.Threading on all platforms
29491
29492         * object.c: 
29493         * object.h: Remove the synchronisation struct from MonoObject,
29494         replace it with a pointer that gets initialised on demand
29495
29496         * Makefile.am: Replace all the system-specific threading code with
29497         a single file that uses the new wrapper library
29498
29499 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
29500
29501         * class.c, class.h: add mono_install_trampoline() so that the runtime
29502         can register a function to create a trampoline: removes the ugly
29503         requirement that a runtime needed to export arch_create_jit_trampoline.
29504         * object.h, object.c: added mono_install_handler() so that the runtime
29505         can install an handler for exceptions generated in C code (with
29506         mono_raise_exception()). Added C struct for System.Delegate.
29507         * pedump.c: removed arch_create_jit_trampoline.
29508         * reflection.c: some cleanups to allow registering user strings and
29509         later getting a token for methodrefs and fieldrefs before the assembly
29510         is built.
29511         * row-indexes.h: updates and fixes from the new ECMA specs.
29512
29513 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
29514
29515         * class.h, class.c: add enum_basetype field to MonoClass.
29516         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
29517         to get index in the constant table reated to a field, param or
29518         property.
29519         * reflection.h, reflection.c: handle constructors. Set public-key and
29520         version number of the built assembly to 0.
29521         * row-indexes.h: update from new ECMA spec.
29522
29523 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
29524
29525         * class.h, class.c: add a max_interface_id to MonoClass.
29526         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
29527         since it's used to do that. Added mono_type_type_from_obj().
29528         Make GetType() return NULL instead of segfaulting if the type was not
29529         found. Handle simple arrays in assQualifiedName.
29530         * object.h: add a struct to represent an Exception.
29531         * reflection.c: output call convention in method signature.
29532         Add code to support P/Invoke methods and fixed offsets for fields.
29533
29534 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
29535
29536         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
29537         the value.
29538         * icall.c: use mono_array_addr instead of array->vector: fixes the
29539         reflection image writing.
29540         * reflection.c: init call convention byte to 0 in method signature.
29541         Encode the property signature. Don't output property-related methods
29542         twice. Really process the properties for a type (don't cast a field to
29543         a property, my mom always told me that).
29544         Fix 64 bit issues in pointer alignment in a different and more
29545         readable way.
29546
29547 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
29548
29549         * loader.h: Removed type class from MonoDefaults, added monotype
29550
29551         * loader.c: Loaded MonoType, removed loading of Type
29552
29553         * icall.c (my_mono_new_object): Now returns a System.MonoType,
29554         and fills in System.Type._impl with a RuntimeTypeHandle rather
29555         than the actual MonoClass *
29556
29557         (ves_icall_type_from_handle): change from type_class to
29558         monotype_class
29559
29560         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
29561         implemented
29562
29563         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
29564         implemented
29565
29566         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
29567
29568         (ves_icall_System_Reflection_Assembly_GetType): implemented
29569
29570         (ves_icall_System_MonoType_assQualifiedName): implemented
29571
29572         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
29573
29574 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
29575
29576         * assembly.c (mono_assembly_open): Implement a cache for the
29577         assemblies. 
29578
29579         (mono_assembly_close): only destroy the assembly when the last
29580         reference is gone.
29581         
29582 2001-11-09  Dick Porter  <dick@ximian.com>
29583
29584         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
29585
29586 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
29587
29588         * class.c (mono_class_metadata_init): bug fix: compute the right slot
29589
29590 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
29591
29592         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
29593         from Martin Weindel.
29594         * object.h: add mono_string_chars ().
29595
29596 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
29597
29598         * reflection.c (build_compressed_metadata): Eliminates warnings
29599         and uses 64-bit clean code.
29600
29601         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
29602         (mono_type_equal): Change signature to eliminate warnings.
29603
29604 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
29605
29606         * icall.c, loader.c: remove the internalcall array constructors.
29607         Changes to match the new MonoArray structure.
29608         * object.h, object.c: an array object doesn't allocate an extra
29609         vector. Add mono_array_new_full () to create jagged arrays easily.
29610
29611 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
29612
29613         * metadata.h, metadata.c: add mono_metadata_field_info () to
29614         retreive all the info about a field from vairous tables.
29615         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
29616         * class.h, class.c: augment MonoClassField with more info.
29617         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
29618         policy and load a field's RVA if needed.
29619
29620 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
29621
29622         * class.c (mono_class_metadata_init): create a trampoline for all
29623         virtual functions instead of actually compiling them.
29624
29625 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
29626
29627         * class.h, class.c: include name in MonoClassField.
29628         * class.c: fix fundamental type of System.Object and System.String.
29629         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
29630         tokens in ldtoken.
29631         * icall.c: remove internalcalls for the Reflection stuff that is now
29632         done in C# code.
29633         * loader.c: mono_field_from_memberref () implementation.
29634         * mono-endian.c: thinko (s/struct/union/g).
29635         * object.c, object.h: make the mono_string_* prototypes actually use
29636         MonoString instead of MonoObject.
29637         * reflection.c, reflection.h: updates for changes in the reflection
29638         code in corlib: we use C structures that map to the actual C# classes.
29639         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
29640         fat method header if needed and use the info from the ILGenerator for
29641         methods. Handle fields in types. Misc fixes.
29642
29643 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
29644
29645         * class.c (mono_class_metadata_init): bug fix: always allocate
29646         space for static class data
29647
29648 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
29649
29650         * class.c (mono_compute_relative_numbering): use relative
29651         numbering to support fast runtime type checks.
29652
29653 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
29654
29655         * class.c (mono_class_create_from_typeref): added debugging output
29656         to print class name when MonoDummy is returned instead of real class
29657
29658 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
29659
29660         * class.c (mono_class_metadata_init): interface offset table now
29661         contains pointers into the vtable - this is more efficient for the jit
29662
29663 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
29664
29665         * class.c (mono_class_metadata_init): use a temporary vtable (the
29666         old algorithm only worked for the interpreter, but not for the jit)
29667
29668 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
29669
29670         * loader.c (method_from_memberref): use mono_class_get to get the
29671         class of an array instead of using System.Array directly.
29672         (mono_get_method): also add MEMBERREF methods to the method cache
29673         which usefull for arrays.
29674
29675 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
29676
29677         * pedump.c (arch_compile_method): added to compute vtable entry
29678
29679         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
29680         number of interfaces.
29681         
29682         * class.h: merged MonoArrayClass into MonoClass
29683
29684         * class.c (mono_class_create_from_typedef): compute the vtable size and
29685         allocate space to include the vtable inside MonoClass
29686         (mono_class_metadata_init): initialize the vtable
29687
29688 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
29689
29690         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
29691         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
29692         * image.c: endian fixes by Laurent Rioux.
29693         * object.h, object.c: rename MonoStringObject to MonoString and
29694         MonoArrayObject to MonoArray. Change some function names to conform to
29695         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
29696         guint16* as first argument, so don't use char*.
29697         Provide macros to do the interesting things on arrays in a portable way.
29698         * threads-pthread.c: updates for the API changes and #include <sched.h>
29699         (required for sched_yield()).
29700         * icall.c: updates for the API changes above.
29701         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
29702         platforms that need them.
29703
29704 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
29705
29706         * class.c: set the correct type for all the fundamental
29707         type when loading the class.
29708
29709 2001-10-05  Dick Porter  <dick@ximian.com>
29710
29711         * threads-pthread.c (pthread_mutex_timedlock): Simple
29712         compatibility version for C libraries that lack this call.
29713
29714 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
29715
29716         * class.c: MonoTypes stored in MonoClass are stored as
29717         fundamental MonoTypes when the class represents a
29718         fundamental type (System.Int32, ...).
29719         The TypeHandle return by ldtoken is a MonoType*.
29720         * icall.c: ves_icall_get_data_chunk () write out all the
29721         PE/COFF stuff. Implement ves_icall_define_method (),
29722         ves_icall_set_method_body (), ves_icall_type_from_handle ().
29723         * image.c: properly skip unknown streams.
29724         * loader.h, loader.c: add type_class to mono_defaults.
29725         * metadata.c, metadata.h: export compute_size () as
29726         mono_metadata_compute_size () with a better interface.
29727         Typo and C&P fixes.
29728         * pedump.c: don't try to print the entry point RVA if there is no entry point.
29729         * reflection.c, reflection.h: many cleanups, fixes, output method
29730         signatures and headers, typedef and typeref info, compress the metadata
29731         tables, output all the heap streams, cli header etc.
29732         * row-indexes.h: typo fixes.
29733
29734 2001-10-04  Dick Porter  <dick@ximian.com>
29735
29736         * object.h: Add a synchronisation mutex struct to MonoObject
29737
29738         * object.c (mono_new_object): Initialise the object
29739         synchronisation mutexes
29740
29741         * icall.c: System.Threading.Monitor internal calls
29742         
29743         * threads-pthread.h:
29744         * threads-pthread.c: System.Threading.Monitor internal calls
29745
29746         * threads-types.h: New file, includes the system-specific thread
29747         structures
29748         
29749         * threads-pthread-types.h:
29750         * threads-pthread-types.c: New files, handle pthread-specific
29751         synchronisation types
29752
29753         * threads-dummy-types.h: 
29754         * threads-dummy-types.c: New files of dummy support for
29755         thread-specific types
29756
29757         * metadata.c:
29758         * image.c:
29759         * pedump.c: include mono-endian.h not endian.h
29760         
29761         * Makefile.am: More threads files.
29762         Name mono-endian.h not endian.h
29763
29764 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
29765
29766         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
29767         stuff and implement a few more bits.
29768         * icall.c: a field needs to be dereferenced twice. Do not use the same
29769         name for two variables in the same scope.
29770         * image.c, image.h: cleanups.
29771
29772 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
29773
29774         * class.c (mono_class_metadata_init): bug fix: compute the right size
29775
29776 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
29777
29778         * icall.c: implemented some of the Reflection internalcalls.
29779         * image.c, image.h: start writing out the PE/COFF image.
29780         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
29781         that does the reverse than decode_blob_size ().
29782         * object.c: use mono_metadata_encode_value (). Move here
29783         temporary implementation of mono_string_to_utf8 ().
29784         * rawbuffer.c: make malloc_map static.
29785
29786 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
29787
29788         * metadata.c: fix type comparison for arrays.
29789         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
29790         Added a couple of new classes to monodefaults.
29791         * icall.c: added a couple of Reflection-related internalcalls.
29792         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
29793         Added a byval_arg MonoType to MonoClass.
29794
29795 2001-09-28  Dick Porter  <dick@ximian.com>
29796
29797         * icall.c:
29798         * threads-pthread.h: 
29799         * threads-pthread.c: Implemented internal calls for
29800         LocalDataStoreSlot operations.  Applied mutexes around all shared
29801         data.  Reworked the thread creation and Start() operations to
29802         avoid a race condition.
29803         
29804         * threads-dummy.h:
29805         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
29806
29807 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
29808
29809         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
29810
29811 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
29812
29813         * class.c, loader.c: warn and return NULL instead of erroring out.
29814         * icall.c: added System.AppDomain::getCurDomain().
29815         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
29816
29817 2001-09-25  Dick Porter  <dick@ximian.com>
29818
29819         * threads-pthread.h:
29820         * threads-pthread.c: Implemented timed thread joining and added
29821         System.Threading.Thread::Join_internal internal call
29822
29823         * icall.c: Added System.Threading.Thread::Join_internal internal call
29824
29825         * threads-dummy.h:
29826         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
29827
29828 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
29829
29830         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
29831         mono_string_intern () to implement the semantics of the ldstr opcode
29832         and the interning of System.Strings.
29833         * icall.c: provide hooks to make String::IsIntern and String::Intern
29834         internalcalls.
29835
29836 2001-09-23  Dick Porter  <dick@ximian.com>
29837
29838         * threads-dummy.c: 
29839         * threads-dummy.h: New files of dummy threading routines
29840
29841         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
29842         support code based on system specifics
29843
29844         Rename PTHREAD_LIBS to THREAD_LIBS
29845         
29846 2001-09-23  Dick Porter  <dick@ximian.com>
29847
29848         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
29849         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
29850         internal calls.
29851         (mono_thread_init): Set up a Thread object instance to return when
29852         the main thread calls Thread.CurrentThread
29853         (mono_thread_cleanup): Wait for all subthreads to exit
29854
29855         * icall.c: New internal calls for System.Threading.Thread::Sleep
29856         (including Schedule) and CurrentThread
29857
29858         * threads.h: New file, to insulate thread-specific stuff from the
29859         rest of the code
29860
29861 2001-09-21  Dick Porter  <dick@ximian.com>
29862
29863         * threads-pthread.h: 
29864         * threads-pthread.c: New file, for handling pthreads-style
29865         threading support.  Start() now starts a new thread and executes
29866         the ThreadStart delegate instance.
29867
29868         * icall.c: Added the internalcall for
29869         System.Threading.Thread::Start_internal
29870
29871         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
29872
29873 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
29874
29875         * loader.c: work around the different signatures for delegates
29876         constructors csc generates in compiled code vs the ones compiled in mscorlib.
29877
29878 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
29879
29880         * class.h, class.c: add mono_class_get_field_from_name ().
29881         * *: Fix C comments and other ANSI C issues.
29882
29883 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
29884
29885         * endian.h, assembly.c: fix some endianness issues.
29886
29887 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
29888
29889         * loader.h, load.c: add delegate_class to mono_defaults.
29890         Handle runtime provided methods in mono_get_method ().
29891
29892 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
29893
29894         * loader.c (mono_get_method): use pinvoke for internal call
29895
29896         * icall.c: use pinvoke for internal call
29897
29898         * loader.c (method_from_memberref): set the method name
29899
29900 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
29901
29902         * metadata.c: help the compiler generate better code for
29903         mono_class_from_mono_type ().
29904
29905 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
29906
29907         * class.c (mono_class_metadata_init): delayed computing of the
29908         class size to mono_class_metadata_init ()
29909
29910 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
29911
29912         * class.c, class.h: add an interfaces member to MonoClass.
29913         * image.c, image.h: add assembly_name field to MonoImage
29914         from the assembly table.
29915         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
29916
29917 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
29918
29919         * class.c: Handle Array in mono_class_from_mono_type ().
29920         * metadata.c, pedump.c: some endian fixes.
29921
29922 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
29923
29924         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
29925         * metadata.c: fix small problem introduced with the latest commit.
29926
29927 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
29928
29929         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
29930         We don't need a MonoMetadata pointer anymore to compare signatures in
29931         mono_metadata_signature_equal (), update callers.
29932         Reduced memory usage an number of allocations for MonoMethodHeader and
29933         MonoMethodSignature.
29934
29935 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
29936
29937         * metadata.c: added compare for szarray.
29938
29939 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
29940
29941         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
29942         and add a couple more types to it and mono_defaults. Give an hint on
29943         classes that need implementing in our corlib and are referenced
29944         in mscorlib.
29945
29946 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
29947
29948         * class.h, class.c: keep track if a class is also an Enum.
29949         * loader.c: Implement a couple more types for use in libffi
29950         marshalling. Gives better diagnostics when failing to dlopen
29951         a library. Set method->klass for P/Invoke methods, too.
29952
29953 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
29954
29955         * class.c, class.h: add a MonoType this_arg to MonoClass that
29956         represents a pointer to an object of the class' type that
29957         can be used by the interpreter and later the type cache.
29958         Add best guess alignment info for valuetype objects.
29959
29960 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
29961
29962         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
29963         into MonoType: one less level of indirection and allocation and
29964         simplifies quite a bit of code. Added cache for MonoTypes that are
29965         used frequently, so that we don't need to allocate them all the time.
29966
29967 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
29968
29969         * class.c (mono_class_create_from_typedef): System.Enum is also a
29970         value type, although it does not derive from System.ValueType
29971         (maybe a bug in the ms compiler?)
29972
29973         * metadata.c (mono_type_size): return the right size for value types
29974
29975         * loader.c (mono_get_method): only initialize method header if not abstract
29976
29977         * class.c (mono_class_from_mono_type): use mono_default values. 
29978
29979 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
29980
29981         * *: use MonoClass pointers instead of <type_tokens>
29982         
29983         * class.h: new flag: metadata_inited.
29984
29985         * class.c (mono_class_metadata_init): impl.
29986         (mono_class_instance_size): impl.
29987         (mono_class_data_size): impl.
29988
29989 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
29990
29991         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
29992         MonoClass now has the name and name_space fields. 
29993         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
29994         mono_get_method () takes and optional MonoClass as argument.
29995         Removed mono_typedef_from_name() and added mono_class_token_from_name()
29996         instead that takes advantage of a map from class names to typedef
29997         tokens in MonoImage.
29998
29999 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
30000
30001         * metadata.c: zero is not a valid alignment boundary.
30002         Merge MONO_TYPE_VOID in default decoding code.
30003
30004 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
30005
30006         * image.h: merged MonoMetadata into MonoImage
30007
30008         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
30009         identify the type of elements.
30010
30011 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
30012
30013         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
30014         * cil-coff.h: split MonoMSDOSHeader and add size info.
30015         * image.c: add some consistency checks.
30016         * metadata.c: fix row size computation: one programmer
30017         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
30018         add explanation for the locator routine.
30019         Fix decoding of size in method header.
30020         
30021 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
30022
30023         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
30024         (g_concat_dir_and_file): Bring g_concat_dir_and_file
30025         function from gnome-libs.  This uses the right path separator
30026         based on the OS, and also works around a bug in some systems where
30027         a double slash is not allowed. 
30028         (default_assembly_name_resolver): Use g_concat_dir_and_file
30029         (mono_assembly_open): ditto.
30030
30031 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
30032
30033         * metadata.c (mono_metadata_signature_equal): impl.
30034
30035         * *: void is now a realy MonoType (instead of using NULL)
30036         
30037         * metadata.c (do_mono_metadata_parse_type): use
30038         mono_metadata_parse_type to parse void value.
30039
30040 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
30041
30042         * metadata.c, metadata.h: in the signature and method header store
30043         only the space required for holding the loca vars and incoming arguments.
30044
30045 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
30046
30047         * metadata.c (do_mono_metadata_parse_type): treat void like any
30048         other type (instead of assigning NULL);
30049
30050 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
30051
30052         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
30053
30054 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
30055
30056         * image.c (do_mono_image_open): added a cache for arrays.
30057
30058 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
30059
30060         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
30061         decode a single column from a row in a metadata table and changes
30062         to take advantage of it in the typedef locator (gives a nice speed up).
30063         Store offset info for function params.
30064
30065 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
30066
30067         * image.h (MONO_IMAGE_IS_CORLIB): removed 
30068
30069 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
30070
30071         * assembly.c: how could mono_assembly_close () had ever worked?
30072         * metadata.c, metadata.h: provide offset info for local vars.
30073         Implement mono_type_size () to take care of alignment as well
30074         as size (it was mono_field_type_size in cli/class.c before).
30075
30076 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
30077
30078         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
30079
30080         * assembly.h (CORLIB_NAME): set to corlib.dll
30081
30082         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
30083
30084 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
30085
30086         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
30087         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
30088         tokentype.h: massive namespace cleanup.
30089
30090 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
30091
30092         * metadata.h, metadata.c: decode exception clauses when parsing method header.
30093
30094 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
30095
30096         * metadata.c (mono_metadata_free_type): added check for type !=
30097         NULL (void) before calling mono_metadata_free_type()
30098
30099 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
30100
30101         * metadata.h, row_indexes.h: added header with enumerations to use
30102         to index in the columns from tables in metadata and to decode coded
30103         tokens: we should start using this instead of embedding magic numbers
30104         all over the code.
30105
30106 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
30107
30108         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
30109         Move metadata_t info from cli_image_info_t to MonoImage, where
30110         it's easily accessible. Changed all the uses accordingly.
30111         Added the method and class caches to MonoImage.
30112         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
30113         and mono_metadata_decode_value () signature to be more consistent
30114         with the other parse functions (and simplify code). Taken advantage
30115         of zero-length array allocation with GCC. Removed reduntant (and
30116         wrong) MonoFieldType struct and use MonoParam instead. Changed
30117         mono_metadata_parse_field_type () to use common code for parsing.
30118         Added mono_metadata_typedef_from_field () and
30119         mono_metadata_typedef_from_method () to lookup a typedef index from a
30120         field or method token.
30121         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
30122
30123 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
30124
30125         * metadata.c (mono_metadata_parse_field_type): Implement. 
30126         (do_mono_metadata_parse_type): Split engine from
30127         mono_metadata_parse_type, so that we can create smaller structures
30128         for things that just have one pointer to the MonoType (look at
30129         the MonoFieldType)
30130
30131 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
30132
30133         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
30134         as Jan Gray found out, it is incorrect. 
30135
30136 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
30137
30138         * assembly.c: Implement asssembly loading.  This loads an image
30139         and loads all the referenced assemblies.  Come to think of it, we
30140         could always do lazy loading of the assemblies. 
30141
30142         * image.c (mono_image_open): Keep loaded images in a hashtable.
30143
30144         * image.h (MonoImage): Add reference count.
30145
30146 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
30147
30148         * assembly.c (mono_assembly_open): Keep track of the file name in
30149         case the assembly has no ASSEMBLY table.
30150
30151         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
30152         from get.c here.
30153
30154 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
30155
30156         * metadata.c, metadata.h: decode local vars in method header
30157         parse function. Change callers accordingly.
30158
30159 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
30160
30161         * metadata.h, cil-coff.h: protect against multiple inclusion.
30162         Added some new structures to hold information decoded from metadata:
30163         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
30164         and relevant decoding/free functions.
30165         * metadata.c: implement decoding functions. Add warning for out of bounds
30166         index in mono_metadata_locate(). Implement mono_get_method () to retreive
30167         all the info about a method signature and invocation. Remove check on
30168         uninitialized local var in parse_mh() and fix memory leak.
30169
30170 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
30171
30172         * metadata.h: More macros.
30173
30174         * tokentype.h: New file.
30175
30176 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
30177
30178         * assembly.c: added a consistency check and initialize
30179         some structures with g_new0().
30180         * metadata.c: fixed a couple more bugs in table size computation
30181         and add other checks for out-of bound access to metadata.
30182
30183 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
30184
30185         * metatada.c: fix bugs computing table sizes. Spew a
30186         warning when index in string heap is out of bounds.
30187
30188 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
30189
30190         * metadata.h: Add a couple of macros to manipulate tokens. 
30191
30192 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
30193
30194         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
30195         cli_section_tables).
30196
30197 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
30198
30199         * metadata.c (mono_metadata_user_string): New function, provides
30200         access to the UserString heap. 
30201
30202 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
30203
30204         * metadata.c: Add inline documentation.
30205
30206 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
30207
30208         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
30209         files. 
30210
30211 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
30212
30213         * typeattr.h: New file, TypeAttribute flags. 
30214
30215 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
30216
30217         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
30218         mono_assembly_ensure_section): Section loading code.
30219         (load_section_tables): Load the sections.
30220
30221         * mono/metadata/metadata.c (mono_metadata_locate_token,
30222         mono_metadata_locate): Functions to locate the information
30223         definition given a token or a table and an index.
30224         (mono_metadata_compute_table_bases): New.
30225         (compute_size): New function to compute the sizes of the various
30226         tables.
30227
30228         * mono/metadata/metadata.h: Finish listing the different index
30229         types. 
30230
30231         * mono/metadata/pedump.c: Improve to dump new information.
30232
30233 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
30234
30235         * mono/metadata/metadata.c: Entered all the tables matching
30236         Beta2. 
30237
30238         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
30239
30240
30241
30242