2009-06-18 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / ChangeLog
1 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * metadata-verify.c: Finished with method header verification.
4
5 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
6
7         * metadata-verify.c: Added more header verification code.
8         Now only EH clauses are missing.
9
10 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
11
12         * marshal.c (get_runtime_invoke_type): Don't share primitive types
13         for return values.
14
15 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
16
17         * metadata-verify.c: Initial method header verification.
18
19 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
20
21         * metadata-verify.c (verify_import_table): The IAT contents
22         might end been patched by the windows DL when running with
23         coree enabled.
24
25 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
26
27         * class.c (mono_class_from_typeref): If the enclosing type is not
28         found return null instead of crashing. Fixes #508487.
29
30 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
31
32         * normalization-tables.h : updated to the latest unicode charcter
33           data.
34         * appdomain.c : bump corlib version.
35
36 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
37
38         * class.c (mono_class_from_name): Fix support for assembly references
39         in the EXPORTEDTYPE table. Fixes #511704.
40
41 2009-06-13  Geoff Norton  <gnorton@novell.com>
42
43         * domain.c: Ensure that mono_domain_assembly_open actually opens the
44         assembly in the target domain.
45
46 2009-06-12  Robert Jordan  <robertj@gmx.net>
47
48         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
49         because "this" of the managed signature has become an
50         ordinary parameter in the unmanaged signature.
51
52 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
53
54         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
55         field for owner-less generic containers.
56
57         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
58         image field of the owner-less generic containers created here.
59
60         * metadata.c (mono_metadata_load_generic_params): Ditto, the
61         contain is ownerless until the caller sets its owner.
62
63         * metadata.c (type_in_image): Handle owner-less generic containers
64         correctly.
65         
66 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
67
68         * image.c (mono_image_close): Support debug_assembly_unload for
69         dynamic images too.
70
71 2009-06-11 AndrĂ©s G. Aragoneses  <aaragoneses@novell.com>
72
73         * class.c: Fix some typos in comments.
74
75 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
76
77         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
78
79         * threads.c (mono_thread_execute_interruption): Avoid creating the
80         abort exception object while holding the synch_cs lock.
81
82 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
83
84         * metadata-verify.c: Verify basic cattr content.
85
86 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
87
88         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
89         nested types.
90         
91         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
92         support for nested types. Fixes #511704.
93
94 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
95
96         * metadata-verify.c: Verify methodspec signatures.
97
98 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
99
100         * metadata-verify.c: Verify typespec signatures.
101
102 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
103
104         * metadata.c (free_inflated_method): Call 
105         mono_marshal_free_inflated_wrappers (), which was missed earlier.
106
107 2009-06-08  Miguel de Icaza  <miguel@novell.com>
108
109         * mono-config.c: Small change to report the PPC64/ILP32 model.
110
111 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
112
113         * metadata-verify.c (parse_type): Check szarray.
114
115 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * metadata-verify.c (parse_type): Check fnptr.
118
119 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
120
121         * metadata-verify.c (parse_type): Check generic instances.
122
123 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
124
125         * metadata-verify.c (parse_type): Check array shape.
126
127 2009-06-05  Robert Jordan  <robertj@gmx.net>
128
129         * class.c (mono_class_create_from_typedef): Check only for
130         mscorlib's System.Array.
131
132 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
133
134         * metadata-verify.c (parse_type): Check pointer, class/valuetype
135         and generic params. 
136
137         * metadata-verify.c (parse_field): Check the signature.
138
139 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * metadata-verify.c: Implement locals signature check.
142
143 2009-06-04  Marek Safar  <marek.safar@gmail.com>
144
145         * domain.c: Add .NET 4.0 Beta 1 version.
146
147 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
148
149         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
150           For QueryInterface on CCWs consider the base class
151           interfaces as well.
152
153         Code is contributed under MIT/X11 license.
154
155 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
156
157         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
158
159         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
160         used.
161
162         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
163         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
164
165         * generic-sharing.c (inflate_other_data): Ditto.
166         
167 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
168
169         * metadata-verify.c: Implement property signature check.
170
171 2009-06-04  Mark Probst  <mark.probst@gmail.com>
172
173         * sgen-gc.h: Register saving support for PPC.
174
175 2009-06-04  Mark Probst  <mark.probst@gmail.com>
176
177         * sgen-gc.c: Fixed a pthread TLS screwup.
178
179 2009-06-04  Mark Probst  <mark.probst@gmail.com>
180
181         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
182         supported.
183
184 2009-06-04  Mark Probst  <mark.probst@gmail.com>
185
186         * sgen-gc.c: Disable TLA and managed allocation if the __thread
187         keyword is not supported.
188
189 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
190
191         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
192         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
193         the inflated method is freed. Fixes #508389.
194
195         The code is contributed under the MIT/X11 license.
196         
197 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
198
199         * marshal.c (get_wrapper_target_class): New helper function.
200         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
201         the <Module> class of the image. Fixes #509049.
202
203 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
204
205         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
206         Check if the thread was interrupted and proccess it straight away.
207         Makes abortion much more responsive.
208
209 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
210
211         * threads.c (mono_thread_execute_interruption): Use atomic cas with
212         MonoThread::interruption_requested to match it's counterpart.
213
214         Fixes a hang in abort-stress-1 on a 2 core x86.
215
216         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
217         Fix warning.
218
219 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
220
221         Change MonoImage::name_cache to be protected by the image lock
222         instead of the loader lock.
223
224         * appdomain.c (deregister_reflection_info_roots): Protect access
225         to name_cache.
226
227         * class.c (mono_image_init_name_cache): Change from the loader lock
228         to the image lock. Check if the cache wasn't already created.
229
230         * class.c: Change from the loader to the image lock.
231
232         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
233         the code to hold the image lock while iterating over name_cache and
234         not go into mono_array_new holding it.
235
236         * metadata-internals.h: Add a comment about this change.
237
238 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
239
240         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
241         Under the 2.0 profile raise the loader error.
242
243         Fixes #508532.
244
245 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
246
247         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
248         of ldind opcode for generic instances so we don't fail for direct wrappers.
249         This only affect direct calls.
250
251 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
252
253         * reflection.c (create_dynamic_mono_image): Fix warnings.
254
255         * generic-sharing.c (other_info_equal): Ditto.
256         
257 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
258
259         * metadata-verify.c: Implement field signature check.
260
261 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * metadata-verify.c: Implement standalone signature check.
264
265 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * metadata-verify.c: Implement methodref signature check.
268
269 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
270
271         * object-internals.h (MonoRuntimeCallbacks): New structure containing
272         callbacks supplied by the runtime.
273
274         * object.c (mono_install_callbacks): New internal function to install
275         the callbacks.
276
277         * object.c (mono_create_ftnptr): Move the implementation of this to
278         mini/.
279
280         * object.c (mono_get_addr_from_ftnptr): Ditto.  
281
282 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
283
284         * metadata-verify.c (parse_return_type): Proper byref check.
285         * metadata-verify.c (is_valid_method_signature): Check for zero arity
286         generic signatures and method params.
287
288 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
289
290         * metadata-verify.c (decode_signature_header): Fix bounds check.
291
292         * metadata-verify.c (parse_custom_mods): Check custom mods.
293
294         * metadata-verify.c (parse_type): Do initial basic verification
295         of valid values.
296         
297         * metadata-verify.c (is_valid_method_signature): Parse the generic
298         param count.
299
300 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
301
302         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
303         discarded based on their most specific definition so we set the method_slots
304         array before checking if the method is acceptable or not.
305
306         Fixes #506757.
307
308 2009-05-26  Mark Probst  <mark.probst@gmail.com>
309
310         * icall.c: Free the old array when resizing a mono_ptr_array.
311
312 2009-05-26  Mark Probst  <mark.probst@gmail.com>
313
314         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
315         for the hashes whose keys are managed objects.
316
317 2009-05-26  Mark Probst  <mark.probst@gmail.com>
318
319         * object-internals.h, threads.c: Set the execution context on
320         thread start here, not in corlib.
321
322         * appdomain.c: Bump corlib version.
323
324 2009-05-27  Martin Baulig  <martin@ximian.com>
325
326         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
327         if `_mono_debug_using_mono_debugger' is set to make things work
328         properly when embedding Mono.
329
330 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
331
332         * class.c (mono_class_setup_fields): Don't mark simd types as having
333         16 bytes alignment as the whole runtime doesn't support.
334
335 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
336
337         * metadata-verify.c (safe_read): Use endian safe read macros.
338
339 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
340
341         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
342         it is read-only when using full aot.
343
344 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
345
346         * metadata-verify.c (is_valid_method_signature): Verify parts
347         of the return type. Provide an error message in case of failure.
348
349 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
350
351         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
352
353 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
354
355         * metadata-verify.c: Include the size prefix in the bounds check.
356
357 2009-05-22  Miguel de Icaza  <miguel@novell.com>
358
359         * icall.c: Remove warnings.
360
361         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
362         prevent auto-detection based on GCC defines.
363
364         Add PS3
365
366         * metadata-verify.c: Do not include signal.h
367
368         * generic-sharing.c, marshal.c: Add returns to avoid some warning
369         messages.  Not sure why the g_assert_not_reached is not enough to
370         quiet the compiler.
371         
372
373         * appdomain.c: Remove code that is not used when
374         DISABLE_SHADOW_COPY is set.
375
376         * image.c: use g_getenv
377
378 2009-05-21  Miguel de Icaza  <miguel@novell.com>
379
380         * reflection.c: Remove code that it not used with
381         DISABLE_REFLECTION_EMIT is defined.
382
383 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
384
385         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
386         invoke wrappers.
387
388 2009-05-20  Miguel de Icaza  <miguel@novell.com>
389
390         * socket-io.c
391         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
392         the ifdef here and instead put that on io-layer
393
394 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
395
396         * metadata-verify.c: Verify the generic param constraint table.
397
398 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
399
400         * metadata-verify.c (verify_generic_param_table): Fix
401         thinko on the valid flags bits for generic params.
402
403 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
404
405         * metadata-verify.c: Verify the methodspec table.
406
407 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
408
409         * metadata-verify.c: Verify the generic param table.
410
411 2009-05-19  Mark Probst  <mark.probst@gmail.com>
412
413         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
414
415 2009-05-19  Mark Probst  <mark.probst@gmail.com>
416
417         * sgen-gc.c: Use generation enum more consistently and use the
418         correct generation in mono_gc_register_for_finalization().
419
420 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
421
422         * metadata-verify.c: Verify the nested class table.
423
424 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
425
426         * metadata-verify.c: Verify the manifest resource table.
427
428 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
429
430         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
431
432 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
433
434         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
435         wrappers, this is now done in the JIT.
436         
437         * class.c (mono_set_generic_sharing_supported): New internal function.
438         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
439
440 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
441
442         * metadata-verify.c: Verify the exported type table.
443
444 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
445
446         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
447
448 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
449
450         * metadata-verify.c: Verify the file table.
451
452 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
453
454         * metadata-verify.c (verify_assembly_table): Fix an error message.
455
456         * metadata-verify.c: Verify the assemblyref table.
457
458 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
459
460         * metadata-verify.c (verify_assembly_table): Fix the valid
461         bits mask for flags.
462
463 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
464
465         * debug-helpers.c (mono_method_full_name): Print generic parameters of
466         generic methods as well.
467
468 2009-05-15  Geoff Norton  <gnorton@novell.com>
469
470         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
471         use-case and is significantly more performant than the wapi layer.
472
473 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * metadata-verify.c: Verify the assembly table.
476
477 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
478
479         * metadata-verify.c: Fix rows limit check.
480
481 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
482
483         * metadata-verify.c: Verify the fieldrva table.
484
485 2009-05-13  Mark Probst  <mark.probst@gmail.com>
486
487         * sgen.c: Speed up weak links and finalizers by grouping them by
488         generation.
489
490 2009-05-13  Mark Probst  <mark.probst@gmail.com>
491
492         * marshal.c (delegate_hash_table_add): When overwriting an entry,
493         free the old GCHandle (only applies to SGen).
494
495 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
496
497         * loader.c (mono_get_method_from_token): Avoid the expensive call to
498         mono_metadata_load_generic_params () for non-generic methods.
499
500 2009-05-12  Mark Probst  <mark.probst@gmail.com>
501
502         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
503         New function for returning a monitor's weak link if it has one.
504
505         * sgen-gc.c: Remove an object's monitor's weak link (if it has
506         one) when clearing a domain.  These can still be around because
507         the object might not have been collected.
508
509 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
510
511         * gc.c: Fix a warning.
512
513 2009-05-12  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
514
515         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
516         prevous wait that resulted in a deadlock on Windows when initializing
517         the runtime form DllMain. Also results in improved startup time.
518         (finalizer_thread): Get rid of thread_started_event.
519         * threads.c, threads-types.h (mono_thread_create_internal): Return the
520         resulting MonoThread.
521
522         Contributed under MIT/X11 license.
523
524 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
525
526         * metadata-verify.c: Verify the implmap table.
527         Don't require that #US and #Strings be present.
528
529 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
530
531         * security-core-clr.c: Delegate checks are done at creation time,
532         not a invocation time. Fix exception for Telerik Silverlight demo
533
534 2009-05-11  Mark Probst  <mark.probst@gmail.com>
535
536         * sgen-gc.c (need_remove_object_for_domain): Remove the special
537         case for the Thread class.
538
539         * threads.c: Do clean-up of abort exception/state in
540         thread_cleanup() instead of Thread.free_internal().  Also clean up
541         current_appcontext.  The reason we have to do that is because
542         those references might point into another domain and if that
543         domain is unloaded before the thread is finalized, they point to
544         invalid data.
545
546 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
547
548         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
549         stub signatures.
550         
551         Contributed unter MIT/X11 license.
552
553 2009-05-09  Miguel de Icaza  <miguel@novell.com>
554
555         * verify.c, metadata-verifier.c: Add support for disabling the
556         verifier in some builds.
557
558         [ Sorry, my previous commit accidentally commited some work in
559         progress ]
560
561 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
562
563         * class.c (mono_class_setup_fields): Set class->field.first for
564         generic instances.
565
566 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
567
568         * metadata-verify.c: Verify the typespec table.
569
570 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
571
572         * metadata-verify.c: Verify the module table.
573
574 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
575
576         * metadata-verify.c: Verify the methodimpl table.
577
578 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * metadata-verify.c: Verify the property table.
581
582 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
583
584         * debug-helpers.c (mono_method_desc_match): Add support for generic
585         glob patterns.
586
587 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
588
589         * metadata-verify.c: Verify the propertymap table.
590
591 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * metadata-verify.c: Verify the event table.
594
595         * metadata-verify.c (search_sorted_table): Fix offset
596         calculation.
597
598 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
599
600         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
601
602 2009-05-01  Mark Probst  <mark.probst@gmail.com>
603
604         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
605         because mono_delegate_free_ftnptr() needs it.
606
607 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
608
609         * metadata-verify.c: Verify the eventmap table.
610
611 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * metadata-verify.c: Verify the standalonesig table.
614
615 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
616
617         * metadata-verify.c: Verify the field layout table.
618
619 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * class.c (mono_type_get_name_recurse): Don't crash
622         for ownerless generic params.
623
624         * debug-helpers.c (mono_type_get_desc): Correct the format
625         for ownerless generic params.
626
627 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
628
629         * metadata-verify.c: Verify the class layout table.
630
631 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
632
633         * metadata-verify.c: Verify the decl security table.
634
635 2009-04-30  Mark Probst  <mark.probst@gmail.com>
636
637         * domain.c (mono_domain_set_internal_with_options): Don't do
638         anything if the old domain is the same as the old one.  Fixes
639         #499326.
640
641 2009-04-30  Mark Probst  <mark.probst@gmail.com>
642
643         * appdomain.c: Deregister the reflection_info roots when unloading
644         a domain.
645
646         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
647         memory allocated by a domain and frees its disappearing links.
648
649         * boehm-gc.c, null-gc.c: Empty implementation of
650         mono_gc_clear_domain().
651
652 2009-04-30  Mark Probst  <mark.probst@gmail.com>
653
654         * appdomain.c (clear_cached_vtable): Free the static fields memory
655         block.
656
657 2009-04-30  Mark Probst  <mark.probst@gmail.com>
658
659         * gc.c: Set the correct domain when invoking finalizers.
660
661         * appdomain.c: Set the correct domain when creating threads.
662
663 2009-04-30  Mark Probst  <mark.probst@gmail.com>
664
665         * sgen-gc.c: Fix skip size for vectors.
666
667 2009-05-03  Martin Baulig  <martin@ximian.com>
668
669         * mono-debug-debugger.c
670         (mono_debugger_check_breakpoints): Check class init handlers even
671         if we don't have any method load handers.
672
673 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
674
675         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
676         returning refonly assemblies if refonly is FALSE. Fixes #499013.
677
678 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
679
680         * metadata-verify.c: Verify the field marshal table.
681
682 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
683
684         * metadata-verify.c: Verify the custom attribute table.
685
686 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
687
688         * metadata-verify.c: Verify the constant table.
689
690 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * metadata-verify.c: Verify the memberef table.
693
694 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
695
696         * metadata-verify.c (get_coded_index_token): Remove
697         dead argument.
698
699 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
700
701         * metadata-verify.c: Verify the interfaceimpl table.
702
703 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
704
705         * verify.c: Improve error message.
706
707         * debug-helpers.c (mono_type_get_desc): Harden the code that
708         deals with VAR and MVAR.
709
710 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
711
712         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
713         part of #498692.
714
715 2009-04-23 Tom Hindle <tom_hindle@sil.org>
716
717         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
718         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
719
720 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
721
722         * security-core-clr.c: Avoid redundant checks for platform code, 
723         e.g. check for method and for class (very common) and check
724         for class and outer class (less common)...
725
726 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
727
728         * reflection.c: Avoid returning random cattrs for synthetic methods.
729         Fixes #498545.
730
731 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
732
733         * assembly.c: assemblies in the GAC should never be shadow-copied.
734
735 2009-04-26  Mark Probst  <mark.probst@gmail.com>
736
737         * domain.c, domain-internals.h: Disable
738         track_resurrection_{objects,handles}_hash in MonoDomain if using
739         SGen.
740
741 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
742
743         * metadata-verify.c: Verify the param table.
744
745 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * metadata-verify.c (verify_typedef_table): Range check FieldList and
748         MethodList.
749
750         * metadata-verify.c (verify_method_table): Proper check the ParamList
751         field.
752
753 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
754
755         * metadata-verify.c (verify_method_table): Check for runtime
756         implemented functions such as delegate .ctors. Remove spurious
757         printf.
758         
759 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
760
761         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
762
763 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
764
765         Don't allocate MonoGenericInfo for ownerless generic params.
766         * class-internals.h (MonoGenericParam::info): Move field to ...
767         (MonoGenericParamFull): ... this.  New struct.
768         (MonoGenericContainer::type_params): Change type to
769         MonoGenericParamFull.
770         (MonoGenericParam, MonoGenericContainer): Update accessors.
771         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
772         'info' field for ownerless generic param.
773         (mono_metadata_load_generic_params): Update to changes.
774         * reflection.c (mono_reflection_create_generic_class): Likewise.
775         (reflection_methodbuilder_to_mono_method): Likewise.
776         (mono_reflection_initialize_generic_parameter): Likewise.
777
778 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
779
780         Don't use MonoGenericParamInfo for ownerless generic params.
781         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
782         use ParamInfo class at all.
783         (mono_class_from_generic_parameter): Use them.
784         (make_generic_param_class): Fix a couple of instances where 'pinfo
785         == NULL' wasn't handle.
786
787 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
788
789         * class.c (make_generic_param_class): Carve out of ...
790         (mono_class_from_generic_parameter): ... here.
791
792 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
793
794         Simplify mono_class_from_generic_parameter
795         * class-internals.h (MonoGenericParamInfo::token): New field.
796         * metadata.c (mono_metadata_load_generic_params): Initialize it
797         from metadata.
798         * class.c (mono_class_from_generic_parameter): Use it instead of
799         searching through metadata.
800
801 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * metadata-verify.c: Add verification of the method table.
804
805 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
806
807         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
808         Delegate::Invoke optimization.
809
810 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
811
812         * appdomain.c (mono_domain_create_appdomain_internal): Free the
813         string returned by get_shadow_assembly_location_base.
814
815         * appdomain.c (get_shadow_assembly_location_base): Add a comment
816         about caller's ownership.
817
818 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
819
820         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
821         reflection memory on domain unload.
822
823         * domain.c (mono_domain_free): Don't free refobject_hash, let the
824         reflection cleanup code do it.
825
826         * domain-internals.h: Add mono_reflection_cleanup_domain.
827
828         This fixes a memory leak for managed mirrors of reflection objects
829         on domain unload. 
830
831 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
832
833         * metadata-verify.c: Implement more verification of the field table.
834
835 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
836
837         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
838         doesn't try to parse the input assembly, which can be broken.
839
840 2009-04-23  Mark Probst  <mark.probst@gmail.com>
841
842         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
843         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
844         by using the lowest bit in the link to store whether the link is
845         tracked.  Move the track_resurrection hashes into boehm-gc.c.
846
847 2009-04-22  Miguel de Icaza  <miguel@novell.com>
848
849         * Makefile.am: Split the console support in platform specific code
850         and put together a framework for making this easy in the future so
851         that we can start splitting code instead of having a mess of PLATFORM_WIN32
852
853 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
854
855         * pedump.c: Fix a warning.
856
857 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
858
859         * verify.c (mono_delegate_type_equal): Compare valuetypes using
860         mono_class_from_mono_type to avoid bad interactions with the dual representation
861         of the generic type definition.
862
863 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
864
865         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
866         get the MonoClass for the call context type as it might be a generic
867         instance.
868
869         Fixes #491483.
870
871 2009-04-21  Mark Probst  <mark.probst@gmail.com>
872
873         * object-internals.h: The Thread object has no execution_context
874         member anymore.
875
876         * threads.c, threadpool.c, threads-types.h: Accessor functions for
877         the execution context.
878
879         * appdomain.c: Bump corlib version.
880
881 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
882
883         * verify.c (do_newobj): Improve error message.
884
885 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
888         is nested in the filter block.
889
890         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
891         block is not fully nested.
892
893         Fixes #495656.
894
895 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
896
897         * verify.c (verify_type_compatibility_full): Compare MonoClass and
898         not MonoType to check for equality of valuetypes as the generic type
899         definition allows for two different encodings: the generic type definition
900         class or a generic instance over the GTD arguments.
901
902         Fixes #496175.
903
904 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
905
906         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
907
908         * verify.c (do_initobj): Improve error message.
909
910 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
911
912         * metadata-verify.c: Enable pe verification as the issue with #496453
913         is that the authenticode data directory have a different unspecified
914         format. Ignore it for now.
915
916         * pedump.c: Run the metadata verifier together with the IL verifier.
917
918         Fixes ##496453.
919
920 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
921
922         * metadata-verify.c: Temporarily disable pe verification due to #496453.
923
924 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
925
926         * class.c (can_access_type): Check visibility against
927         the element type for pointers and arrays.
928
929         Fixes #496150.
930
931 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
932
933         * metadata-verify.c: Fix cli and table verification to use information
934         from the MonoImage. A lot of duplicated code got killed.
935
936 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
937
938
939         This patch starts to integrate the metadata verifier with the runtime code.
940
941         This patch causes major regression in functionality for the metadata verifier
942         as cli and table verification are disabled since they require to be ported to
943         use MonoImage information.
944
945         * image.c (do_mono_image_load): Split the code in this function
946         into mono_image_load_pe_data and mono_image_load_cli_data.
947         Add     care_about_pecoff parameter to not load pecoff data.
948         Call into the metadata verifier for pecoff and cli verification.
949
950         * image.c (mono_image_open_raw): New function that doesn't perform
951         any parsing of the image contents.
952         
953         The reason for the 3 new functions is to give pedump better control
954         into the interaction with the verifier.
955
956         * metadata-internals.h: Add new functions from image.c as part of the
957         internal mono API.
958
959         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
960         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
961         to make those functions work together with the runtime.
962
963         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
964         true if the image needs to be verified.
965
966         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
967
968         * pedump.c: Use new metadata verifier API.
969
970 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
971
972         * object.c (mono_install_vtable_trampoline): Make this receive a
973         trampoline creation function instead of trampoline, allowing the JIT
974         to use a different trampoline for each vtable.
975
976 2009-04-18  Mark Probst  <mark.probst@gmail.com>
977
978         * object.c (mono_raise_exception): Don't reset the thread abort
979         exception state here.
980
981 2009-04-18  Mark Probst  <mark.probst@gmail.com>
982
983         * icall-def.h: New icall for getting the thread abort exception
984         state for a thread.
985
986         * object.c, thread.c, object-internals.h: A thread's abort
987         exception state is now a GC handle.  To get the object it stands
988         for, we must move it into the current app domain, if it's
989         different than the one where it originated from.
990
991         * appdomain.c: Bump corlib version.
992
993         * domain.c, domain-internals.h: New function for setting the
994         domain and migrate the thread abort exception or not.
995
996 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * metadata-verify.c: Add initial verification of the
999         field table.
1000
1001 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1002
1003         * metadata-verify.c: Add a macro to conditionally enable
1004         dumping of verification information. Add  make_coded_token
1005         and search_sorted_table to enable search sorted tables
1006         by a given coded token.
1007
1008 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1009
1010         * metadata-verify.c: Add array mapping from table index
1011         to description offset. Add get_col_offset and get_col_size
1012         functions.
1013
1014 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * metadata-verify.c: Add remaining table descriptions offsets.
1017         Add remaining coded index descriptions.
1018
1019 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * metadata-verify.c: Fixed constant table description.
1022         Fixed calculation of HasCustomAttribute coded index size.
1023         Fixed calculation of size for many table indexes. 
1024
1025 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * pedump.c (dump_metadata): Dump table offset instead
1028         of useless pointer in memory.
1029
1030 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
1033
1034 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1035
1036         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
1037         a missing of for interface types.
1038
1039 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1040
1041         * metadata-verify.c (verify_pe_optional_header): Add comment of why
1042         the code is commented.
1043
1044         * metadata-verify.c (verify_resources_table): Remove spurious printf
1045         and don't fail if there are unmanaged resources. Gmcs generates a useless
1046         one     for all assemblies - I bet it's some MS compatibility junk.
1047
1048 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1049
1050         * metadata-verify.c (verify_typedef_table): Verify the extends field.
1051
1052         * metadata-verify.c (mono_image_verify): Add a is_corlib.
1053
1054         * verify-internals.h: Same.
1055
1056         * pedump.c: Fix for mono_image_verify new signature.
1057
1058 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1059
1060         * metadata-verify.c (verify_typedef_table): Verify for some invalid
1061         flags combinations.
1062
1063 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
1064
1065         * metadata-verify.c (verify_module_table): Ignore the generation field.
1066
1067 2009-04-15  Martin Baulig  <martin@ximian.com>
1068
1069         * debug-mono-symfile.c
1070         (mono_debug_symfile_lookup_location): Don't print a warning for
1071         unknown extended opcodes if they're within 0x40 and 0x7f.
1072
1073 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
1076         invoke signatures returning an enum. Fixes #494847.
1077
1078 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1079
1080         * metadata-verify.c: Initial code to verify the typedef table.
1081
1082 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * verify.c (mono_method_verify): Don't fail if an unconditional branch
1085         with non empty stack happens before the beginning of a try block.
1086
1087         Fixes #494812.
1088
1089 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * metadata-verify.c: Verify typename and typenamespace fields of
1092         the typeref table.
1093
1094 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1095
1096         * metadata-verify.c: Initial code to verify the typeref table.
1097
1098 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
1099
1100         * verify.c (verify_delegate_compatibility): Fix error message.
1101
1102 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
1103
1104         * security-core-clr.c: Fix typo
1105
1106 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
1109         a MonoGHashTable to keep its values alive.
1110         (emit_marshal_boolean): Fix a warning.
1111
1112 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1113
1114         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
1115         not have any interface configured for IPv4/IPv6.
1116
1117 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1118
1119         * assembly.c: fix typo in error message.
1120
1121 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
1124         allocating the location holding the this argument to prevent
1125         'too many root sets' errors.
1126
1127         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
1128         to mark fields as special static.
1129         (mono_field_static_get_value): Handle special static fields.
1130         (mono_field_static_set_value): Ditto.
1131
1132         * class-internals.h (struct _MonoClassField): Document this.
1133
1134 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1135
1136         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
1137           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
1138           case.  This will handle when managed code returns null to native code.
1139
1140         Code is contributed under MIT/X11 license.
1141
1142 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1143
1144         * object.c (build_imt_slots): Changing a free to a g_free to match
1145           the g_malloc0 in add_imt_builder_entry that allocated this memory.
1146
1147         Code is contributed under MIT/X11 license.
1148
1149 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
1150
1151         * marshal.c (emit_marshal_boolean): Adding code to ensure that
1152           the correct TRUE value is passed through the marshaling layer.
1153
1154         Code is contributed under MIT/X11 license.
1155
1156 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
1159         correctly. Fixes #492330.
1160         
1161         * marshal.c: Fix the embedding of object pointers into JITted code in
1162         the native-to-managed wrappers by allocating some GC tracked memory, and
1163         embedding the address of that.
1164
1165 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
1168         pointers into the vtable.
1169
1170 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
1171
1172         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
1173
1174         * verify.c (verify_ldftn_delegate): Improve error message.
1175
1176 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
1177
1178         * reflection.c (my_mono_class_from_mono_type): Remove.
1179
1180 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
1181
1182         Prepare to reduce memory usage of owner-less generic parameters (1/n)
1183         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
1184         and constraints fields into ...
1185         (MonoGenericParamInfo): ... this.
1186         (mono_generic_param_info, mono_generic_container_get_param_info):
1187         New accessors.
1188         * class.c, debug-helpers.c, icall.c: Update to changes.
1189         * metadata.c, reflection.c, verify.c: Likewise.
1190
1191 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
1194
1195         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
1196         
1197         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
1198         booleans with sbytes.
1199
1200 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * class.c (can_access_instantiation): Verify accesibility of element types
1203         for arrays and pointers.
1204
1205         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
1206
1207         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
1208
1209         Fixes #493068.
1210
1211 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1212
1213         * verify.c (do_invoke_method): Improve error messages.
1214
1215 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1216
1217         * verify.c:  Fixing the MSVC build.
1218
1219         Code is contributed under MIT/X11 license.
1220
1221 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
1222
1223         * security-core-clr.c: Simplify get_reflection_caller not to call
1224         mono_method_get_last_managed (another stack walk) and adjust the
1225         callers to handle a (should not happen) NULL return value.
1226
1227 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1228
1229         Add accessors to some MonoGenericParam fields
1230         * class-internals.h (mono_generic_param_owner): New accessor.
1231         (mono_generic_param_num): Likewise.
1232         (mono_type_get_generic_param_owner): New helper.
1233         (mono_type_get_generic_param_num): New helper.
1234         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
1235
1236 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1237
1238         * class-internals.h (mono_generic_container_get_param): New wrapper.
1239         * class.c, icall.c, metadata.c, verify.c: Use it.
1240
1241 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1242
1243         Fix gtest-252.cs
1244         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
1245         the standard case/loop.  In particular, don't complain about
1246         references to generic type definitions.
1247
1248 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
1249
1250         * debug-helpers.c (dis_one): Decode string arguments.
1251
1252 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1253
1254         * pedump.c (dump_verify_info): Dump type name correctly.
1255
1256 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
1259         are larger than code size.
1260
1261         This can happen in valid code if the try/catch block is not followed by any instruction
1262         and do a backward branch on the leave instruction.
1263
1264         Fixes #492494.
1265
1266 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
1267
1268         * security-core-clr.c: Fix typo while comparing second method names
1269         in can_avoid_corlib_reflection_delegate_optimization
1270
1271 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1272
1273         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
1274
1275         Fixes #487738.
1276
1277 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1278
1279         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
1280         a MVAR using a class context.
1281
1282         Fixes #490335.
1283
1284 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1285
1286         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
1287
1288         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
1289
1290         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
1291         functions supplied by the JIT for the SGEN GC.
1292
1293         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
1294         
1295 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1296
1297         monitor.c (mono_monitor_try_enter_internal):
1298         Added calls to profile monitor contentions.
1299         Also duplicated a small piece of code (the "get the monitor" logic)
1300         from the fast path to the slow path, and changed the relevant goto
1301         statements, so that monitor acquisition events can be emitted from the
1302         slow path (this is by Paolo Molaro).
1303
1304 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1305
1306         * profiler.c, profiler.h, profiler-private.h:
1307         Added support for profiling monitor contentions.
1308
1309 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * metadata-verify.c: Verify the modules table.
1312
1313 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
1314
1315         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
1316         using the context of the method been verifier and not of the method been called.
1317
1318         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
1319         safely inflate generic types. 
1320
1321 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1322
1323         * security-core-clr.c: Change the strategy for checking the 
1324         "reflection using delegates optimization" to avoid unneeded 
1325         attributes in multiple class libraries.
1326
1327 2009-04-02  Mark Probst  <mark.probst@gmail.com>
1328
1329         * sgen-gc.c: Remove object element in the disappearing link struct
1330         by storing the object pointer in the link.
1331
1332 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
1335
1336 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
1339
1340         * verify.c (mono_method_verify): Do proper bounds checking of exception
1341         clause ranges.
1342
1343 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         * loader.c (mono_field_from_token): Don't crash if the field parent could
1346         not be decoded.
1347
1348 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1349
1350         * sgen-gc.c: Execute critical finalizers after ordinary
1351         finalizers.
1352
1353         * class-internals.h, domain.c: Add CriticalFinalizerObject to
1354         mono_defaults.
1355
1356 2009-03-31 Jb Evain <jbevain@novell.com>
1357
1358         * verify.c (do_ldstr): don't check if a string is in the user strings
1359         heap if the current image is dynamic.
1360
1361 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1362
1363         * sgen-gc.c: Wait until the last finalizer has executed when
1364         returning from WaitForPendingFinalizers.
1365
1366 2009-03-31  Martin Baulig  <martin@ximian.com>
1367
1368         * mono-debug-debugger.h (MonoDebuggerEvent): Add
1369         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
1370         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
1371         (mono_debugger_event_create_appdomain): New function.
1372         (mono_debugger_event_unload_appdomain): New function.
1373
1374         * appdomain.c (mono_domain_create_appdomain_internal): Call
1375         mono_debugger_event_create_appdomain().
1376
1377 2009-03-31  Martin Baulig  <martin@ximian.com>
1378
1379         * mono-debug-debugger.c
1380         (mono_debugger_register_class_init_callback): Also register the
1381         class init callback if the class is already initialized to make
1382         things work with shadow copied assemblies.
1383
1384 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
1385
1386         * security-core-clr.c
1387         (mono_security_core_clr_ensure_reflection_access_field): Let 
1388         critical code access the field (just like we do for methods). Use
1389         check_field_access helper.
1390         (mono_security_core_clr_ensure_reflection_access_method): Use 
1391         check_field_access helper.
1392
1393 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1394
1395         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
1396         call the run-finalize function directly.
1397
1398         * gc.c, gc-internal.h: Make run_finalize() non-static.
1399
1400 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1401
1402         * sgen-gc.c: Use a separate struct for disappearing links.
1403
1404 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1405
1406         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
1407         * MaxIOVectorLength enabled, just ignore them.
1408         Fixes bug #349688.
1409
1410 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1411
1412         * metadata-verify.c: Fix eglib build.
1413
1414 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * threads-types.h: Fix the win32 build.
1417
1418 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
1419
1420         * class.c: move coreclr inheritance/override checks to 
1421         security-core.clr.c
1422         * security-core.clr.c|h: add code from class.c with additional
1423         documentation. Fix override check when the method is not critical.
1424
1425 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1426
1427         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
1428         (match_class): Ditto.
1429
1430 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1431
1432         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
1433
1434         * metadata-verify.c: Implement table layout row size calculation. Verify
1435         the total size of the tables.
1436
1437 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1438
1439         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1440
1441 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1442
1443         * appdomain.c:
1444         * console-io.[ch]: added new mono_console_init() to make sure that
1445         file descriptors 0, 1 and 2 are opened.
1446         Bug #489019 fixed.
1447
1448 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1449
1450         * appdomain.h: Export a new callback type and a new function to
1451         set this callback. This allow a mono host to provide it's own
1452         definition for "platform code".
1453         * metadata-internals.h: Add a core_clr_platform_code flag on 
1454         _MonoImage to (cache and) know if it is representing platform 
1455         code.
1456         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1457         on platform code images.
1458         * security-core-clr.c|h 
1459         (mono_security_set_core_clr_platform_callback): Allow the host
1460         to provide it's own platform check definition.
1461         (mono_security_core_clr_determine_platform_image): Detect if an 
1462         image is platform code (using the specified callback).
1463         (mono_security_core_clr_is_platform_image): Return cached value 
1464         for platform code.
1465
1466 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1467
1468         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1469         which has different parameter types for the 'tid' argument in windows and
1470         the io-layer.
1471
1472         * appdomain.c attach.c threads.c: Use the new helper.
1473
1474 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * metadata-verify.c: Verify valid table bits.
1477
1478 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1479
1480         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1481
1482         * metadata-verify.c: Add initial table schema verification.
1483
1484 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1487         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1488         #488383.
1489
1490         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1491
1492         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1493
1494 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1495
1496         * security-core-clr.c: Add/update documentation
1497
1498 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * marshal.c (emit_marshal_object): Generate code to throw an exception
1501         instead of throwing it. Fixes #488670.
1502
1503 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1504
1505         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1506         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1507         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1508         and add a call to mono_security_core_clr_ensure_delegate_creation
1509         to do the extra checks required by CoreCLR.
1510         * security-core-clr.c|h: Add function to check delegate creation,
1511         both in the binding and accessibility, under CoreCLR.
1512
1513 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1514
1515         * reflection.c (mono_reflection_create_dynamic_method): when 
1516         coreclr is enabled make sure that every resolved object are
1517         checked (e.g. field and method access).
1518         * security-core-clr.c|h: Add function to check objects resolved
1519         when a dynamic method is created.
1520
1521 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1522
1523         * metadata-verify.c: Cache directory rva translations.
1524
1525         * metadata-verify.c: Add cli-header and streams verification.
1526
1527 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1528
1529         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1530         the wrong offset (8 instead of 6).
1531
1532 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1533
1534         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1535         methods, return the native function address itself. Fixes
1536         #487758.
1537
1538 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1539
1540         * console-io.c: some of the values for control characters might not be
1541         present.
1542
1543 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1544
1545         * exception.c|h: Add helpers to create [Field|Method]AccessException
1546         * icall.c: Add required coreclr check calls for field reflection.
1547         Move the existing (method) check logic into security-core-clr.c
1548         * security-core-clr.c: Add functions to check if the access of a
1549         field or method is allowed when reflecting under coreclr. This is
1550         mostly done using a stack walk to find the "real" caller: i.e. the
1551         code that is calling the reflection
1552
1553 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * gc-internal.h: Change location of gc_wrapper.h
1556
1557 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1558
1559         * class.c: Simplification to coreclr checks for overrides that
1560         makes it easier to set breakpoints.
1561
1562 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1563
1564         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1565         mono_security_core_clr_method_level): Avoid potential 
1566         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1567         user/application code) and make it easier to set breakpoints
1568
1569 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * metadata-verify.c: Reject cli header tables that mono don't handle.
1572
1573 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1574
1575         * pedump.c: Fix CLI header dumping.
1576
1577 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1578
1579         * metadata-verify.c: More CLI header verification.
1580
1581 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1584
1585 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1586
1587         * metadata-verify.c: Initial verification of the CLI header.
1588
1589 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1590
1591         * metadata-verify.c (verify_resources_table): Fix verification of zero
1592         sized resource section and id entries count.
1593
1594 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1597
1598 2009-03-17  Jb Evain  <jbevain@novell.com>
1599
1600         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1601
1602 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1605         (mono_gc_make_descr_for_array): Ditto.
1606
1607 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1608
1609         * verify.c (mono_verifier_is_class_full_trust): Add support for
1610         CoreCLR security mode where trusted assemblies are defined as
1611         "platform code".
1612
1613 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1614
1615         * metadata-verify.c: Add minimal PECOFF resource verification.
1616
1617 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * metadata-verify.c: Be less restrictive with some coff fields.
1620
1621 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1622
1623         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1624         params as boxed values on stack. Fixes #485706.
1625
1626 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1627
1628         * console-io.c: the termios values may vary in different flavors of unix.
1629
1630 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1631
1632         * console-io.[ch]: return the entire set of control characters when
1633         initializing the terminal.
1634         * appdomain.c: bump corlib version.
1635
1636 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1637
1638         * mono-perfcounters.c: added support for in-process custom
1639         performance counters.
1640
1641 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1642
1643         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1644
1645 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1646
1647         * metadata-verify.c: Verify the data pointed by the import table. 
1648
1649 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1650
1651         * metadata-verify.c (load_data_directories): Store data
1652         directory contents.
1653
1654         * metadata-verify.c: Verify the import table. 
1655
1656 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1657
1658         * metadata-verify.c: Verify data directories.
1659
1660 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1661
1662         * metadata-verify.c: Check section header flags.
1663
1664 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1665
1666         * appdomain.c: if the assembly name is a shadow-copied file, return
1667         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1668         in mono_make_shadow_copy.
1669         * icall.c: if the assembly name is a shadow-copied file, replace it
1670         with the original assembly path.
1671
1672         Bug #484244 fixed. NUnit tests for corlib can be run without
1673         --noshadow now.
1674
1675 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1678         entries when the table is reallocated.
1679
1680         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1681         mono_gc_alloc_fixed () since it contains GC refs.
1682
1683 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * reflection.c (ensure_complete_type): New helper function to call
1686         type resolve handlers for unfinished dynamic types.
1687         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1688
1689 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1692         #483247.
1693
1694 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1697
1698 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1699
1700         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1701         between GCHandles of type WeakTrackResurrection and the objects they
1702         point to.
1703
1704         * gc.c: Partly implement the sematics of GCHandles of type 
1705         WeakTrackResurrection: these handles should only be cleared after the
1706         finalizer of the object they are pointing to has ran.
1707
1708 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1709
1710         * icall.c: Partially revert r126631 because using the jump
1711         trampolines for generic shared methods makes it superfluous.
1712
1713 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1714
1715         * threads.c (handle_store): Create the 'threads' hash table with the proper
1716         MONO_HASH_VALUE_GC type.
1717
1718 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1719
1720         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1721         FIRST_GC_TRACKED.
1722
1723         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1724         and LAST_GC_TRACKED as a GC root.
1725
1726         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1727
1728         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1729         the static data even if it consists of 1 reference.
1730
1731         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1732         if there is a GC descriptor.
1733
1734         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1735         instead of through the GC since they contain no object references.
1736
1737 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1738
1739         * generic-sharing.c (instantiate_other_info): Always return a jump
1740         trampoline for method code.
1741
1742 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1743
1744         * culture-info-tables.h: generated to include the en-tt culture.
1745
1746 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1749         capture the thread context.
1750
1751         * object.c (mono_async_result_new): Cache the invoke wrappers to
1752         ExecutionContext::Capture.
1753
1754 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * marshal.h: Add a prototype for what mono_compile_method returns
1757         for invoke wrappers.
1758
1759         * gc.c: Use the new prototype declaration.
1760
1761 2009-03-04  Geoff Norton  <gnorton@novell.com>
1762
1763         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1764         * gc-internal.h:
1765         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1766
1767 2009-03-04  Martin Baulig  <martin@ximian.com>
1768
1769         * mono-debug.h
1770         (mono_debugger_runtime_invoke): Removed.
1771
1772         * mono-debug-debugger.c
1773         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1774
1775 2009-03-02  Martin Baulig  <martin@ximian.com>
1776
1777         * mono-debug.h
1778         (mono_debugger_unhandled_exception): Removed.
1779         (mono_debugger_handle_exception): Removed.
1780         (mono_debugger_throw_exception): Removed.
1781
1782         * mono-debug.c
1783         (mono_debug_debugger_version): Bump to 5.
1784
1785         * mono-debug-debugger.c: Moved the exception handling code to
1786         ../mini/debug-mini.c
1787
1788 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1791         finalize_objects_hash.
1792
1793         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1794         
1795         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1796         field.
1797
1798         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1799         cache.
1800
1801         * image.c (mono_image_close): Free it.
1802         
1803         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1804         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1805         on the this argument.
1806
1807         * gc.c (run_finalize): Optimize the calling of the finalizers.
1808
1809 2009-03-03  Martin Baulig  <martin@ximian.com>
1810
1811         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1812         of the `MonoGenericInst' changes.
1813
1814 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1815
1816         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1817         mono_array_class_get_cached to reduce locking contention. Extract
1818         a domain var.
1819
1820         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1821         intermediary managed arrays. Use caching version of mono_array_new
1822         to allocate the result array.
1823
1824         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1825
1826         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1827
1828         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1829         to reduce locking contention.
1830
1831 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1832                 
1833         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1834         thunk builder code for the non-interface case.
1835
1836 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1837
1838         * object.c (get_generic_virtual_entries): New helper function to collect
1839         the virtual generic method instances which need to be added to an IMT
1840         thunk.
1841         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1842         Instead of creating a new IMT thunk, reset the vtable slot to the
1843         trampoline, the thunk will be created the next time the trampoline is called.
1844         (build_imt_slots): Add support for virtual generic methods in interfaces by
1845         adding to the IMT thunk all the methods registered using 
1846         mono_method_add_generic_virtual_invocation ().
1847
1848         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1849         (struct _MonoIMTCheckItem): Ditto.
1850
1851         * object.c (mono_method_add_generic_virtual_invocation): Take a
1852         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1853         the IMT thunk to include all items.
1854         
1855         * object.c (mono_class_create_runtime_vtable): Add a missing
1856         mono_loader_unlock ().
1857
1858 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1861
1862         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1863
1864 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1865
1866         * object-internals.h: Rename _MonoReflectionEvent to
1867         MonoReflectionMonoEvent so it reflects the right managed type.
1868         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1869
1870         * icall.c:
1871         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1872         type.
1873
1874 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1877         intermediary managed arrays. Use caching version of mono_array_new
1878         to allocate the result array.
1879
1880 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1881
1882         * reflection.c: Use cached version of mono_array_new alongside
1883         the mono_reflection_get_custom_attrs_by_type call path.
1884
1885 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1886
1887         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1888         intermediary managed arrays. Use caching version of mono_array_new
1889         to allocate the result array.
1890
1891         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1892
1893 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1894
1895         * icall.c: Add small implementation of a growable stack bound array.
1896
1897         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1898
1899         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1900         intermediary managed arrays. Use caching version of mono_array_new
1901         to allocate the result array.
1902
1903 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1904
1905         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1906         helps Enum::CompareTo to be implemented without reboxing all enums
1907         to their underlying type.
1908 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1911         since it acquires a global lock leading to scalability problems.
1912
1913         * profiler.c: Make the stat profiler work with multiple appdomains, this
1914         currently only works when no appdomains are unloaded.
1915
1916 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1917
1918         * appdomain.c: make the check to avoid copying when the assembly is
1919         already shadow copied actually work.
1920
1921 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1924
1925         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1926         changes to the managed side.
1927
1928 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1931         classes + a separate lock for it, as it is used frequently at runtime, not
1932         just during metadata loading/JIT compilation.
1933
1934         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1935         for szarrays.
1936         
1937         * object-internals.h (mono_class_from_name_cached): New macro to cache
1938         the results of the lookup locally without having to declare a static
1939         variable to hold it.
1940         (mono_class_get_field_from_name_cached): Ditto.
1941         (mono_array_class_get_cached): Ditto.
1942
1943         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1944         the new macros.
1945         
1946         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1947         slower search in metadata.
1948
1949         * pedump.c: Fix a warning.
1950
1951 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * reflection.c (encode_locals): Add checks for user types.
1954         (method_encode_clauses): Ditto.
1955         (method_encode_code): Ditto.
1956         (mono_image_create_token): Ditto.
1957
1958         * object-internals.h: Change the type of more fields from MonoReflectionType*
1959         to MonoObject*.
1960
1961 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1964         the a thread does not suspend within 100ms.
1965
1966         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1967         in addition to StopRequested as well.
1968
1969         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1970
1971         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1972         search the method_hash before inserting a new entry, to avoid crashes when
1973         the same method is inserted multiple times, causing the old 
1974         MonoDebugMethodInfo structure to be freed by the value dtor function.
1975
1976 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1977
1978         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1979         SO_EXLUSIVEADDRUSE where available.
1980
1981 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1984         runtime invoke wrappers, this time it is string ctor wrappers, which
1985         pass a dummy string as 'this' instead of their obj argument. Fixes
1986         #478473.
1987
1988 2009-02-21  Jb Evain  <jbevain@novell.com>
1989
1990         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1991         only get create_culture once.
1992
1993 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1996         check before the locking.
1997         
1998         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1999         (mono_reflection_create_runtime_class): Ditto.
2000         (mono_reflection_sighelper_get_signature_local): Ditto.
2001         (mono_reflection_sighelper_get_signature_field): Ditto.
2002
2003         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
2004         is a System.MonoType object or similar.
2005         (monotype_cast): New helper function to cast a MonoObject to a 
2006         MonoReflectionType object.
2007
2008         * object-internals.h: Change MonoReflectionType* members in structures to
2009         MonoObject* members to force the usage of the monotype_cast () function.
2010
2011         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
2012         structures/arrays. This causes us to assert instead of crashing when 
2013         instances of user defined subclasses of System.Type are encountered.
2014
2015 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2016
2017         * cil-coff.h:
2018         * icall-def.h:
2019         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
2020         win32 resource loaded from a PE file.
2021
2022         * image.c: fix mono_image_lookup_resource.
2023
2024 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
2025
2026         * icall-def.h:
2027         * threads-types.h:
2028         * threads.c: added internal call for WaitHandle.SignalAndWait.
2029
2030 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
2031
2032         * cominterop.c : Adding cominterop_type_from_handle and 
2033           registering it as an icall.  Replacing all references
2034           to type_from_handle.
2035
2036         Code is contributed under MIT/X11 license.
2037
2038 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2039
2040         * Makefile.am: Add lock-tracer.h and lock-trace.c.
2041
2042         * appdomain.c: Call the tracer init function.
2043
2044         * domain-internals.h: Enable the tracer for the domain locks.
2045
2046         * image.c: Enable the tracer for image locks.
2047
2048         * loader.c: Enable the trace for the loader lock.
2049
2050         * lock-tracer.h:
2051         * lock-tracer.c: Initial implementation of the lock trace utility.
2052         The tracer requires a compile time define to be enabled and a env var
2053         to be enabled at runtime.
2054
2055 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2056
2057         * domain.c (mono_domain_code_foreach): Improve documentation.
2058
2059 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2060
2061         * appdomain.c:
2062         * generic-sharing.c:
2063         * object.c:
2064         * reflection.c:  Adjust locking order to the new semantics where the loader lock
2065         comes first.
2066
2067 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2068
2069         * domain.c: Add mono_domain_code_* functions that perform locking
2070         around the domain codeman.
2071
2072         * domain-internals.h: Export those functions.
2073
2074         * object.c: Use new functions instead of acquiring the domain lock.
2075
2076 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
2079         delegate. Fixes #477396.
2080
2081 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * reflection.c (create_custom_attr): Get rid of alloca.
2084
2085 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
2086
2087         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
2088           Adding exception handling for all CCW calls.
2089
2090         Code is contributed under MIT/X11 license.
2091
2092 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
2095
2096         * marshal.c (emit_marshal_boolean): Add null checks to the new 
2097         native->managed marshalling code. Fixes #476247.
2098
2099 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * class.c (mono_class_get_vtable_entry): Move the addition of
2102         static rgctx invoke wrappers for vtable methods here, this simplifies
2103         a lot of code and causes fewer rgctx wrappers to be created.
2104
2105         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
2106         name of the statistics to begin with an uppercase.
2107
2108 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2109
2110         * reflection.c: Revert previous change as it breaks the build.
2111         
2112 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2113
2114         * verify.c: Properly handle SZARRAY element type.
2115
2116         Fixes #474271.
2117
2118 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
2119
2120         * reflection.c (mono_image_create_method_token): Correctly encode
2121         MethodDef MemberRefParent token.
2122
2123         Fixes #472845.
2124
2125 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2126
2127         * image.c (mono_image_close): Delete the critical section before
2128         freeing the memory holding it.
2129
2130 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2131
2132         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
2133         Fixes #476257.
2134
2135 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2136
2137         * pedump.c (main): Call mono_marshal_init so pedump
2138         doesn't crash.
2139
2140 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2141
2142         * loader.c (method_from_memberref): Properly fix #474271 and
2143         don't break the runtime bad.
2144
2145 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
2148         (mono_domain_alloc0): Ditto.
2149
2150 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2151
2152         * loader.c (method_from_memberref): Don't abort if the array
2153         method is not found. A regular loader failure is more informative
2154         and correct.
2155
2156         Fixes #474271.
2157
2158 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
2159
2160         *loader.c: Guard MonoImage::method_cache/methodref_cache
2161         using the image lock instead of the loader lock.
2162
2163         * metadata.h: Add comments about which fields are protected by
2164         the image lock.
2165
2166 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2167
2168         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
2169
2170         * generic-sharing.c (mono_method_construct_object_context): Remove the
2171         wrapper_type == NONE assert, it is not needed.
2172
2173 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * reflection.c (clear_cached_object): New helper function.
2176         (mono_method_clear_object): New function to clear the cached reflection
2177         objects for a dynamic method.
2178
2179         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
2180         Partly fixes # 463323.
2181         
2182 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
2183
2184         * class.c:
2185         * loader.c:
2186         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
2187
2188 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
2189
2190         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
2191         take the image lock instead of the loader lock.
2192
2193         * metadata-internals.h: Export new functions.
2194
2195 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2196
2197         * domain.c (app_config_parse): Remove another use of stat that is
2198         not necessary as g_file_get_contents already does the presence
2199         check. 
2200
2201 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2202
2203         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
2204
2205         * marshal.c: Move the bstr handling code to cominterop.c.
2206
2207         * marshal.c: Remove some COM interop code missed previously.
2208
2209 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2210
2211         More Paolo patches from the Wii port:
2212         
2213         * security.c: Remove ves_icall_System_Environment_get_UserName
2214         from here.
2215
2216         * icall.c: And put ves_icall_System_Environment_get_UserName
2217         here. 
2218
2219         * appdomain.c (mono_set_private_bin_path_from_config): Remove
2220         redundant call to stat that was only used to test for the file
2221         existence.   Patch from Paolo.
2222
2223         * gc.c (run_finalize): If COM is disabled, do not link in
2224         mono_marshal_free_ccw.
2225
2226         * generic-sharing.c: Use alloca.h here as well.
2227
2228 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
2229
2230         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
2231
2232 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * cominterop.c cominterop.h: New files.
2235
2236         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
2237         function/typedefs which are needed by cominterop.c global.
2238
2239 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2240
2241         * generic-sharing.c: Don't take the loader lock to guard image
2242         mempool allocs.
2243
2244 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2245
2246         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
2247         called without the loader lock which is required to guard MonoImage:tokens.
2248
2249 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2250
2251         * class.c:
2252         * metadata.c:
2253         * method-builder.c:
2254         * marshal.c:
2255         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
2256
2257 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2258
2259         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2260         Rework the code to use regular mono_image_alloc/0.
2261
2262         * loader.c: Rework the code to use regular mono_image_alloc/0.
2263
2264         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2265
2266 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
2267
2268         * object-internals.h : Fixing a typo in the 
2269           MonoReflectionComVisibleAttribute struct.
2270
2271         * marshal.c (cominterop_com_visible): Check the implemented 
2272           interfaces for ComImport.
2273
2274         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
2275           assume that bools should be treated as VARIANTBOOLs.
2276
2277         * marshal.c (emit_marshal_boolean): Adding cases for 
2278           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
2279
2280         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
2281           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
2282
2283         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
2284           should be treated as VARIANTBOOLs.    
2285
2286         Code is contributed under MIT/X11 license.
2287
2288 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2289
2290         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
2291         allocation with the image lock.
2292
2293 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2294
2295         This patch is the last of a series to remove explicit reference of MonoImage::mempool
2296         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
2297
2298         * object.c: Add mono_string_to_utf8_image.
2299
2300         * object-internals.h: Export mono_string_to_utf8_image.
2301
2302         * reflection.c: Rework all explicit references to the the image mempool to go thought
2303         the mono_image_alloc set of functions.
2304
2305 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2306
2307         This patch is the third of a series to remove explicit reference of MonoImage::mempool
2308         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
2309         and generics-sharing.c.
2310
2311         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
2312         as first argument. Note that this function remains broken as it doesn't perform locking around the
2313         mempool allocation.
2314
2315         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
2316
2317         * image.c: Add g_slist_append_image.
2318
2319         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
2320         the supplied image for allocation. Move code into mono_metadata_field_info_full.
2321
2322         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
2323         Fix all related code to do the same.
2324
2325         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
2326
2327         * metadata-internals.h: Fix the signatures.
2328
2329 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2330
2331         This patch is the second of a series to remove explicit reference of MonoImage::mempool
2332         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
2333         and similar to work using MonoImage.
2334
2335         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
2336         MonoMemPool.
2337
2338         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
2339
2340         * class.c (mono_metadata_signature_deep_dup): Same.
2341
2342         * class.c (inflate_generic_type): Same.
2343
2344         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
2345
2346         * metadata.c (mono_metadata_signature_dup_full): Same.
2347
2348         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
2349         mono_metadata_signature_dup_full.
2350
2351         * metadata.c (mono_metadata_type_dup): Same.
2352
2353         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
2354
2355         * reflection.c: Same.
2356
2357         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
2358
2359         * metadata-internals.h: Fix the signatures.
2360
2361         * class-internals.h: Same.
2362
2363 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2364
2365         This patch is the first of a series to remove explicit reference of MonoImage::mempool
2366         and use mono_image_alloc set of functions instead. 
2367
2368         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
2369         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
2370         of a MonoMemPool.
2371
2372         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
2373
2374         * class.c (g_list_prepend_mempool): Removed.
2375
2376         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
2377
2378         * image.c: Add g_list_prepend_image.
2379
2380         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
2381
2382         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
2383
2384
2385 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2386
2387         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
2388         mono_image_unlock.
2389
2390         * image.c (mono_image_init): Init the lock field.
2391  
2392         * image.c (mono_image_init): Cleanup the lock field.
2393
2394         * image.c: Add mono_image_(un)lock functions.
2395
2396 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2397
2398         * class.c, class-internals.h: mono_method_get_context_general()
2399         combines the functionality of mono_method_get_context() and
2400         mini_method_get_context().
2401
2402         * generic-sharing.c, domain-internals.h:
2403         mono_method_construct_object_context() and
2404         mono_domain_lookup_shared_generic() moved from mini.
2405
2406         * icall.c (ves_icall_InternalInvoke): Handle the case where the
2407         method doesn't have the correct instantiation because it's shared
2408         generic code.  Fixes #473999.
2409
2410 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
2413
2414         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
2415         
2416 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2417
2418         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
2419
2420         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
2421
2422         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
2423         and recheck the cache for dups after it.
2424
2425         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
2426
2427         Fixes one of the deadlocks found in #473150.
2428
2429 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
2430
2431         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
2432           For Win32, add additional break conditions for accept.
2433
2434         Code is contributed under MIT/X11 license.
2435
2436 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2439         lazily initialize the native wrapper cache.
2440         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2441         cache, since they are different from the normal wrappers.
2442
2443         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2444
2445         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2446         AOT compiled native wrappers.
2447
2448 2009-02-09  Geoff Norton  <gnorton@novell.com>
2449
2450         * appdomain.h:
2451         * security-core-clr.c: Allow enabling core-clr from the embedding
2452         API.
2453
2454 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2455
2456         * socket-io.c: when requesting all the local ips, if there are no
2457         interfaces up and running, MS returns 127.0.0.1.
2458
2459 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2460
2461         * mono-perfcounters-def.h: processor time is an inverse time.
2462         Fixes bug #468625.
2463
2464 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2465
2466         * socket-io.c: an empty host name returns the list of local IPs.
2467         Fixes bug #386637 part 1/2.
2468
2469 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2470
2471         * verify.c (mono_class_interface_implements_interface): Call
2472         mono_class_setup_interfaces ().
2473         (merge_stacks): Ditto.
2474
2475 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2478         klass->interfaces.
2479         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2480         (mono_generic_class_get_class): Ditto.
2481
2482 2009-02-06  U-QUACK\miguel  <miguel@quack>
2483
2484         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2485         they live in security.c
2486
2487         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2488         another bit from Paolo's code.
2489
2490 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2493         methods which will be discarded by add_imt_builder_entry ().
2494
2495         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2496         need to be boxed.
2497
2498         * loader.c: Add a statistics for the size of the memberref signature cache.
2499         
2500         * loader.c (find_cached_memberref_sig): New helper function.
2501         (cache_memberref_sig): Ditto.
2502
2503         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2504         they will be parsed again for every generic instantiation, leading to unbounded
2505         memory growth.
2506
2507 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2510         parameters of generic methods.
2511
2512         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2513         after the original method is copied to the inflated method.
2514         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2515
2516         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2517         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2518
2519         * class.c metadata.c: Update after the changes above.
2520
2521 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2522
2523         * metadata-verify.c: Simplified error handling and added
2524         section table validation.
2525
2526 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2527
2528         * class-internals.h (MonoClassExt): New structure containing rarely used
2529         fields of MonoClass.
2530         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2531         through a new 'ext' field.
2532
2533         * class.c (mono_class_alloc_ext): New helper function to allocate 
2534         class->ext.
2535
2536         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2537
2538 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2539
2540         * object.c (mono_object_get_virtual_method): Properly inflate
2541         generic methods.  Fixes #472692.
2542
2543 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2544
2545         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2546         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2547         for the parent type, the created type must be ready to be used on a generic
2548         instantiation.
2549         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2550         we won't have duplicated entries in generic_inst_cache.
2551
2552         Fixes #469553.
2553
2554 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2555
2556         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2557         replace with plain BSD per the comments on the bug MONO77637.
2558
2559 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2560
2561         * class.c (mono_class_get_generic_class): New accessor function.
2562         (mono_class_get_generic_container): Ditto.
2563
2564         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2565         fields, similar to the ones in MonoMethod.
2566
2567         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2568         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2569
2570         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2571         
2572         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2573         the same information as element_class->byval_arg.
2574
2575         * class.c reflection.c: Remove references to class->byval_arg.
2576
2577         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2578         klass->enum_basetype directly.
2579
2580         * verify.c metadata.c object.c icall.c reflection.c: Use 
2581         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2582         directly.
2583
2584 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2585
2586         * icall-def.h: Remove internal calls for sockets when
2587         DISABLE_SOCKET is defined, file system writing features when the
2588         OS only support reading and not writing data and Policy support if
2589         the Policy is disabled.
2590         
2591         * image.c (do_mono_image_open): Apply Paolo's patches for using
2592         mono_file_map_ APIs here.
2593
2594         * assembly.c: Add support for platforms to avoid prefix
2595         auto-detection. 
2596
2597 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2600         warning.
2601
2602         * class.c (mono_class_inflate_generic_class): New helper function.
2603
2604         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2605         statistics for inflated methods/classes.
2606
2607         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2608
2609         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2610         the call is made from Delegate.CreateDelegate () for the invoke method of
2611         a delegate.
2612
2613         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2614
2615         * metadata.c (mono_metadata_signature_size): New helper function.
2616
2617         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2618         generic instances.
2619
2620         * metadata.c (inflated_method_in_image): Avoid calling 
2621         mono_method_signature () if the method does not already have a signature.
2622
2623 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2624
2625         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2626         valuetype is compatible with target type, check by inheritance as a
2627         VT is not really compatible with System.ValueType, for example.
2628
2629         * verify.c (do_invoke_method): Improve error message.
2630
2631         * verify.c (do_box_value): If boxing a nullable, use the type argument
2632         on stack instead.
2633
2634         * verify.c (do_newobj): Improve error message.  
2635
2636         Fixes #469549.
2637
2638 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2639
2640         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2641
2642 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2643
2644         * generic-sharing.c: Don't hold domain lock when calling
2645         instantiate_other_info().  Fixes #471958.
2646
2647         * domain-internals.h, loader.c: Describe locking policy of domain
2648         lock vs loader lock.
2649
2650 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2651
2652         * verify.c (mono_delegate_signature_equal): Make it possible to check
2653         first-arg-bound delegates to static method.
2654
2655         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2656         static methods with the first arg bound.
2657
2658         Fixes #469529.
2659
2660 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2661
2662         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2663         errors.
2664
2665         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2666         under strict mode. Any type, when boxed can be seen as a reference type.
2667
2668         Fixes #469528.
2669
2670 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2671
2672         * object.h: The lower bound of an array is a signed integer value.
2673         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2674         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2675
2676         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2677         calculate the upper bound.
2678         
2679         Fixes #471252.
2680
2681 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2682
2683         From Paolo's work, refactored, cleared up:
2684         
2685         * threadpool.c, icall.c: ifdef code that requires a working socket
2686         stack.
2687
2688         * metadata.c (mono_metadata_field_info): Do not attempt to return
2689         a value from a function declared as void.
2690
2691         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2692         from the console stack.
2693
2694         * assembly.c: use strrchr instead of rindex.
2695
2696         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2697         alloca.h on systems that have it.
2698
2699         * environment.c: Avoid code that uses stuff from
2700         HAVE_SYS_UTSNAME_H
2701         
2702         * appdomain.c: Include sys/time.h.
2703
2704         * console-io.c: include sys/ioctl.h if it is available.
2705
2706 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2709
2710         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2711         the method builder.
2712
2713         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2714         after it was created and cached, as the later is not thread safe.
2715         
2716 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2717
2718         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2719         called while the debugging module is not initialized. Fixes #471669.
2720
2721 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2722
2723         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2724
2725         Fixes #471255.
2726
2727 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2728
2729         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2730         loader lock is not taken while the templates lock is held.  Fixes
2731         #471089.
2732
2733 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2734
2735         * metadata.c (type_in_image): Added a check to fix a monodis
2736         crash.
2737
2738 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2741         nullable arguments.
2742
2743         * object.c (mono_runtime_invoke_array): Ditto.
2744         
2745         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2746         freeing wrappers of dynamic methods.
2747
2748         * loader.c (mono_free_method): Call it. Fixes #463323.
2749         
2750         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2751         methods taking vtype/byref arguments, to fix yet another bug caused by
2752         the sharing of runtime invoke wrappers. Partly fixes #471259.
2753
2754 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2757         <first file in file table>:1 when the IL offset does not have an associated
2758         line number.
2759
2760 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2761
2762         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2763         variable info for a method.
2764
2765         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2766         
2767 2009-01-30  Jb Evain  <jbevain@novell.com>
2768
2769         * pedump.c: reuse code from monodis to make sure pedump honors
2770         MONO_PATH, which is needed to verify net_2_1 assemblies.
2771
2772 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2775         there is no line number info.
2776
2777 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2778
2779         Avoid some MonoType allocations
2780         * reflection.c (mono_reflection_initialize_generic_parameter):
2781         Reuse MonoType from param->pklass rather than allocating one.
2782         (mono_dynamic_image_free): Update to changes.
2783
2784 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2785
2786         Rearrange some code to improve consistency
2787         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2788         (mono_reflection_initialize_generic_parameter): ... here.
2789
2790 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2793         with type constraints as an experiment.
2794
2795         * boehm-gc.c (on_gc_notification): Update mono_stats.
2796
2797 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2798
2799         Avoid some allocations
2800         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2801         pointer to tail array to avoid extra allocation.
2802         * metadata.c (free_generic_inst): Update to changes.
2803         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2804         on-stack struct.
2805
2806 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2807
2808         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2809         return TRUE if the two type objects are the same.
2810
2811 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2814         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2815         klass->min_align, since klass->min_align contains the managed alignment,
2816         while the native alignment can be different, like for longs on x86.
2817         Fixes #469135.
2818
2819         * class-internals.h (MonoMarshalType): Add a min_align field.
2820
2821 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2822
2823         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2824         the 1.0 format.
2825
2826 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2829         some comments about the usage of the used_regs field.
2830
2831         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2832         Fixes #469217.
2833
2834 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2835
2836         * appdomain.c: return NULL instead of throwing FileNotFoundException
2837         when LoadAssembly() fails.
2838
2839 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2840
2841         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2842         image if the owner is NULL.  Fixes the AOT failures.
2843
2844 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2845
2846         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2847         MonoGenericParam structure using memset so the image field is initialized
2848         as well.
2849
2850 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2851
2852         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2853         a plain store.
2854
2855 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * class.c (mono_class_setup_vtable_general): In the generic instance
2858         optimization, set method->slot for abstract virtual methods. Fixes part of
2859         #467834.
2860
2861 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2862
2863         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2864         which signals that the unloading has started but all appdomain services must
2865         remain operational.
2866
2867         * appdomain.c (mono_domain_unload): The initial state for unloading now
2868         is unloading_start and we switch to unloading after the managed call to
2869         AppDomain::DomainUnload has finished.
2870
2871         The new unloading state has to be created because managed code in the
2872         DomainUnload event can depend on things like the threadpool still working.
2873         The domain must remain fully functional while the event executes.
2874
2875         This shown as an issue due to Process::WaitForExit, which waits for
2876         async reads of stdout and stderr to complete. Since those are processed
2877         in the threadpool the code deadlocks because the DomainUnload callback 
2878         waits for the async read finished event, which should have been set by a
2879         threadpool job but has been discarded due to the domain been in unload
2880         state.
2881
2882 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2883
2884         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2885         image must match.
2886
2887 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2888
2889         * reflection.c (resolve_object): For fields, inflate the class and
2890         then get the field in the inflated class.
2891
2892 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2893
2894         * object-internals.h (struct _MonoException): Added a comment
2895         explaining the new use of trace_ips.
2896
2897 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2898
2899         * generic-sharing.c (inflate_other_data): Inflate array methods
2900         correctly.
2901
2902         * loader.c, class-internals.h: Rename search_in_array_class() to
2903         mono_method_search_in_array_class() and make it non-static.
2904
2905 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2908         Hopefully fixes #458168.
2909
2910 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2911
2912         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2913         as it is performed elsewhere.
2914
2915         Code is contributed under MIT/X11 license
2916
2917 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2918
2919         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2920         requests queued.
2921         * object.c (mono_raise_exception): Increment the exceptions total
2922         counter when an exception is thrown.
2923         * class-internals.h: Add a location for storing the total number of
2924         asp.net requests served.
2925         * mono-perfcounters.c: Implement update support for asp.net counters
2926         from the class libraries. Implement read support for asp.net counters
2927         and exceptions total counter.
2928
2929 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2932         accessing klass->methods. Fixes #467385.
2933
2934 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2937         for byval arguments without an [Out] attribute. Fixes #467212.
2938
2939         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2940         Fix compilation under android.
2941         
2942         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2943         processed, scan them directly after they are copied, to achieve better locality
2944         and cache usage.
2945
2946         * socket-io.c: Applied patch from Koushik Dutta
2947         (koush@koushikdutta.com). Disable IPV6 when running under android.
2948
2949 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * icall.c (ves_icall_InternalExecute): Add write barriers.
2952
2953         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2954         the GC code.
2955
2956         * sgen-gc.c: Implement write barriers in IL code.
2957
2958 2009-01-17  Geoff Norton  <gnorton@novell.com>
2959
2960         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2961
2962 2009-01-17  Geoff Norton  <gnorton@novell.com>
2963
2964         * image.c: When unloading the image->references table, there can be gaps
2965         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2966         when unloading an appdomain.
2967
2968 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2969
2970         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2971         speed up ptr-in-nursery checks.
2972
2973         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2974         threads_lock () to prevent deadlocks.
2975
2976         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2977         does not need to be scanned during minor collections, since writes to it
2978         must use write barriers.
2979
2980 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2981
2982         * metadata-verify.c: Add pe nt header verification.
2983         
2984 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2985
2986         * gc.c: Fix a few warnings when using SGEN.
2987
2988 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2989
2990         * metadata-verify.c: Add pe optional header verification.
2991
2992 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2993
2994         * sgen-gc.c: Add support for user defined marker functions, used by
2995         MonoGHashTable to avoid registering a GC root for every hash node.
2996
2997 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
3000         non-pinned roots into separate hashes to avoid having to traverse them
3001         in functions which are only interested in one kind.
3002
3003 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
3004
3005         * metadata-verify.c: Add pe header machine field verification.
3006         
3007 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
3008
3009         * metadata-verify.c: Add pe header size verification.
3010
3011 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
3014         using the GC, they don't contain references.
3015
3016         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
3017
3018 2009-01-13  Geoff Norton  <gnorton@novell.com>
3019
3020         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
3021         AppDomains created on the native side can be cleaned up on the native side.
3022
3023 2009-01-13  Geoff Norton  <gnorton@novell.com>
3024
3025         * appdomain.c: Ensure that we call mono_context_init for the embedding api
3026         as well as the managed api.
3027
3028 2009-01-13  Geoff Norton  <gnorton@novell.com>
3029
3030         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
3031         with a MonoAppDomain initialized against it.
3032
3033 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
3036         
3037         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
3038
3039         * marshal.c: Avoid setting the exception clauses after a method has been entered 
3040         into the wrapper caches. Fixes #465700.
3041
3042         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
3043         method builder.
3044         (mono_mb_create_method): Set the clauses from the method builder.
3045
3046 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
3047
3048         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
3049         Patch from Makoto Kishimoto.
3050
3051 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
3054         encoding them as ROOT_DESC_COMPLEX.
3055         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
3056
3057 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
3060         no longer point to the nursery.
3061
3062         * sgen-gc.c: Add a few comments/FIXMEs.
3063         
3064         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
3065
3066         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
3067         initialization of the various _method variables thread safe. Fixes
3068         #465377.
3069
3070 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3071
3072         * domain.c, domain-internals.h: Remove the shared_generics_hash
3073         and its lookup functions.
3074
3075 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
3076
3077         * socket-io.c:  Fixing the MSVC build. 
3078
3079         Code is contributed under MIT/X11 license.
3080
3081 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
3082
3083         * metadata-verify.c: Add pe header watermark verification.
3084
3085 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3086
3087         * metadata-verify.c: Add lfanew verification.
3088
3089 2009-01-12  Jb Evain  <jbevain@novell.com>
3090
3091         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
3092         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
3093
3094 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3095
3096         * socket-io.c: Fix the build.
3097
3098         * environment.c: Fix an #ifdef.
3099
3100 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * threadpool.c (async_invoke_thread): Handle the wait function returning
3103         WAIT_IO_COMPLETION as well.
3104         (async_invoke_io_thread): Ditto.
3105
3106 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
3107
3108         * threads.c: Fixing the Windows build.
3109
3110         Code is contributed under MIT/X11 license.
3111
3112 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3113  
3114         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
3115         interrupt a wait.
3116         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
3117         the thread to wait again.
3118
3119 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3120
3121         * metadata-verify.c: Initial skeleton of the metadata verifier.
3122
3123         * pedump.c: Add support for the metadata verifier.
3124
3125         * verify-internal.h: Export the whole assembly metadata verifier function.
3126
3127 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
3128
3129         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
3130
3131 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3132
3133         * Makefile.am: Upgrade dtrace-prelink.sh location.
3134
3135 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
3136
3137         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
3138         well. Otherwise the shutdown deadlock that happens on unix will can happen
3139         as well.
3140         If the main thread code finishes too fast it's possible that the finalizer
3141         thread won't have executed yet, won't record itself as the finalizer thread
3142         and the shutdown sequence will wait on it forever.
3143
3144 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
3145
3146         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
3147         with MSVC.
3148
3149 2009-01-08  Miguel de Icaza  <miguel@novell.com>
3150
3151         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
3152         Robert Jordan for pointing this out.
3153
3154 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
3155
3156         * icall.c
3157         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
3158         ves_icall_System_IO_DriveInfo_GetDriveType.
3159
3160 2009-01-07  Miguel de Icaza  <miguel@novell.com>
3161
3162         * icall.c: Wrap calls to mono_strtod in CriticalSection
3163         invocations when using eglib, to work around #464316.
3164
3165 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
3166
3167         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
3168         return value of GetCurrentDirectory to never access unitialized memory.
3169
3170 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
3173         return value of GetCurrentDirectory and expand the buffer if needed.
3174
3175         Fixes #459094.
3176
3177 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
3178
3179         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
3180           Adding a call to mono_init_com_types.
3181
3182         Code is contributed under MIT/X11 license.
3183
3184 2009-01-07  Geoff Norton  <gnorton@novell.com>
3185
3186         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
3187         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
3188         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
3189         be the value of the ip buffer.
3190
3191 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3192
3193         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
3194         interfaces_packed here.
3195
3196         Fixes part of #463294.
3197
3198 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3199
3200         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
3201
3202         Fixes part of #463294.
3203
3204 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3205
3206         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
3207         is a boxed complex as well.
3208
3209         Fixes part of #463294.
3210
3211 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3212
3213         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
3214         control if a methodspec should be created for the generic method definition from external assemblies.
3215         Caching of methodspec is done using the handleref hash table.
3216
3217         Fixes #462592.
3218
3219 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
3220
3221         * loader.c (find_method): When searching the interfaces of a class
3222         check the transitive closure of implemented interfaces.
3223
3224         Fixes #463303.
3225
3226 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3227
3228         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
3229         
3230 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3231
3232         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
3233         interfaces calculation to fill_valuetype_array_derived_types.
3234
3235         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
3236         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
3237         for example.
3238
3239         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
3240         interfaces for valuetypes if needed.    
3241
3242         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
3243         for their basetype as well. Types are array expanded if rank is > 0.
3244
3245         Fixes #400716.
3246
3247 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
3248
3249         * socket-io.h : Changing the signature of
3250           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
3251           the blocking state.
3252
3253         * icall-def.h :  Changing the signature of
3254           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
3255
3256         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
3257           For Windows only.  Avoid blocking when calling accept by
3258           querying for a connection via select.  The loop also queries
3259           the thread state every 1000 micro seconds for the thread
3260           stop state.  This will avoid the process hanging on shutdown
3261           when using a TcpChannel that is never connected to.
3262
3263         Code is contributed under MIT/X11 license.
3264
3265 2008-12-30  Marek Safar  <marek.safar@gmail.com>
3266
3267         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
3268
3269 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3270
3271         * class.c (get_implicit_generic_array_interfaces): Extract common
3272         code to a helper function making it a lot easier on the eyes.
3273
3274 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3275
3276         * class.c (get_implicit_generic_array_interfaces): If the internal
3277         enumerator is an interface inflate System.Object instead of itself.
3278
3279         Fixes #461261.
3280
3281 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
3282
3283         * object.c (mono_runtime_invoke_array): Don't assert with
3284         byref nullable types.
3285
3286         * marshal.c (mono_marshal_get_runtime_invoke): To handle
3287         byref nullables we unbox the object and store it on the
3288         stack. 
3289         We can't use the boxed object since it is the T of Nullable<T>
3290         and the boxed representation of a nullable it's underlying type
3291         or null.
3292         We could cheat and create a boxed nullable and use the same
3293         machinery of other byref VTs but this feels like a hack and
3294         using the stack has the bonus of reducing heap pressure.
3295
3296         Fixes #461941.
3297
3298 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
3299
3300         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
3301         return value.
3302
3303         Fixes #461867.
3304
3305 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
3306
3307         * icall-def.h : Adding an internal call definition for 
3308           System.Environment.internalBroadcastSettingChange.
3309
3310         * icall.c : Adding a Windows only implementation to broadcast a 
3311           WM_SETTINGCHANGE when an environment variable has changed.
3312
3313         Code is contributed under MIT/X11 license.
3314
3315 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3316
3317         * class.c, class-internals.h: Made
3318         mono_class_has_parent_and_ignore_generics() non-static.
3319
3320 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
3321
3322         * image.c: deal with the mmap failing when loading an image.
3323
3324 2008-12-17  Geoff Norton  <gnorton@novell.com>
3325
3326         * threadpool.c: Ensure that the io_queue_lock is initialized
3327         in all circumstances, as we always attempt to cleanup against it.
3328
3329 2008-12-17  Miguel de Icaza  <miguel@novell.com>
3330
3331         * icall.c (ves_icall_System_Environment_get_Platform): For
3332         compatibility reasons for existing client code we will keep
3333         returning 4 for a while.   
3334
3335         For how long will depend on the documentation being updated, and
3336         for us to give client code a chance to be updated.
3337
3338         This reverts the original decison on #433108 since we did not
3339         catch roughly 33 instances of the broken code in our own source
3340         code base, we did not catch failures on the buildbots, and QA did
3341         not bring this as a problem.
3342
3343         Only today I found some customer's code breaking due to our own
3344         class libraries not being fully updated and tracked it down to
3345         this change.  I am reverting it because if we could not even get
3346         our story straight in our own code base, how can we hope that our
3347         end user code be fixed?
3348
3349         As of this morning, our Wiki page that documents how to detect
3350         Unix had not been fixed.    
3351
3352 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
3353
3354         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
3355
3356         * class.c (mono_class_get_fields): Handle loading errors.
3357
3358 2008-12-12 Mark Mason <mmason@upwardaccess.com>
3359
3360         * 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.
3361         
3362 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3363
3364         * mono-perfcounters.c: avoid warning.
3365
3366 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3367
3368         * reflection.c (ensure_runtime_vtable): Work on generic instances and
3369         make sure all interfaces have MonoClass::interface_id set.
3370
3371         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
3372         method table is property set.
3373
3374 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3375
3376         * class.c: New function mono_class_setup_interface_id that setup
3377         MonoClass::interface_id if needed.
3378
3379         * class-internals.h: Export new function.
3380
3381 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3382
3383         * class.c: Add code to sanity check the vtable after setup_vtable_general
3384         has done it's work.
3385
3386 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3387
3388         * icall.c: make Assembly.GetExecutingAssembly work properly when
3389         reflection is used to invoke the method.
3390         Bug #321781 fixed.
3391
3392 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3393
3394         * metadata/generic-sharing.c: Look for constraints in all type
3395         arguments, not just the first one.
3396
3397 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3398
3399         * appdomain.c: return the correct CodeBase for an Assembly instance
3400         that was loaded from the shadow-copy directories.
3401         Bug #458190 fixed.
3402
3403 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
3406
3407         * sgen-gc.c (check_object): New debugging helper function.
3408
3409         * object.c: Fix calls to mono_value_copy_array ().
3410
3411 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3412
3413         * class.c (mono_class_setup_fields): If working on an inflated class
3414         first check if the generic definition did init with success.
3415
3416         Fixes #445361.
3417
3418 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3419
3420         pedump.c (main): Fix a warning.
3421
3422 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
3423
3424         * object-internals.h : Adding a definition for 
3425           MonoReflectionComVisibleAttribute.
3426
3427         * marshal.c (cominterop_com_visible) :  Method added to check the 
3428           ComVisible attribute of a class.
3429
3430         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
3431           cominterop_raise_hr_exception added to consolidate common code 
3432           to raise hr exceptions.
3433
3434         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3435           if a managed class should support IDispatch.
3436
3437         * marshal.c 
3438           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3439           Added additional checks for managed object when getting 
3440           an IDispatch interface.
3441
3442         Code is contributed under MIT/X11 license.
3443
3444 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3445
3446         pedump.c (main): Handle mono_get_method () returning NULL. 
3447
3448 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * marshal.h: Fix a warning.
3451
3452 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3453
3454         * marshal.c : Adding cominterop_release_all_rcws to release all
3455           runtime callable wrappers held by the runtime.
3456
3457         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3458           
3459         Code is contributed under MIT/X11 license.
3460
3461 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3462
3463         * metadata.c (mono_image_alloc_lock): New helper function.
3464         (mono_image_alloc0_lock): Ditto.
3465
3466         * metadata.c: Use the alloc_lock () helper functions for allocating
3467         memory from the image mempool.
3468
3469 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3470
3471         * class.c (mono_class_from_generic_parameter): Document it's
3472         locking behavior. Fix double checked locking here, we stored in
3473         param->pklass a partially initialized MonoClass and no membar was used.
3474
3475 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3476
3477         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3478         (3) functions are present in the C library use them to do the
3479         job. If they are absent, make sure that the sum of int_part and
3480         dec_part is rounded before returning. This is necessary due to the
3481         division of dec_part by the power of 10 before the final addition
3482         is performed - if the result is not rounded in some cases it will
3483         yield invalid results.
3484
3485 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3488         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3489         instruction instead of a pointer constant.
3490
3491 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * loader.c (mono_method_get_header): Do most of the work outside the
3494         loader lock, to avoid assembly load hook deadlocks.
3495
3496         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3497         (mono_metadata_parse_type_full): Ditto.
3498
3499 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3500
3501         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3502         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3503         funtions. Finally, use a lock to produce well ordered output.
3504
3505         The lock looks silly, as all calls to the corlib mempool should be guarded
3506         with the loader lock, but for some reason this fact doesn't help. 
3507
3508         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3509
3510 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3511
3512         * socket-io.c: 64 bit big-endian fixes.
3513
3514 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3515
3516         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3517         targets that require strict compatibility between the types.
3518
3519         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3520         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3521         Kill the strict argument and create a new one valuetype_must_be_boxed.
3522
3523         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3524         state that all valuetypes must be boxed.
3525
3526         Fixes #448560.
3527
3528 2008-11-29  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
3529
3530         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3531         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3532
3533         Contributed under MIT/X11 license.
3534
3535 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3536
3537         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3538         the inflate_generic_type machinery should handle it.
3539
3540         This avoids a crash when the field's flags is zero and it's type is
3541         a primitive.
3542         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3543         is zero and will return one of the cached built-in primitive types. Since
3544         those types live in read-only memory, the code that copies it crashes.  
3545
3546 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3547
3548         * object.c: Don't put function descriptors into generalized IMT
3549         thunks.
3550
3551 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3552
3553         * class.c: Enable generic code sharing on PPC64.
3554
3555 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3556
3557         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3558         from mini/mini.c.
3559
3560         * generic-sharing.c: Allocate the method template slists from the
3561         image mempool so it doesn't leak.
3562
3563 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3564
3565         * class.c (generic_array_methods): Release the linked list.
3566
3567 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3568
3569         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3570         invocation to g_utf16_to_utf8().
3571
3572 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3573
3574         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3575         arguments on big endian archs.
3576
3577 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3578
3579         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3580         the type name (test added in corlib).
3581
3582 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3583
3584         * pedump.c: initialize perf. counters. Fixes a segv.
3585
3586 2008-11-25  Martin Baulig  <martin@ximian.com>
3587
3588         * mono-debug-debugger.c
3589         (mono_debugger_runtime_invoke): Return the exception object if an
3590         exception was thrown.  Visual Studio displays the exception object
3591         in the locals window.
3592
3593 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3594
3595         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3596         ftnptr.
3597
3598 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3599
3600         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3601         MONO_TYPE_U are sizeof (gpointer), too.
3602
3603 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3604
3605         * marshal.c (mono_type_native_stack_size): Fixed size and
3606         alignment for reference types.
3607
3608 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3609
3610         * class.c (mono_class_generic_sharing_enabled): Disable generic
3611         code sharing for PPC64.
3612
3613 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3614
3615         * icall.c (mono_method_get_equivalent_method): Make sure
3616         method->klass->methods is inited before looping over it.
3617
3618 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3619
3620         * object.c: when calling ExecuteAssembly in a newly created domain,
3621         the configuration file and application base are already set up.
3622         Bug #446353 take 2 fixed.
3623
3624 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3625
3626         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3627         Fixes #444715. Fix a warning.
3628
3629 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3630
3631         * appdomain.c: write the full path of the assembly to the .ini file
3632         created when "shadow-copying"
3633         Bug #446353 fixed.
3634
3635 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3638         if signature==FALSE.
3639
3640 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3641
3642         * marshal.h : Fix the cygwin build.
3643            marshal.c:12442: undefined reference to `_IID_IMarshal'
3644           
3645         Code is contributed under MIT/X11 license.
3646
3647 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3648
3649         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3650           free threaded marshaler when QueryInterface is called on a COM callable
3651           wrapper requesting the IMarshal interface.
3652           
3653         Code is contributed under MIT/X11 license.
3654
3655 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3656
3657         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3658
3659         * reflection.c (mono_type_get_object): Special case the very common
3660         void type.
3661
3662         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3663         hold typeof(void).
3664
3665 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3666
3667         * process.h : Adding method declaration for
3668           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3669           
3670         * process.c : Adding implementation for
3671           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3672           
3673         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3674           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3675
3676         Code is contributed under MIT/X11 license.
3677
3678 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3679
3680         * appdomain.c (unload_thread_main): Clean up threadpool by
3681         calling mono_thread_pool_remove_domain_jobs.
3682
3683         * domain-internals.h (struct _MonoDomain): Add new fields to
3684         help coordinate the cleanup of the threadpool.
3685
3686         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3687         that cleans up the threadpool of all jobs associated with an appdomain.
3688         It does that by cleaning up the queues and making sure all active
3689         threads are accounted.
3690
3691         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3692         unloaded or in the process of. Take this is such way that there is
3693         no race condition between another thread starting the unload and the
3694         current thread acknowledging it.
3695
3696         * threadpool.c (async_invoke_thread): Same.
3697
3698         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3699         firing the new thread.
3700
3701         * threadpool.c (start_tpthread): Same.
3702
3703         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3704
3705         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3706
3707 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3708
3709         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3710         Add support for DuplicateHandle.
3711         
3712         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3713         Add support for DuplicateHandle.
3714         
3715         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3716         Add support for DuplicateHandle.
3717
3718         Code is contributed under MIT/X11 license.
3719
3720 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3721
3722         * class-internals.h: Make min_align into a whole byte.
3723
3724         * class.c: Set min_align for SIMD types to 16.
3725
3726 2008-11-05  Geoff Norton  <gnorton@novell.com>
3727
3728         * attach.c: Default the attacher to enabled for all cases including
3729         embedded.
3730
3731 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3732
3733         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3734         change r117650.
3735
3736 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3737
3738         * monitor.c, monitor.h: New function for querying offsets of
3739         members of MonoThreadsSync.
3740
3741 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3744         to speed up this function and to avoid the boundless memory growth caused by
3745         the signature_dup () calls.
3746
3747 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3750         wrapper.
3751
3752         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3753         by 1 bit.
3754
3755         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3756
3757 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3758
3759         * appdomain.c:
3760         * domain-internals.h: made mono_set_private_bin_path_from_config()
3761         "internal".
3762         * object.c: call the above function after setting the configuration
3763         file path for the root domain.
3764         Fixes bug #314478.
3765
3766 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3767
3768         * assembly.c: when the assembly is loaded from an absolute path, end
3769         basedir with a directory separator.
3770         Bug #440781 fixed.
3771
3772 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3773
3774         * monitor.c (mono_monitor_get_fast_enter_method): If
3775         CompareExchange is not available, don't create the fastpath
3776         instead of asserting.  (The method is missing in the 1.1 profile.)
3777
3778 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3779
3780         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3781
3782         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3783         Monitor.Exit IL fastpaths.
3784
3785 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3786
3787         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3788
3789 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3790
3791         * class.c (mono_class_create_from_typedef): Added Vector2l.
3792
3793 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3794
3795         * class.c (mono_class_create_from_typedef): Added Vector2d.
3796
3797 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3798
3799         * appdomain.c: translate \ into / for cache_path.
3800         * domain-internals.h: new mono_is_shadow_copy_enabled().
3801         * icall.c: (fill_reflection_assembly_name) do the same path
3802         manipulations that get_code_base does.
3803         (get_code_base) use mono_is_shadow_copy_enabled.
3804
3805 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3806
3807         * appdomain.c: shadow-copied assemblies go to CachePath +
3808         ApplicationName when both are set. DynamicBase has nothing to do with
3809         shadow copies.
3810         Bug #406877 fixed.
3811
3812 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3813
3814         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3815         STANDALONESIG table.
3816
3817         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3818         standalone signatures.
3819
3820         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3821         comparison code: instead of comparing the signatures using a custom
3822         equals function, transform them to a common signature and compare that. This
3823         works better with AOT.
3824
3825 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3828
3829         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3830         call for generic instances.
3831         (mono_class_setup_properties): Call setup_properties () before accessing
3832         gklass->properties.
3833
3834         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3835         over the virtual methods of a class using metadata if possible, avoiding the
3836         creation of MonoMethod's for non-virtual methods.
3837         
3838         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3839         get_virtual_methods () to iterate over the virtual methods of classes.
3840
3841 2008-10-25  Martin Baulig  <martin@ximian.com>
3842
3843         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3844
3845 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3846
3847         * class.c (mono_class_create_from_typedef): Added Vector4i.
3848
3849 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3850
3851         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3852         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3853         special-casing applies to eliminate the call completely.
3854
3855 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3856
3857         * class.c (mono_class_create_from_typedef): Added Vector8s.
3858
3859 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3860
3861         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3862
3863 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3864
3865         * icall.c: get rid of annoying warning.
3866
3867 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3868
3869         * threadpool.c: in 1.x, if you change the background status of the
3870         threadpool thread, it's not reset.
3871         Remove unnecessary calls to SetState.
3872
3873 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3874
3875         * threadpool.c: asynchronously create a set of idle threads upon first
3876         use of the threadpool. SetMinThreads will now start the appropriate
3877         number of idle threads if they are not already running. The default is
3878         1 threadpool thread per CPU. Increased the maximum number of threads
3879         per CPU to 10.
3880
3881 2008-10-22  Martin Baulig  <martin@ximian.com>
3882
3883         Revert r116521 from Zoltan, it breaks the debugger:
3884
3885         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3886         over the virtual methods of a class using metadata if possible, avoiding the
3887         creation of MonoMethod's for non-virtual methods.
3888         
3889         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3890         get_virtual_methods () to iterate over the virtual methods of classes.
3891
3892 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3893
3894         * threads.c: when creating a threadpool thread, set its state to
3895         'background'.
3896         * threadpool.c: reset the background state of a threadpool thread
3897         after finishing each work item
3898         Bug #437888 fixed.
3899
3900 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3903         
3904         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3905         generic instances which works by inflating the methods in the container
3906         class's vtable.
3907
3908         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3909         variant which doesn't make a copy if no inflation was done.
3910         (mono_class_setup_fields): Use it.
3911
3912         * metadata.c (mono_metadata_get_shared_type): New helper function to
3913         return a shared instance of a given MonoType.
3914
3915         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3916         a copy of most non-generic types.
3917
3918 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3919
3920         * threadpool.c: remove one more GetSystemInfo () call.
3921
3922 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3923
3924         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3925         use the code in mono-proclib.h to get processor information.
3926
3927 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3928
3929         * appdomain.c: fixed the logic that determines whether assemblies in a
3930         directory are "shadow-copied" or not. Bug #433483 fixed.
3931
3932 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3935         warning.
3936
3937 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3940         returning a vtype.
3941
3942         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3943         reflection.c: Use mono_field_get_name () for accessing a field's name.
3944
3945         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3946         class.c
3947
3948         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3949         field.
3950
3951         * loader.c (find_method_in_class): Reenable the metadata optimization by
3952         not using it for generic instances.
3953
3954         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3955         data/def_type fields from MonoClassField into a separate structure.
3956         (struct MonoClassField): Remove data/def_type fields.
3957         (struct _MonoClass): Add a 'field_def_values' array to store the default
3958         values/RVA for fields.
3959
3960         * class.c reflection.c: Update after the changes.
3961         
3962         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3963         for accessing field->data.
3964
3965         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3966
3967         * loader.c (find_method_in_class): Revert the last change for now as
3968         it breaks Mono.C5 unit tests.
3969
3970         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3971         'field_generic_types' and 'field_objects' which contain the information
3972         previously stored in MonoInflatedField.
3973         (MonoInflatedField): Delete.
3974         (struct _MonoClassField): Delete 'generic_info' field.
3975
3976         * reflection.c: Store the information which was previously in 
3977         field->generic_info in MonoDynamicGenericClass instead.
3978
3979         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3980         MonoClassField changes.
3981
3982 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3983
3984         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3985         store the value inside the data array of the MonoMethodWrapper.
3986         This saves memory, is faster and fixes the lifetime issues (methods
3987         were never removed from the hash previously). May also fix bug#436996.
3988
3989 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3990
3991         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3992         generic instances, compute the type from the generic definition instead of
3993         looking in field->generic_info.
3994
3995         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3996         for inflated fields, the only user was get_fieldref_token () which no
3997         longer needs it.
3998
3999         * class.c (mono_class_init): Revert the last change as it seems to cause
4000         crashes.
4001
4002         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
4003         bytes on 64 bit platforms.
4004
4005         * object.c (mono_class_create_runtime_vtable): Fix a warning.
4006         
4007         * object.c (mono_class_create_runtime_vtable): Don't initalize
4008         field->data/field->def_type here, it is done lazily by 
4009         mono_class_get_field_default_value ().
4010
4011         * icall.c (ves_icall_get_enum_info): Call 
4012         mono_class_get_field_default_value () instead of directly accessing
4013         field->data and field->def_type.
4014
4015         * object.c (get_default_field_value): Ditto.
4016
4017         * class.c (mono_field_get_data): Ditto.
4018         
4019         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
4020         call for generic instances.
4021
4022         * loader.c (find_method_in_class): If klass != from_class, then inflate
4023         the method with the context of from_class, since the caller assumes this.
4024
4025 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
4026
4027         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
4028         for accessing method->slot.
4029
4030 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
4031
4032         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
4033
4034 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * class.c (mono_method_get_vtable_index): Use
4037         mono_method_get_vtable_slot () for accessing method->slot.
4038
4039         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
4040         accessing klass->methods.
4041
4042         * class.c (mono_method_get_vtable_slot): New helper function.
4043         (mono_class_get_vtable_entry): Ditto.
4044         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
4045         accessing method->slot.
4046
4047         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
4048         method to get_inflated_method ().
4049
4050         * class.c (mono_class_get_inflated_method): New helper method to obtain
4051         a method of an inflated class without calling setup_methods ().
4052         (mono_class_get_cctor): Use get_inflated_method.
4053
4054         * generic-sharing.c (mono_class_get_method_generic): Ditto.
4055         
4056         * marshal.c image.c: Lazily create all the marshal caches.
4057
4058         * image.c (mono_image_init): Move initialization of runtime_invoke
4059         caches to marshal.c.
4060
4061         * marshal.c (get_cache): New helper function to lazily initialize a 
4062         wrapper cache.
4063         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
4064
4065         * debug-helpers.c (mono_method_full_name): Include generic arguments.
4066
4067 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
4068
4069         * loader.c: fixed check for interface type.
4070
4071 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
4072
4073         * appdomain.c: check for NULL setup before it's referenced.
4074
4075 p
4076 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
4077
4078         * class.c: remove the unused old vtable setup code.
4079
4080 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
4081
4082         * class.c: don't depend on interface order in
4083         setup_interface_offsets (bug #435777).
4084         * reflection.c: sort the InterfaceImpl table (patch from
4085         Jb Evain  <jbevain@novell.com>).
4086
4087 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
4088
4089         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
4090         the low level assemblies lock.
4091
4092 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
4093
4094         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
4095         object.c, reflection.c, socket-io.c, threads.c: introduced
4096         mono_framework_version () to return the major framewrok version,
4097         changed the code that was using more complex patterns to use it.
4098         Return the correct value for PlatformID for OSX.
4099
4100 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
4101
4102         * icall-def.h, process.h, process.c: added an icall to get info about
4103         processes using mono-proclib.
4104
4105 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
4106
4107         * mono-perfcounters.c: use the mono-proclib functions to
4108         access process information.
4109
4110 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
4111
4112         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
4113         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
4114         reflection.c: remove rawbuffer usage: mmap support is more sanely
4115         provided by utils/mono-mmap.
4116
4117 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
4118
4119         * gc.c: use posix semaphores when possible so that
4120         mono_gc_finalize_notify() is signal safe.
4121
4122 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
4125         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
4126         be #ifdef-ed out, the linker will remove the rest.
4127
4128         * marshal.c: Implement DISABLE_COM.
4129
4130         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
4131
4132 2008-10-11  Miguel de Icaza  <miguel@novell.com>
4133
4134         * locales.c (string_invariant_compare_char): Optimization: do not
4135         call g_unichar_type unless we actually need the information.
4136
4137 2008-10-10  Mark Probst  <mark.probst@gmail.com>
4138
4139         * object.c, class-internals.h: Also create remoting trampolines
4140         for generic methods.  Pass the domain to the remoting trampoline
4141         creation function, too.
4142
4143 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
4146
4147 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4148
4149         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
4150         Vector4ui.
4151
4152 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4153
4154         * assembly.c:
4155         * locales.c: remove the use of g_strdown. Fixes bug #322313.
4156
4157 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
4158
4159         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
4160         for the least possible amount of time (extending the fix in r113458).
4161
4162 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4163
4164         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
4165
4166 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4167
4168         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
4169         as possible simd intrinsic types.
4170         Optimized the test to check for the common prefix first.
4171
4172 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
4173
4174         * class.c: back out part of a broken optimization committed on
4175         May 23th (bug #433908).
4176
4177 2008-10-09  Mark Probst  <mark.probst@gmail.com>
4178
4179         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
4180         Win32.  Should fix #432388 for most cases until we have the new
4181         profiler on Win32.
4182
4183 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
4186         instead of using inst->id so the hash is stable for AOT.
4187
4188 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4189
4190         * appdomain.c:
4191         * icall.c: create a .ini file for shadow-copied assemblies that
4192         contains the location of the original assembly. Use this to return the
4193         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
4194         Also fix the number of '/' for windows when returning the CodeBase.
4195         Fixes bug #430920.
4196
4197 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4198
4199         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
4200
4201         Code is contributed under MIT/X11 license.
4202
4203 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4204
4205         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
4206           if if the class vtable needs initialized.
4207
4208         Code is contributed under MIT/X11 license.
4209
4210 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4211
4212         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
4213           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
4214           STRING->BSTR, and CLASS->INTERFACE.
4215
4216         Code is contributed under MIT/X11 license.
4217
4218 2008-10-07  Marek Habersack  <mhabersack@novell.com>
4219
4220         * sysmath.h: changed the declaration of the
4221         ves_icall_System_Math_Round2 icall by adding an extra
4222         away_from_zero parameter.
4223
4224         * sysmath.c (ves_icall_System_Math_Round2): added support for
4225         away from zero rounding. The icall now takes an extra boolean
4226         parameter to signal that away from zero operation is requested.
4227
4228 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
4231         the delegate klass so it can work with full-aot.
4232         (mono_marshal_get_delegate_end_invoke): Ditto.
4233         (mono_marshal_get_delegate_invoke): Ditto.
4234
4235 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
4236
4237         * gc.c, attach.h, attach.c: remove a bad pattern:
4238         add_finalizer_callback () is not implemented correctly, it can't
4239         without adding more overhead to the finalizer loop and it's not
4240         even needed, since we know exactly what we need to call, so there is
4241         no need to do so through an expensive function pointer.
4242
4243 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
4246         for the no-gc case.
4247         * attach.c (mono_attach_init): Remove the #ifdef.
4248
4249 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4250
4251         * attach.c (mono_attach_init): Don't use
4252         mono_gc_add_finalizer_thread_callback when compiling without GC.
4253         Fixes #432306.
4254         
4255         Code is contributed under MIT/X11 license.
4256
4257 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * class.c (mono_class_create_from_typedef): Remove the 
4260         #ifndef DISABLE_SIMD stuff.
4261
4262 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4263
4264         * class-internals.h (MonoClass): Added simd_type bit field.
4265
4266         * class.c (mono_class_create_from_typedef): Check if type is a simd
4267         intrinsic.
4268
4269 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4270
4271         * object.c (mono_method_add_generic_virtual_invocation): Only add
4272         instantiations to the thunk whose count is at least as large as
4273         the threshold.
4274
4275 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4276
4277         * icall.c: changed the Type of the exception thrown when trying to
4278         invoke a constructor on an abstract class. Part of the fix for bug
4279         #324185.
4280
4281 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4282
4283         * class.c, class-internals.h (mono_method_get_vtable_index): New
4284         function which returns the index into the vtable and properly
4285         handles inflated virtual generic methods.
4286
4287 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4288
4289         * object.c, domain.c, object-internals.h, domain-internals.h:
4290         Generalize IMT thunk machinery to also handle thunks for virtual
4291         generic method invokes.  When a virtual generic method is invoked
4292         more than a number of times we insert it into the thunk so that it
4293         can be called without lookup in unmanaged code.
4294
4295         * generic-sharing.c, class-internals.h: Fetching a
4296         MonoGenericInst* for a method from an (M)RGCTX.
4297
4298 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4299
4300         * marshal.c (emit_marshal_string): Applied a variant of a patch by
4301         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
4302         marshalling. Fixes #431304.
4303
4304 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
4305
4306         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4307           handle when ref is specified without In or Out.
4308
4309         Code is contributed under MIT/X11 license.
4310
4311 2008-09-30  Mark Probst  <mark.probst@gmail.com>
4312
4313         * loader.c (mono_get_method_constrained): Don't expand method with
4314         the class's context, because it's already a method of that class.
4315
4316 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
4317
4318         * attach.c : should be correct build fix.
4319
4320 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4321
4322         * attach.c: Fix the previous change.
4323
4324 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
4325
4326         * attach.c : quick w32 build fix.
4327
4328 2008-09-27  Miguel de Icaza  <miguel@novell.com>
4329
4330         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
4331         crashes MonoDevelop: #430455.
4332
4333 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * domain-internals.h (struct _MonoDomain): Move most fields used only by
4336         the JIT do MonoJitDomainInfo in ../mini/mini.h.
4337
4338         * domain.c: Remove initialization/cleanup of the removed fields.
4339
4340 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4341
4342         * class.c (mono_class_generic_sharing_enabled): Enable generic
4343         code sharing for PPC.
4344
4345 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
4346
4347         * attach.c : Fixing the Windows builds.
4348
4349         Code is contributed under MIT/X11 license.
4350
4351 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
4354         the default generic sharing mode to 'all'.
4355
4356 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4357
4358         * generic-sharing.c, class-internals.h: New function for checking
4359         whether a method needs a static RGCTX invoke wrapper.  A few
4360         funtions moved from mini/generic-sharing.c.
4361
4362         * icall.c: New function used.
4363
4364 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4365
4366         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4367         Static RGCTX invoke wrapping applies to value type methods, too.
4368
4369         * class.c (mono_class_setup_vtable_general): In generic-shared
4370         value types, wrap methods with a static RGCTX invoke wrapper.
4371
4372 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
4375         osx build.
4376
4377 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4378
4379         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
4380         register a callback which is called when the finalizer thread is woken
4381         up.
4382         (finalizer_thread): Call the callback if it exists.
4383
4384         * attach.h attach.c: New files, implementing the attach mechanism.
4385
4386         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
4387         
4388         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
4389         by the previous change.
4390
4391 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4392
4393         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
4394         loader.c, marshal.c, metadata-internals.h, metadata.c,
4395         method-builder.c, object.c, reflection.c: introduced specific functions
4396         to allocate from the domain and image mempools and cleaned up most of
4397         the code to use them (still missing a few in reflection.c).
4398         Keep the loader bytes counter updated.
4399
4400 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
4401
4402         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
4403         loader-related counters.
4404
4405 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
4406
4407         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
4408         added more MS-compatible counters.
4409
4410 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4411
4412         * class.c (mono_class_setup_fields): Call setup_fields before accessing
4413         class->blittable. Fixes #428217.
4414
4415 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
4416
4417         * reflection.c (mono_image_get_field_on_inst_token): Call 
4418         field_encode_signature () since that handles custom modifiers too.
4419         Fixes #424663.
4420
4421 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * reflection.c (add_custom_modifiers): New helper function to merge custom
4424         modifiers stored in objects to a MonoType.
4425         (fieldref_encode_signature): Encode custom modifiers.
4426         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
4427         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
4428
4429 2008-09-19  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
4430
4431         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
4432         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
4433         64-bit IL only images because imports are not resolved for IL only images.
4434         Special thanks to Bill Holmes for finding this bug and testing the patch.
4435         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4436
4437         Contributed under MIT/X11 license.
4438
4439 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4440
4441         * mono-config.c (dllmap_start): Add support for the bits keyword
4442         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4443
4444 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4445
4446         * reflection.c (inflate_mono_method): When the class the method is
4447         to be inflated for is itself not inflated, just return the method.
4448
4449 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4450
4451         * mono-perfcounters.c: use more user friendly process instance names.
4452
4453 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4454
4455         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4456           handle "[in] ref" and "[in][out] ref" cases.
4457
4458         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4459           to mono_mb_create_method.  This was causing problems calling native to
4460           managed passing Variants by value.
4461
4462         Code is contributed under MIT/X11 license.
4463
4464 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4467         before accessing the friend_assembly_names field.
4468
4469         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4470         times.
4471         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4472         called lazily when it is needed.
4473
4474         * metadata-internals.h (struct _MonoAssembly): Add 
4475         'friend_assembly_names_inited' flag.
4476
4477 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4478
4479         * mono-perfcounters-def.h: fix the types of a few counters.
4480         * mono-perfcounters.c: implemented the instance names getter
4481         and a few bugfixes.
4482
4483 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4484
4485         * culture-info-table.h : regenerated.
4486
4487 2008-09-17  Robert Jordan  <robertj@gmx.net>
4488
4489         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4490         context bound objects. Fixes #415577.
4491
4492         Code is contributed under MIT/X11 license.
4493
4494 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4495
4496         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4497         implementation (bug #423582).
4498
4499 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4502         is not set. Fixes #426309.
4503
4504 2008-09-16  Jb Evain  <jbevain@novell.com>
4505
4506         * class.c (mono_class_from_name): fix the exported type look up
4507         when the type is defined in a referenced assembly.
4508
4509 2008-09-16  Jb Evain  <jbevain@novell.com>
4510
4511         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4512         increment the next index counter on each iteration to make that work
4513         for more than one type forwarder. Unmanaged part to fix #422929.
4514
4515 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4516
4517         * object-internals.h: enum ComInterfaceType in
4518         MonoInterfaceTypeAttribute is guint32, not guint16.
4519
4520 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4521
4522         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4523         writing code.
4524
4525 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4526
4527         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4528         not gboolean.
4529
4530 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4531
4532         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4533         Endianness fixes for MonoSymbolFileOffsetTable.
4534
4535 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4536
4537         * process.c (complete_path) : Removing quotes from the 
4538           input path.  The glib file routines do not handle file paths
4539           that have quotes around them.
4540
4541         Code is contributed under MIT/X11 license.
4542
4543 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4544
4545         * socket-io.h : Adding a comment to provide locations where 
4546           changes to MonoSocketAsyncResult need to be synced.
4547
4548         Code is contributed under MIT/X11 license.
4549
4550 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4551
4552         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4553         parameters as well. Fixes #425001.
4554
4555 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4556
4557         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4558         windows build.
4559
4560 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4561
4562         * console-io.c: Add support for tracking the window size if it
4563         changes.
4564
4565         The setup is very simple: the TtySetup function will now return a
4566         pointer to a location in memory that tracks the current console
4567         size.  The managed code checks its current value every time its
4568         queried against the last value set, and updates accordingly.
4569
4570         With this setup we can work with multiple consoles, and we do not
4571         require to poke into managed code from a signal handler.
4572
4573         Additionally, the environment for COLUMNS and LINES is now handled
4574         in unmanaged code.
4575
4576         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4577
4578 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4579
4580         * marshal.c (mono_type_native_stack_size): Treat
4581         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4582
4583 2008-09-04  Jb Evain  <jbevain@novell.com>
4584
4585         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4586         to nullables.
4587
4588 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * verify.c (verify_type_compatibility_full): Revert change
4591         to allow converting a native int to unmanaged pointer be verifiable
4592         under non-strict mode.
4593         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4594
4595         * verify.c: Added some TODOs.
4596
4597 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4598
4599         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4600           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4601           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4602
4603         Code is contributed under MIT/X11 license.
4604
4605 2008-09-02  Jb Evain  <jbevain@novell.com>
4606
4607         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4608
4609 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         reflection.c (typebuilder_setup_fields): Handle classes with
4612         explicit size.
4613
4614 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4615
4616         class.c (mono_class_setup_events): Add memory barrier due to
4617         double checked locking.
4618         
4619         class.c (mono_class_setup_properties): Same.
4620
4621 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * class.c (mono_class_is_assignable_from): Fix the build.
4624         
4625         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4626         before accessing klass->interface_bitmap. Fixes #421744.
4627
4628 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4631         the runtime into no-exec mode, useful when running the AOT compiler.
4632
4633         * appdomain.c gc.c object.c: Avoid executing managed code when running
4634         in no-exec mode.
4635         
4636         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4637
4638         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4639         special case when the mono_assembly_loaded () returns NULL because the 
4640         search hook is not installed.
4641
4642 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4645         crashes in bstr marshalling on linux.
4646
4647 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4650         with more than one parameter.
4651
4652 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4653
4654         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4655         start/stop flow control as well when turning off ICANON (allows
4656         C-s and C-q to be read by Console.ReadKey).
4657
4658 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4659
4660         * class.c (mono_class_init): Move the initialization of nested classes
4661         into mono_class_get_nested_types (). Fixes #418433.
4662
4663         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4664         flag.
4665
4666         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4667         iterating tough the nested classes of a class.
4668
4669 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4672         on arm.
4673
4674 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4675
4676         * console-io.c (sigcont_handler): Support signal chaining for
4677         SIGCONT.
4678
4679         (console_set_signal_handlers): Use best practices with sigaction,
4680         clear the structure before using it. 
4681
4682 2008-08-22  Robert Jordan  <robertj@gmx.net>
4683
4684         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4685         Fix the Windows build.
4686
4687 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * class.c (mono_class_generic_sharing_enabled): Make the default
4690         sharing mode 'corlib'.
4691
4692 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * console-io.c (console_set_signal_handlers): Fix a warning.
4695
4696         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4697         method normally, the JIT will take care of avoiding recursion.
4698
4699 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4700
4701         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4702
4703         Code is contributed under MIT/X11 license.
4704
4705 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4706
4707         * console-io.c (sigcont_handler): We need to restore the entire
4708         termios state, not only the original settings, as things like echo
4709         can be controlled after this (Booish exposes this issue with its
4710         own ReadLine implementation).
4711
4712         Additionally, we need to set the terminal back into keypad_xmit
4713         mode.
4714         
4715         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4716         string as a paramter as well.   Otherwise we get different
4717         keyboard sequences.
4718
4719 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4720
4721         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4722         delegates with byref out parameter passing. Fixes #351520.
4723
4724         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4725         a generic context.
4726         (mono_type_get_desc): Add the type arguments for GENERICINST.
4727         (mono_method_full_name): Stringify the class name using mono_type_full_name
4728         so it picks up generic arguments.
4729
4730 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4731
4732         * console-io.c: Removed debug output.
4733
4734 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4735
4736         reflection.c (mono_reflection_create_runtime_class): Alloc
4737         the nested classes linked list using the dynamic image mempool.
4738         Fixes leak in corlib compilation.
4739
4740 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4741
4742         * console-io.c: Fix incredibly annoying behavior on the console
4743         after resuming execution after control-z.   This affected every
4744         console application.
4745
4746 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4747
4748         * mempool-internals.h: Header for mono private mempool functions. The first
4749         two function are for allocating glib linked lists using pools.
4750
4751         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4752
4753         * Makefile.am: Added mempool-internals.h.
4754
4755 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4756
4757         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4758         (mono_domain_free): Ditto.
4759
4760         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4761         be used by the JIT to store its domain-specific information, instead of putting
4762         it directly into MonoDomain.
4763
4764         * domain.c (mono_install_create_domain_hook): New helper function to install
4765         a hook which initializes domain->runtime_info.
4766
4767         * domain.c (mono_install_free_domain_hook): Ditto.
4768         
4769 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4770
4771         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4772         asserting if the ares parameter is null.
4773
4774         * mono-perfcounters.c: Fix warnings.
4775
4776         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4777         is not needed, don't check for interruptions either.
4778         (mono_marshal_get_delegate_end_invoke): Ditto.
4779
4780 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4781
4782         * mono-perfcounters.c (predef_readonly_counter): added support for
4783         reading the ASP.NET Requests Queued counter from another process.
4784
4785 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4788         MonoImage to simplify the AOT code.
4789
4790 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4791
4792         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4793         marshalling. Fixes #416078.
4794
4795 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4796         
4797         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4798         it is set, looking up the icall address is deferred to the JIT, since 
4799         in embedded scenarios, the icall might not be registered in the runtime
4800         doing the AOT compilation. Backported from the 2.0 branch.
4801
4802 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4803
4804         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4805         Fixes #415621.
4806
4807 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4808
4809         * Makefile.am: added support for cross-compilation.
4810
4811 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4812
4813         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4814
4815 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4816
4817         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4818
4819 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4820
4821         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4822         mono-perfcounters.c: performance counters implementation.
4823
4824 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4825
4826         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4827         to gpointer, letting the AOT code decide what to store in it.
4828
4829 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4830
4831         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4832           mono_class_setup_methods if the methods are not initialized.
4833
4834         Code is contributed under MIT/X11 license.
4835
4836 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * verify.c: Remove some debug code I commited by accident.
4839
4840         * verify.c (mono_method_is_valid_in_context): Change the return value
4841         to make possible to distinguish between invalid and unverifiable.
4842
4843         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4844         methods.
4845
4846 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4847
4848         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4849         constraints. Fixes regression in gtest-253.
4850
4851 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4852
4853         * verify.c (mono_verifier_verify_class): Don't allow generic types
4854         with explicit layout.
4855
4856         * verify.c (mono_method_verify): Check locals and argument types.
4857
4858 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4859
4860         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4861         wait if the thread is in StopRequested state.
4862
4863         * class.c (mono_class_from_name): Refactor the module searching code into
4864         a separate function so it can be reused in the AOT case too.
4865
4866 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4869         Check both the type and it's generic type definition for loader errors.
4870         
4871         * verify.c (mono_method_is_valid_in_context): Don't generate another
4872         error when a type errors occur, this leads to the wrong exception been
4873         thrown.
4874
4875 2008-07-28  Dick Porter  <dick@ximian.com>
4876
4877         * icall-def.h
4878         * process.c
4879         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4880         New internal calls to duplicate and close a process handle.
4881
4882 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4883
4884         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4885
4886 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4887
4888         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4889
4890 2008-07-27  Robert Jordan  <robertj@gmx.net>
4891
4892         * class.c (mono_class_init): Don't compute class.has_finalize for
4893         valuetypes. Fixes #412477.
4894
4895 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4896
4897         * verify.c: Implement constraint equivalence checking.
4898         This is required when a generic parameter is used as
4899         argument to a constrained one.
4900
4901         Fixes #410637.
4902
4903 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4906
4907         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4908
4909         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4910         synch with managed object layout.
4911
4912 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4913
4914         * verify.c (do_branch_op): Handle valuetypes and generic
4915         arguments properly.
4916
4917         * verify.c (do_cmp_op): Same.
4918
4919         Fixes #410383.
4920
4921 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4922
4923         * generic-sharing.c: Fix memory leaks.
4924
4925         * class.c, class-internals.h: Make
4926         mono_class_inflate_generic_type_with_mempool() non-static.
4927
4928 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4929
4930         * pedump.c (dump_verify_info): Dump full class name.
4931
4932 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4933
4934         * generic-sharing.c: Removed some old code that didn't do anything.
4935
4936 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4937         * profiler.c: Added runtime_initialized_event,
4938         mono_profiler_install_runtime_initialized and
4939         mono_profiler_runtime_initialized. This new hook tells the profiler
4940         when the runtime is sufficiently initialized to be able to call
4941         mono_thread_attach on the root appdomain.
4942         * profiler.h, profiler-private.h: Likewise.
4943
4944 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4945
4946         * verify.c (do_cast): Do boxing for generic arguments as well.
4947
4948         * class.c (is_nesting_type): Drop generic instantiations before
4949         checking for nesting.
4950
4951         * class.c (can_access_instantiation): Allow access to generic
4952         arguments.
4953
4954 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4955
4956         * verify.c (verify_class_for_overlapping_reference_fields):
4957         On some cases, the field size might be zero, guard against that.
4958         Fix the explicit layout check to work as expected.
4959
4960 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4963         mono_thread_resume () during shutdown, since the thread we want to abort
4964         might be suspended.
4965
4966 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4967
4968         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4969         warning.
4970
4971         * debug-mono-symfile.c: Fix a warning.
4972
4973         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4974
4975         * object.c (mono_class_vtable): Check if exception_type is set, and return
4976         NULL as defined by the function comments.
4977
4978 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4979
4980         * mempool.c: Use malloc for every single mempool allocation if the
4981         configure option is set.  This makes it easier to track mempool
4982         allocations with tools like Valgrind.
4983
4984 2008-07-22  Jb Evain  <jbevain@novell.com>
4985
4986         * reflection.c (create_dynamic_mono_image): emit the same
4987         metadata version that SL2 does when creating a SL2 image.
4988
4989 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4990
4991         * icall-def.h:
4992         * icall.c: New icall System.Enum:get_hashcode. This function
4993         avoids the overhead of boxing the enum to the underlying type.
4994
4995 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4996
4997         * reflection.c (mono_method_get_object): Don't let static RGCTX
4998         invoke wrappers get into MonoReflectionMethods.
4999
5000 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
5001
5002         * object-internals.h:
5003         * object.c: New mono_runtime_class_init_full function
5004         that makes throwing the exception optinal.
5005
5006         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
5007         for the case where the exception object is supplied.
5008
5009 2008-07-16  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
5010
5011         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
5012         old ld versions.
5013
5014         Contributed under MIT/X11 license.
5015
5016 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * string-icalls.c (ves_icall_System_String_InternalSplit):
5019         Optimize array allocation by caching the MonoClass of the
5020         array type.
5021
5022         * icall.c (ves_icall_Type_GetMethodsByName): Same.
5023
5024         * reflection.c (mono_param_get_objects): Same.
5025
5026 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * icall-def.h:
5029         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
5030         It inflates the given type using the class context.
5031
5032 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
5033
5034         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
5035         the vtable if it already exists.
5036
5037         * object-internals.h: Add mono_class_try_get_vtable as part of the
5038         internal API.
5039
5040         * reflection.c (mono_type_get_object): Use the MonoObject from the
5041         vtable when possible. Reduces locking contention on reflection heavy
5042         code.
5043
5044 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
5045
5046         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
5047         g_bit_nth_msf () since that macro is not implemented in eglib.
5048
5049 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
5050
5051         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
5052         on platforms which do not support it.
5053
5054 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
5055
5056         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
5057
5058 2008-07-11  Martin Baulig  <martin@ximian.com>
5059
5060         * mono-debug-debugger.h
5061         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
5062
5063         * mono-debug-debugger.c
5064         (_mono_debugger_interruption_request): New global volatile variable.
5065         (mono_debugger_check_interruption): New public function.
5066
5067         * threads.c
5068         (mono_thread_current_check_pending_interrupt): Call
5069         mono_debugger_check_interruption().
5070         (mono_thread_interruption_checkpoint_request): Likewise.
5071
5072 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5073
5074         * verify.c: Add more type checks for loaded types. Verify the result
5075         handle from ldtoken.
5076
5077 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5078
5079         * loader.c (field_from_memberref): Don't crash if the field
5080         wasn't found.
5081
5082 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * verify.c: Verify if type and method instantiations
5085         don't have invalid VAR or MVAR arguments.
5086
5087 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5088
5089         * verify.c: Fix double free of function pointer list.
5090
5091 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
5092
5093         * object.c (mono_string_to_utf8): Comment the new code as it
5094         breaks under eglib.
5095
5096 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
5097
5098         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
5099
5100 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
5101
5102         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
5103           is not throw too many times.
5104
5105         Code is contributed under MIT/X11 license.
5106
5107 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
5108
5109         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
5110         debugging is turned off.
5111
5112 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
5113
5114         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
5115
5116 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5117
5118         * class-internals.h, class.c: Added new generic sharing option:
5119         Share only stuff in System.Collections.Generic, which is now the
5120         default.
5121
5122 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5123
5124         * generic-sharing.c, class-internals.h: New function for getting a
5125         generic method in a generic class given the corresponding method
5126         for a different instantiation of the class.  Partly refactored
5127         from mini-trampolines.c.
5128
5129         * class.c: Make sure generic methods have a class_inst if they are
5130         part of a generic class.
5131
5132         * metadata.c (mono_type_stack_size_internal): Handle type
5133         variables.
5134
5135 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5136
5137         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
5138         Signifies whether information on the this/vtable/mrgctx variable
5139         is available.
5140
5141 2008-07-04  Mark Probst  <mark.probst@gmail.com>
5142
5143         * object.c, object-internals.h, icall.c: New function
5144         mono_delegate_ctor_with_method(), which does the same as
5145         mono_delegate_ctor(), but takes an explicit method argument
5146         instead of taking the method from the jit info.
5147
5148         * marshal.c: When creating a delegate with an inflated method take
5149         the "this" argument as the target class for the castclass.
5150
5151 2008-07-03  Mark Probst  <mark.probst@gmail.com>
5152
5153         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
5154         mono_jit_info_table_find() to perform very badly in some cases.
5155
5156 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
5157
5158         * icall.c (type_from_typename): Handle 'string'.
5159
5160         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
5161         wrappers into the wrapper_hash, since the key is not a MonoMethod.
5162
5163 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
5166
5167         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
5168         number of available managed allocator types.
5169
5170         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
5171         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
5172
5173 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
5174
5175         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
5176         which is a low level lock protecting just the 'jit_code_hash' hash table.
5177
5178         * domain.c: Initialize+cleanup jit_code_hash_lock.
5179         
5180 2008-06-30  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
5181
5182         * coree.c (mono_load_coree): Set coree_module_handle global variable only
5183         after initialization.
5184
5185         * coree.h: Make MonoFixupExe internal.
5186
5187         Contributed under MIT/X11 license.
5188
5189 2008-06-30  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
5190
5191         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
5192         because that is platform independent. Check NumberOfRvaAndSizes in PE32
5193         as well.
5194         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
5195         image being loaded is a CLI image and _CorValidateImage gets called.
5196
5197         * coree.h: Add MonoLoadImage.
5198
5199         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
5200         instead of LoadLibrary.
5201
5202         Contributed under MIT/X11 license.
5203
5204 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
5205
5206         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
5207         for any primitive type.
5208
5209 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5210
5211         * object.c (mono_array_new_specific): Optimize this and the other allocation
5212         functions a bit.
5213         
5214         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
5215         domains too if mono_dont_free_domains is set.
5216
5217         * domain-internals.h (mono_dont_free_domains): New internal option controlling
5218         whenever to free appdomain data after it has been unloaded.
5219
5220         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
5221         
5222 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
5223
5224         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
5225         (mono_method_get_equivalent_method): Fix a warning.
5226
5227         * object.c (mono_message_init): Avoid looking up array types for each call.
5228
5229 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5230
5231         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
5232         call.
5233
5234         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
5235         even more.
5236
5237         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
5238         each iteration.
5239
5240         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
5241         fields of an enum.
5242
5243 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5244
5245         * object.c (mono_value_box): Fix boxing of nullables.
5246
5247 2008-06-26  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
5248
5249         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
5250         mono_module_handle that is defined by the linker; no initialization required.
5251         * coree.h: Remove mono_module_handle, add __ImageBase, update
5252         mono_image_open_from_module_handle.
5253         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
5254         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
5255         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
5256         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
5257         to 4 GB away from image base address. IA64 version is not tested but was very
5258         easy to implement and should work if we ever need it.
5259         * domain.c (mono_init_internal): Avoid system error message boxes.
5260         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
5261         with has_entry_point. Handle do_mono_image_load fauilre correctly.
5262         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
5263         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
5264         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
5265
5266         Contributed under MIT/X11 license.
5267
5268 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
5271         as part of the private mono API.
5272         
5273         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
5274         Do proper argument checking for methods that belong to generic classes.
5275         Do proper type resolution for GMFH/2.
5276         Fixes #377324.
5277         
5278 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5279
5280         * verify.c (do_switch): Fix a memory corruption bug with
5281         the jump index is out of bound.
5282
5283 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5284
5285         * verify.c: Disable debug code.
5286
5287 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5288
5289         * reflection.c (mono_image_get_methodbuilder_token): Use
5290         mono_image_get_methodspec_token_for_generic_method_definition
5291         instead of mono_image_get_memberref_token. We cache more memberef
5292         entries now.
5293
5294 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5295
5296         * verify.c: Inflate exception clause types.
5297         Fixes #402606.
5298         
5299 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5300
5301         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
5302         name.
5303
5304         * reflection.c (mono_image_get_ctorbuilder_token): Same.
5305
5306         * reflection.c (mono_image_create_method_token): Same.
5307
5308 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5309
5310         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
5311         It does the same as mono_image_get_methodref_token but works on
5312         MethodBuilder.
5313
5314         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
5315         and always generate a methodspec. This follows the old behavior and fixes
5316         the regressions in System.Core. 
5317
5318 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
5321         don't event mono_class_get () succeeds. Fixes #402182.
5322
5323 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5324
5325         * metadata-internals.h: Added MonoDynamicImage::methodspec
5326         hashtable to store methodspec tokens created for MethodBuilders.
5327
5328         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
5329         MethodBuilders as open instantiations if a methodspec was requested.
5330
5331         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
5332
5333         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
5334
5335         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
5336
5337         Fixes bug #349190.
5338
5339 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5340
5341         * loader.c (method_from_methodspec): Avoid crashing if the
5342         method lookup fails.
5343
5344 2008-06-20  Dick Porter  <dick@ximian.com>
5345
5346         * socket-io.c (get_socket_assembly): Cope with Moonlight network
5347         classes being in a different assembly.  Fixes bug 399184.
5348
5349 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
5350
5351         * loader.c (mono_loader_init): Make this callable multiple times.
5352         (mono_dllmap_insert): Call mono_loader_init () so this works even before
5353         the runtime is initialized. Fixes #401755.
5354
5355 2008-06-19  Dick Porter  <dick@ximian.com>
5356
5357         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
5358         Fixes bug 349688.
5359
5360 2008-06-19  Dick Porter  <dick@ximian.com>
5361
5362         * socket-io.c:
5363         * icall-def.h: Implement Socket generic Send() and Receive()
5364         methods.  Fixes bug 395168.
5365
5366 2008-06-19  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
5367
5368         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
5369
5370         Contributed under MIT/X11 license.
5371
5372 2008-06-18  Martin Baulig  <martin@ximian.com>
5373
5374         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
5375         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
5376         set to 80.0.  The debugger <-> runtime interface is now frozen as
5377         well.   
5378
5379         * mono-debug.c
5380         (mono_debug_debugger_version): Bump to 4.
5381
5382 2008-06-18  Martin Baulig  <martin@ximian.com>
5383
5384         * debug-mono-symfile.c
5385         (load_symfile): Don't check the minor version.
5386
5387         * debug-mono-symfile.h: Bump the version number to 50.0.
5388
5389 2008-06-18  Martin Baulig  <martin@ximian.com>
5390
5391         * debug-mono-symfile.c
5392         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
5393         minimum required version.
5394
5395 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5396
5397         * reflection.c (mono_custom_attrs_from_property): Fix support for
5398         retriveving cattrs of dynamic inflated generic types.
5399
5400         * reflection.c (mono_custom_attrs_from_event): Same.
5401
5402         * reflection.c (mono_custom_attrs_from_field): Same;
5403
5404         * reflection.c (typebuilder_setup_events): Same cattrs of events.
5405
5406         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
5407         Moved to metadata.c.
5408
5409         * metadata.c: New functions to retrive the equivalent field, event
5410         of property from the generic type definition.
5411
5412         * metadata-internals.h: Added new functions from metadata.c.
5413
5414 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5415
5416         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
5417         to cached in a mempool is used.
5418
5419         * metadata.c (free_generic_class): In some situations field generic_info type
5420         is not properly dup'ed and leads to double free'ing.
5421
5422         Fixes #400643.
5423
5424 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5425
5426         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
5427         this arguments (will be needed later for generic methods).
5428         Collect stats.
5429
5430 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5431
5432         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5433         Create a static RGCTX invoke wrapper for methods which require it.
5434
5435 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5436
5437         * object.c, class-internals.h: New function for checking whether
5438         an individual field is special static.
5439
5440 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5441
5442         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5443         linear search since the table is sorted.
5444
5445         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5446         Fixes #324180.
5447
5448 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5451         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5452
5453         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5454
5455         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5456         
5457         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5458         InterlockedCompareExchange to query and modify 
5459         thread->interruption_requested.
5460
5461         * object-internals.h (struct _MonoThread): Change interruption_requested
5462         to a gint32 so it can be modified by atomic operations. Add 
5463         'critical_region_level' from the managed side, change small_id to a guint32,
5464         add new set of 'unused' fields.
5465
5466         * appdomain.c: Bump corlib version.
5467
5468 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * class.c (mono_class_from_name): Search modules as well. Fixes
5471         #322332.
5472
5473 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5474
5475         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5476         templates.  Templates are generalized with an additional type_argc
5477         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5478         have type_argc>0.
5479
5480         * domain-internals.h, domain.c: New hash table for looking up
5481         MRGCTXs.
5482
5483         * metadata.c, metadata-internals.h: Rename hash and equal
5484         functions for MonoGenericInst's and make them public.
5485
5486         * class-internals.h: New data structures for the MRGCTX.  Macros
5487         for distinguishing slots in the RGCTX and the MRGCTX.
5488
5489 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5490
5491         * object.c (mono_method_get_imt_slot): Put the same methods of
5492         different instantiations of the same generic interface in the same
5493         IMT slots, to make generic sharing simpler.
5494
5495 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5496
5497         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5498
5499         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5500         This function works just like mono_metadata_field_info, but
5501         accept a mempool as argument to be used allocating memory.
5502
5503         * marshal.c (mono_marshal_load_type_info): Use new function
5504         to load marshal data into image mempool.
5505
5506 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5507
5508         * class.c (mono_class_inflate_generic_type_with_mempool):
5509         This function allows to inflate a generic type using
5510         a mempool.
5511
5512         * class.c (inflate_generic_type): Take a mempool as argument
5513         and use it to do type dup'ing.
5514
5515         * class.c (mono_class_setup_fields): Field type for generic
5516         generic classes are allocated from the image mempool.
5517
5518         * metadata.c (free_generic_class): Inflated field type is
5519         now allocated in the image mempool.
5520
5521 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5522
5523         * threads.c (thread_cleanup): Free MonoThread::name.
5524
5525 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5526
5527         * appdomain.c (ensure_directory_exists): avoid unnecessary
5528         mkdir(2) calls when the shadow directory already exists.
5529         (mono_make_shadow_copy): copy also satellite assemblies from the
5530         private bin directories.
5531
5532 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5533
5534         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5535         
5536         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5537         a page boundary. Fixes #396219.
5538
5539 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5542         due to double-checked locking.
5543
5544 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5545
5546         * assembly.c (build_assembly_name): Release memory on failure.
5547
5548         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5549
5550 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5551
5552         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5553         memory on failure.
5554
5555 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5556
5557         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5558         memory on failure.
5559
5560 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5561
5562         * loader.c (field_from_memberref): Check if field signature type is equal
5563         to the non-inflated type of the field. Fixes #398980.
5564
5565 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * assembly.c (mono_assembly_load_from_full): Call 
5568         mono_assembly_load_friends () outside the assemblies lock, since it can
5569         acquire the loader lock. Fixes #323696.
5570
5571         * reflection.c (resolve_object): Inflate the inst with the context for
5572         FieldOnTypeBuilderInst. Fixes #399010.
5573
5574 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5575
5576         * reflection.c (mono_image_get_field_on_inst_token): Don't
5577         inflate the field to encode it's signature. If it's a
5578         VAR or MVAR it should stay that way in the signature.
5579         Fixes #399047.
5580
5581 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * reflection.c (resolve_object): Release memory of inflated types.
5584
5585 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5586
5587         * loader.c (mono_method_get_signature_full): Remove assert about
5588         loading a methodspec to a generic method. We have such methods, such as
5589         System.Threading.Interlocked::CompareExchange<T>.
5590         This assert was removed since it crashes the verifier when it checks
5591         methods calling CompareExchange<T>.
5592
5593 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5594
5595         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5596         of Type array and not MonoType.
5597
5598 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5599
5600         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5601         <lupus@ximian.com>
5602
5603 2008-06-10  Martin Baulig  <martin@ximian.com>
5604
5605         * debug-mono-symfile.h
5606         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5607         changes to the file format, but we were generating incorrect
5608         source file indices in the line number table due to a bug, which
5609         made backtraces report an incorrect source file.
5610
5611 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5612
5613         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5614         mini/debug-mini.c to here.
5615
5616         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5617
5618         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5619         use it to release structs returned by mono_debug_find_method.
5620
5621 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5624         since it needs to set method->slot for all interface methods.
5625
5626 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5627
5628         * class-internals.h: Forgot to add.
5629
5630 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5631
5632         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5633
5634         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5635         Lookup the custom attributes from property_hash.
5636
5637         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5638         in property_hash. Allocate all data using the image mempool.
5639
5640         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5641         for dynamic_custom_attrs to checks if the image is dynamic.
5642
5643 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5644
5645         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5646         assemblies array.
5647         
5648         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5649         runtime functions while holding the domain assemblies lock.
5650
5651 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5652
5653         * verify.c: Reapplied the last bit of the reverted changes.
5654
5655 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5656
5657         * verify.c: Reapplied more of the reverted changes.
5658
5659 2008-06-09  Martin Baulig  <martin@ximian.com>
5660
5661         * debug-mono-symfile.c (load_symfile): Check the major version
5662         first; if it's wrong, don't print the minor version in the error message.
5663
5664 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5667         lock instead of the domain lock to avoid deadlocks, since the thread might
5668         already hold the loader lock.
5669
5670         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5671         (mono_thread_attach): Ditto.
5672
5673         * monitor.c: Use a TLS variable for holding the current thread id instead
5674         of calling pthread_self ().
5675         (mono_monitor_init_tls): New internal function to initialize the TLS
5676         variable.
5677         (mono_monitor_try_enter_internal): Put the owner == id check after the
5678         owner == 0 check.
5679
5680         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5681         missed optimizations when using gcc-4.3.
5682
5683 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5684
5685         * reflection.c (mono_dynamic_image_free): Free the memory
5686         used by MonoGenericParam in MonoDynamicImage::gen_param.
5687
5688         * reflection.c (mono_reflection_setup_generic_class): Allocate
5689         container from mempool.
5690
5691         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5692         container from mempool.
5693
5694 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * threads.c (mono_set_pending_exception): New internal function to set the
5697         pending exception of the current thread.
5698         (mono_thread_get_and_clear_pending_exception): Check for 
5699         thread->pending_exception as well.
5700
5701         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5702
5703         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5704         it can trigger a collection.
5705
5706 2008-06-06  Martin Baulig  <martin@ximian.com>
5707
5708         Merged the `debugger-kahalo' branch.
5709
5710         * mono-debug.h
5711         (MONO_DEBUGGER_VERSION): Bumped to 72.
5712
5713         * debug-mono-symfile.h
5714         (MonoSymbolFileMethodIndexEntry): Removed.
5715         (MonoSymbolFileMethodEntry): New public typedef.
5716         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5717         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5718         `data_offset'.
5719         (MonoSymbolFileMethodEntry): Removed.
5720         (MonoSymbolFileLexicalBlockEntry): Removed.
5721         (MonoSymbolFileLineNumberEntry): Removed.
5722         (MonoDebugLexicalBlockEntry): Removed.
5723         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5724         removed `num_il_offsets' and `il_offsets'.
5725         (MonoSymbolFile): Replace `version' with `major_version' and
5726         `minor_version'.
5727         (MONO_SYMBOL_FILE_VERSION): Replace with
5728         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5729         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5730
5731         * debug-mono-symfile.c
5732         (mono_debug_symfile_lookup_location): Add support for the new line
5733         number table format.
5734
5735 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * metadata.c (free_generic_class): Release the inflated
5738         MonoClass of dynamic generic classes if it's not a generic
5739         type definition.
5740
5741 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         * verify.c: Reapplied more of the reverted changes.
5744
5745 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5746
5747         * reflection.c (lookup_custom_attr): Clean the cached flag or
5748         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5749         for SRE types.
5750
5751 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5752
5753         * verify.c: Reapplied a small part of the reverted changes.
5754
5755 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5756
5757         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5758
5759         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5760         previously in managed code.
5761         (mono_monitor_exit): Ditto.
5762         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5763
5764         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5765         the managed definition.
5766
5767 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5770
5771 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5772
5773         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5774         
5775         * monitor.c: Add some micro optimizations.
5776
5777         * icall.c (type_from_typename): Handle 'bool'.
5778
5779 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5780
5781         * verify.c: Implement constructor verification per P III 1.8.1.4.
5782         Fixes #396716.
5783
5784 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5785
5786         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5787         holding the assemblies lock here too.
5788
5789 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         * verify.c: Kill stack_top function.
5792
5793 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5794
5795         * verify.c: Kill stack_get function.
5796
5797 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5800
5801 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5804         more reliable.
5805
5806         * verify.c (mono_method_verify): Inflate params and locals to avoid
5807         mismatch when checking for compatibility.
5808
5809 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5810
5811         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5812         Length prefix should be size in bytes. Fix bug #339530.
5813         
5814         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5815         Length prefix should be size in bytes. Fix bug #339530.
5816
5817         Code is contributed under MIT/X11 license.
5818
5819 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5820
5821         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5822
5823         Contributed under MIT/X11 license.
5824
5825 2008-06-05  Martin Baulig  <martin@ximian.com>
5826
5827         * mono-debug-debugger.c
5828         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5829
5830 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5831
5832         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5833         while holding the assemblies lock to prevent deadlocks. Handle the case
5834         where the search hook returns NULL but the assembly was still loaded.
5835         Fixes #323696.
5836
5837         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5838         modify domain state.
5839
5840 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5841
5842         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5843         * Makefile.am (pedump_LDADD): Post-process object files and
5844         add dtrace-generated object file, if necessary.
5845
5846         Code is contributed under MIT/X11 license.
5847
5848 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5849
5850         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5851
5852 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5853
5854         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5855
5856 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5857
5858         * threads.c: Try to free everything from the delayed free table
5859         when shutting down threads, and set the variable to NULL after the
5860         table is freed so that calling
5861         mono_thread_hazardous_try_free_all() when shutting down the root
5862         domain doesn't crash.
5863
5864 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5865
5866         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5867         the caller if resulting type was inflated.
5868
5869         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5870         was inflated.
5871
5872         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5873
5874
5875 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5878         class library tests.
5879
5880         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5881         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5882         #396989.
5883
5884 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5885
5886         * domain.c, domain-internals.h: The JIT infos are now freed by the
5887         JIT info table code.  They are freed immediately if there only a
5888         single JIT info table in circulation.  If there is more, the free
5889         is delayed via a queue.
5890
5891         * threads.c, threads-types.h: New hazard pointer function for
5892         freeing all freeable delayed items in one sitting.
5893
5894 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5897
5898         * reflection.c (typebuilder_setup_properties): Same.
5899
5900         * reflection.c (typebuilder_setup_events): Same.
5901
5902 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5903
5904         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5905         and use it for allocating memory.
5906
5907         * reflection.c (mono_marshal_spec_from_builder): Same.
5908
5909         * reflection.c: Change code to use new signatures.
5910
5911         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5912
5913 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * decimal.c (rescale128): Put back one line which was accidently commented
5916         out.
5917         
5918         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5919         to cause crashes.
5920
5921 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5922
5923         * reflection.c (mono_reflection_generic_class_initialize): Name must
5924         be always malloc'ed so we can free it later on. Do this for field, property
5925         and event.
5926
5927         * metadata.c (free_generic_class): Free field, property and event names.
5928
5929 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5930
5931         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5932         instead of g_memdup.
5933
5934         * reflection.c (typebuilder_setup_fields): Same.
5935
5936 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5937
5938         * decimal.c (rescale128): Optimize this function a bit more.
5939
5940 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * metadata.c (free_generic_class): Release some memory from
5943         SRE generic classes.
5944
5945 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5946
5947         * reflection.c (mono_image_get_generic_field_token): No reference
5948         to name is kept, free it.
5949
5950         * reflection.c (mono_reflection_generic_class_initialize): Free
5951         more memory of the inflated field.
5952
5953 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5954
5955         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5956         code.
5957
5958 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5959
5960         * reflection.c (mono_dynamic_image_free): Release memory used by
5961         MonoDynamicImage::array_methods elements.
5962
5963         * reflection.c (assembly_add_win32_resources): Release memory after
5964         encoding.
5965
5966 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5967
5968         * decimal.c (log2_32): Use an optimized version for this function too.
5969         
5970         * decimal.c (log2_64): Fix this on 32 bit machines.
5971
5972 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5973
5974         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5975
5976         * class.c (mono_metadata_signature_deep_dup): Same.
5977
5978         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5979         a mempool.
5980
5981         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5982
5983         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5984
5985         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5986
5987         * class-internals.h: Update signatures to take a MonoMemPool.
5988
5989 2008-06-02  Dick Porter  <dick@ximian.com>
5990
5991         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5992         * icall-def.h: Add
5993         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5994         FormatMessage API to get the error text.  Fixes bug 321827.
5995
5996 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * decimal.c: Add some micro optimizations to make decimal operations faster.
5999
6000 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
6001
6002         * reflection.c (method_encode_clauses): Take a mempool
6003         as parameter and use it to allocate the clause array.
6004
6005         * reflection.c (mono_image_get_field_on_inst_token): Free
6006         the inflated type after encoding it.
6007
6008         * reflection.c (mono_dynamic_image_free): Free each element
6009         of MonoDynamicImage::gen_params.
6010
6011         * reflection.c (reflection_methodbuilder_to_mono_method):
6012         Allocate the generic param array from the mempool.
6013         Allocate signature params from the mempool.
6014
6015         * reflection.c (mono_reflection_generic_class_initialize):
6016         Free inflated fields after been used.
6017
6018 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
6019
6020         * icall.c: Reapply the memory leak fixes as they no
6021         longer make mono crash.
6022
6023 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
6024
6025         * reflection.c (mono_type_get_object): Don't store the suplied
6026         MonoType with type_hash. A caller which pass a type that
6027         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
6028         might end with a pointer to freed memory.
6029         The solution is to use byval_arg or this_arg from the associated
6030         MonoClass of the supplied type.
6031
6032 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
6033
6034         * icall.c: Revert the rest of the last change as it breaks the build too.
6035
6036 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6037
6038         * icall.c: Revert a leak fix as it's breaking the build.
6039
6040 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
6043
6044 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6045
6046         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
6047
6048 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
6049
6050         * icall.c: Fix some memory leaks.
6051
6052 2008-05-29  Dick Porter  <dick@ximian.com>
6053
6054         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
6055         async socket operations from the pending list when a socket
6056         closes.  Leaving it until the threadpool services the event
6057         exposes a race condition when a socket descriptor is reused.
6058         Fixes bug 377589.
6059
6060 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6061
6062         * object.c: Fix negative index check for array alocation.
6063
6064 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6065
6066         * icall.c, marshal.c: Delegate wrappers should skip visibility.
6067         This check is performed by the verifier for IL created delegates
6068         and by Delegate::CreateDelegate for programatically created ones.
6069         Fixes #372406.
6070
6071 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6072
6073         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
6074         Fix code to use mono_array_size_t instead of int.
6075
6076         Based on patch by Luis F. Ortiz.
6077         Contributed under X11 license.
6078         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6079
6080 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * icall.c: Added ves_icall_System_Array_GetLongLength and
6083         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
6084         arrays.
6085
6086         * icall.h: Export both new functions.
6087
6088         Based on patch by Luis F. Ortiz.
6089         Contributed under X11 license.
6090         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6091
6092 2008-05-28  Martin Baulig  <martin@ximian.com>
6093
6094         The debugger now requires exactly r103463.
6095
6096         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
6097         This version is not supported by the debugger, wait for 72.
6098
6099 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6100
6101         * object.h: Changed array related functions to use
6102         mono_array_size_t instead of guint32. Forgot to commit this file.
6103
6104         Patch by Luis F. Ortiz.
6105         Contributed under X11 license.
6106         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6107
6108
6109 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
6110
6111         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
6112         don't define it. Use the number literal instead.
6113
6114 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6115
6116         * icall.c: Changed array related functions to use
6117         mono_array_size_t instead of guint32.
6118
6119         * icall.c (ves_icall_System_Array_GetLength): Check for length
6120         overflow under MONO_BIG_ARRAYS.
6121
6122         Based on patch by Luis F. Ortiz.
6123         Contributed under X11 license.
6124         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6125
6126 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6127
6128         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
6129
6130         Based on patch by Luis F. Ortiz.
6131         Contributed under X11 license.
6132         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6133
6134 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6135
6136         * object.c, object.h: Changed array related functions to use
6137         mono_array_size_t instead of guint32.
6138
6139         Patch by Luis F. Ortiz.
6140         Contributed under X11 license.
6141         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6142
6143 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * object.h: Introduced mono_array_size_t typedef. This must be used
6146         in all places an array length is expected. This is 64bits wide if
6147         MONO_BIG_ARRAYS is enabled.
6148
6149         Patch by Luis F. Ortiz.
6150         Contributed under X11 license.
6151         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
6152
6153 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * security-manager.c class.c: Set the class exception info by calling
6156         mono_class_set_failure ().
6157
6158         * class.c (mono_class_get_exception_data): New accessor function.
6159         (mono_class_set_failure): Store exception_data in the property hash.
6160
6161         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
6162         the struct as a property.
6163
6164         * loader.c (mono_get_method_full): Store the lookup result for method
6165         tokens in method_cache, the others in methodref_cache to decrease the memory
6166         usage of hash tables.
6167
6168         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
6169         (mono_image_init): method_cache is lazy inited now.
6170
6171         * metadata-internals.h (struct _MonoImage): Change method_cache to
6172         a MonoValueHashTable, add a separate methodref_cache.
6173
6174 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
6175
6176         * number-formatter.h: Fix tables to avoid arithemtic overflow in
6177           Double.ToString as exposed by Bug #383531.
6178
6179 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
6180
6181         * number-formatter.h: Make some tables static.
6182
6183         * class.c (mono_method_set_generic_container): New accessor function.
6184         (mono_method_get_generic_container): Ditto.
6185
6186         * class-internals.h (struct _MonoMethod): Remove rarely used 
6187         'generic_container' field, store it in the property hash instead. Add 
6188         'is_generic' boolean field instead.
6189
6190         * image.c (mono_image_init): Initialize property_hash.
6191         (mono_image_close): Destroy property_hash.
6192
6193         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
6194         hold rarely used fields of runtime structures belonging to this image.
6195
6196         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
6197         to get/set method->generic_container.
6198
6199         * loader.c (mono_get_method_from_token): Avoid loading the method header for
6200         generic methods.
6201
6202 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * class.c (mono_class_inflate_generic_method_full): Don't increase
6205         mono_stats.inflated_method_count for methods found in the cache.
6206
6207         * threads.c (mono_thread_request_interruption): Add a comment about 
6208         QueueUserAPC ().
6209
6210 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6211
6212         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
6213         interface_offsets_packed table.
6214         
6215         * class.c (mono_class_init): Remove some dead code.
6216
6217         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
6218         mono_class_setup_vtable () when CAS is active to detect security problems.
6219
6220 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
6221
6222         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
6223
6224         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
6225         parameters as it's irrelevant for delegate checking.
6226
6227 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
6230
6231         * class.c (mono_class_init): Control the creation of a generic vtable using
6232         a global which is true by default, but set to false by the runtime startup code.
6233         
6234         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
6235         Disabled for now since it breaks the embedding API.
6236         Move the setup of class->methods for arrays to mono_class_setup_methods ().
6237         (mono_class_setup_methods): Add a memory barrier.
6238
6239         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
6240         when mono_class_init () doesn't compute the generic vtable.
6241         
6242 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6243         * profiler.c: Added mono_profiler_install_statistical_call_chain,
6244         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
6245         to support call chains (backtrace) in the stat profiler.
6246         * profiler.c, profiler-private.h: Likewise.
6247
6248 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6249
6250         * generic-sharing.c: Init generic class when a method of it is
6251         requested via a runtime generic context.
6252
6253 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6254
6255         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
6256
6257         * reflection.c (mono_type_get_object): Add a FIXME.
6258
6259         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
6260
6261         * class.c (mono_class_get_method_by_index): New helper function, returning an
6262         entry in the class->methods array.
6263
6264 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * class.c (mono_class_init): Only do the array optimization for szarrays. 
6267         Avoid creating a generic vtable for generic instances as well.
6268         (mono_class_get_method_from_name_flags): Don't search in the metadata for
6269         generic instances.
6270
6271 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
6272
6273         * loader.c (mono_get_method_constrained): Inflate the signature
6274         with class context. Fix #325283.
6275
6276 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6277
6278         * object.c (mono_class_create_runtime_vtable): Add a comment.
6279
6280         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
6281         where needed.
6282         (setup_interface_offsets): Handle the case when this is called twice for arrays.
6283         (mono_class_setup_vtable_general): Add an assert.
6284         (mono_class_init): Avoid creating a generic vtable for arrays.
6285
6286         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
6287         here, let mono_class_init () do that.
6288
6289         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
6290         interfaces in mscorlib.
6291
6292         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
6293         interfaces. Add some comments.
6294         (mono_class_init): Call mono_class_setup_methods () here since it is no
6295         longer called by mono_class_setup_vtable ().
6296
6297         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
6298         not set in class->vtable.
6299         (mono_class_create_runtime_vtable): Reenable the disabled code.
6300
6301         * object.c (mono_class_create_runtime_vtable): Disable the last change for
6302         now as it causes some test failures.
6303
6304         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
6305         if using the vtable trampoline. Also remove some strange code which put the
6306         generic methods themselves into the vtable slots. Remove the AOT init_vtable
6307         stuff as it is no longer needed.
6308
6309 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6310
6311         * pedump.c: Give make --verify all option check code as well.
6312         Using --verify code won't check for metadata now.
6313
6314 2008-05-19  Martin Baulig  <martin@ximian.com>
6315
6316         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
6317
6318         * mono-debug.c
6319         (_mono_debug_using_mono_debugger): New global variable; it's set
6320         directly by the debugger, so mono_debug_using_mono_debugger() also
6321         works after attaching.
6322
6323 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * object.c (mono_class_create_runtime_vtable): Use memory barriers
6326         as we do double checked locking on MonoClass::runtime_info and
6327         MonoClassRuntimeInfo::domain_vtables.
6328
6329 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
6330
6331         * debug-helpers.c (print_field_value): Fix a warning.
6332
6333 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
6334
6335         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
6336         set in the AOT case.
6337
6338 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * class.c (mono_class_setup_vtable_general): Use memory barriers
6341         as we do double checked locking on MonoClass::vtable.
6342
6343 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6344
6345         * reflection.c (resolve_object): Inflate only if the generic context
6346         is not null. Fixes #389886.
6347
6348 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
6349
6350         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
6351         instead of g_free.
6352
6353         Code is contributed under MIT/X11 license.
6354
6355 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6356
6357         * class.c: Revert unrelated change.
6358
6359 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6360
6361         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
6362         a generic instantiation, use mono_class_from_mono_type instead of playing
6363         with MonoType directly.
6364
6365 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6366
6367         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
6368         checks must ignore generic instantiations, so mono_class_has_parent is not
6369         suitable. Fixes #390128.
6370
6371 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
6374         it to avoid registering tokens during metadata generation. Fixes #390023.
6375
6376 2008-05-14  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
6377
6378         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
6379         consistent.
6380
6381         Contributed under MIT/X11 license.
6382
6383 2008-05-14  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
6384
6385         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
6386         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
6387         to fixup the EXE image.
6388         (mono_cleanup): Use mono_close_exe_image.
6389         (mono_close_exe_image): New function.
6390         * image.c: Include "marshal.h".
6391         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
6392         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
6393         counting when the image is loaded outside of mono_image_open_full. Set status
6394         based on GetLastError.
6395         * coree.c: Include required headers. Add init_from_coree.
6396         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
6397         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
6398         (_CorExeMain): Set init_from_coree.
6399         (CorExitProcess): Only call ExitProcess for now.
6400         (CorBindToRuntimeEx): New stub implementation.
6401         (CorBindToRuntime): New function.
6402         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
6403         (MonoFixupExe): ILONLY executables require no fixups.
6404         (mono_set_act_ctx): New function to set activation context.
6405         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
6406         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
6407         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
6408         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
6409         as MONO_INTERNAL.
6410         * domain-internals.h: Add mono_close_exe_image.
6411
6412         Contributed under MIT/X11 license.
6413
6414 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6415
6416         * metadata.c (mono_metadata_compute_size): Correctly calculate field
6417         size for generic param and event tables. Fixes #388977.
6418
6419 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
6420
6421         * loader.c (mono_method_signature): Use memory barriers because of the double
6422         checked locking pattern.
6423
6424         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
6425         aborting or aborted as well. Fixes #376391.
6426         
6427         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
6428         existing runtime state in the Suspend handler during shutdown.
6429
6430 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
6431
6432         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
6433
6434         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6435         which are starting up or shutting down.
6436
6437         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6438         this function never returns if the runtime is already shutting down.
6439
6440         * icall.c (ves_icall_System_Environment_Exit): Update after 
6441         mono_threads_set_shutting_down () signature change.
6442         
6443 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6444
6445         * class.c: Added can_access_instantiation to verify if the instantiation
6446         is visible. Fix access check for nested types as they returned TRUE
6447         before doing type and generic instantiation visibility checks.
6448
6449 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * reflection.c (mono_reflection_create_generic_class): The created type
6452         must have a different container from its TypeBuilder. Otherwise they
6453         will end sharing generic arguments, which is wrong.
6454
6455         Due to the sharing, making a generic instance of the created type using
6456         the TypeBuider generic arguments resulted in the generic type definition
6457         been returned, which is wrong as well.
6458
6459         As a bonus the code was leaking the type_params array. This memory should
6460         be allocated from the image mempool.
6461
6462         This fixes bug #354047.
6463
6464 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6465
6466         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6467         to here         as they are now used in assembly.c new code.
6468         Added a skipverification flag to MonoAssembly.
6469         New internal function mono_assembly_has_skip_verification.
6470
6471         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6472         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6473         part of #387274.
6474
6475 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6476
6477         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6478         needed. Fixes #387034.
6479
6480         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6481
6482 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6483
6484         * assembly.c (mono_assembly_load_reference): Prevent crash while
6485         disassembling Silverlight 2.0 executables while we still do not
6486         have GACed libraries.
6487
6488 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6489
6490         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6491
6492 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6493
6494         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6495         of the dynamic case. Fixes #387404.
6496
6497 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6498
6499         *verify.c (mono_verifier_is_class_full_trust): If under
6500         verify_all and the verifier mode was not set, only
6501         gac and corlib types are fulltrust. This makes --verify-all
6502         usable to detect unverifiable code, which is the expected
6503         use case.
6504
6505 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6506
6507         * verify.h: Ops, commited the header with debug
6508         enabled.
6509
6510 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6511
6512         * verify.c (merge_stack): Use the new value on unverifiable
6513         stack merges.
6514
6515         * verify.c (verify_type_compatibility_full): Comparison
6516         of nullable types can't use mono_class_is_assignable_from.
6517
6518         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6519         that makes all verification errors be reported.
6520
6521         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6522         mono_method_verify.
6523
6524 2008-05-05  Robert Jordan  <robertj@gmx.net>
6525
6526         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6527         support for value types. See #386415.
6528
6529         * object.c: comments.
6530
6531         Code is contributed under MIT/X11 license.
6532
6533 2008-05-05  Martin Baulig  <martin@ximian.com>
6534
6535         * debug-mono-symfile.h
6536         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6537         for old pre-terrania symbol files.
6538
6539 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6540
6541         * mono-config.c: Add ppc64 architecture.
6542
6543         Code is contributed under MIT/X11 license.
6544
6545 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6546
6547         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6548           PPC64 uses function descriptors as well.
6549
6550         Code is contributed under MIT/X11 license.
6551
6552 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6553
6554         * object.c (compute_class_bitmap): Ignore literal static fields.
6555
6556         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6557         var has an invalid format.
6558         (describe_ptr): Add some sanity checks for the vtable.
6559         (add_nursery_frag): Clear unused nursery fragments.
6560         (major_collection): Clear all remaining nursery fragments.
6561
6562 2008-05-03  Robert Jordan  <robertj@gmx.net>
6563
6564         * image.c, metadata-internals.h: add thunk_invoke_cache.
6565
6566         * marshal.c, marshal.h: implement
6567         mono_marshal_get_thunk_invoke_wrapper ().
6568
6569         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6570
6571         Code is contributed under MIT/X11 license.
6572
6573 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6574
6575         * verify.c (do_leave): Empty the stack.
6576
6577 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6578
6579         * class.c (mono_class_is_assignable_from): Variance
6580         doesn't work between reference and value types. For example,
6581         given type C<T+>, C<int32> is not assignable to C<object>.
6582         Break the argument checking loop on first error. 
6583
6584 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6585
6586         * icall.c : base64_to_byte_array() needs some more strict
6587           check for sequence of '=' characters. Patch by Santa
6588           Marta (http://deee.g.hatena.ne.jp/santamarta).
6589
6590           Contributed under MIT/X11 license.
6591           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6592
6593 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6594
6595         * domain.c: Disable LoadLibrary support to fix Win32 build.
6596
6597         Code is contributed under MIT/X11 license.
6598
6599 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6602         to help with cache behaviour.
6603
6604 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6605
6606         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6607         method. 
6608
6609 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6612
6613 2008-05-01  Dick Porter  <dick@ximian.com>
6614
6615         * process.c (process_get_fileversion): Only pass 16 bits of
6616         language ID to VerLanguageName.  Fixes bug 381204.
6617
6618 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6619
6620         * verify.c (mono_method_verify): Fix the comparison
6621         operator for code bounds check.
6622
6623 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6624
6625         * verify.c (mono_method_verify): Check the bounds of
6626         all access of the code array.
6627
6628 2008-04-29  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
6629
6630         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6631
6632 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6633
6634         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6635         not valid.
6636
6637 2008-04-28  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
6638
6639         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6640         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6641         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6642         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6643         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6644         mono_runtime_load.
6645         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6646         runtime initialization from metadata.
6647         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6648         (mono_set_rootdir): Use mono_get_module_file_name.
6649         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6650         handles.
6651         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6652         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6653         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6654         MonoCLIImageInfo. Add support for module handles.
6655         (load_cli_header): Update mono_cli_rva_image_map signature.
6656         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6657         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6658         (mono_image_rva_map): Add support for module handles.
6659         (mono_image_ensure_section_idx): Add support for module handles.
6660         (mono_image_close): Add support for module handles.
6661         (do_load_header): Add support for module handles.
6662         (mono_image_open_from_module_handle): New function for internal use.
6663         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6664         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6665         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6666         handles.
6667         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6668         * image.h: Add mono_image_fixup_vtable.
6669         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6670         support.
6671         * coree.h: New file.
6672         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6673         unsupported native code.
6674         (mono_marshal_set_callconv_from_modopt): New function splitted from
6675         mono_marshal_get_managed_wrapper.
6676         (mono_marshal_get_managed_wrapper): Use
6677         mono_marshal_set_callconv_from_modopt.
6678         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6679         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6680         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6681         that results in a deadlock when the runtime is loaded in _CorDllMain.
6682         * Makefile.am: Add coree.c and coree.h.
6683
6684         Contributed under MIT/X11 license.
6685
6686 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6687
6688         * generic-sharing.c: Search for type arguments in array element
6689         types as well.
6690
6691 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6692
6693         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6694
6695         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6696
6697         * object.c: Don't setup the RGCTX when the vtable is created,
6698         because we're setting it up lazily now.
6699
6700 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6701
6702         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6703         64 bit support.
6704
6705 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6706
6707         * verify.c (verify_class_for_overlapping_reference_fields): 
6708         If class is under fulltrust allow reference types to overllap
6709         if they have the same RVA.
6710
6711 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6712
6713         * pedump.c: Added new flag valid-only, that makes the verifier
6714         behaves just like --security=validil. It won't fail type load
6715         due to unverifiable restrictions.
6716
6717 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6718
6719         * class-internals.h (struct MonoMethod): Added a verification_success
6720         field to cache verifier executions. Reduced MonoMethod:slot size by
6721         one bit.
6722
6723 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6724
6725         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6726         instead of a 'vt' argument to save an indirection and to allow these to be used
6727         for valuetypes.
6728         (scan_vtype): New helper function to scan an area using a gc descriptor.
6729         (mono_gc_wbarrier_value_copy): Implement this.
6730         (handle_remset): Add support for REMSET_VTYPE.
6731         (find_in_remset_loc): Ditto.
6732         (mono_gc_base_init): Allow some debugging options to be controlled through the
6733         use of the MONO_GC_DEBUG env variable.
6734         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6735         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6736
6737 2008-04-23  Martin Baulig  <martin@ximian.com>
6738
6739         * domain.c (mono_domain_create): Move the call to
6740         mono_debug_domain_create() down, after allocating the domain id.
6741
6742 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6743
6744         verify.c (verify_class_for_overlapping_reference_fields): Skip
6745         static fields while verifying for overlapping fields as they
6746         don't matter at all.
6747
6748 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6749
6750         * domain-internals.h: added a declaration of
6751         mono_make_shadow_copy.
6752
6753         * assembly.c (mono_assembly_open_full): shadow copying of
6754         assemblies moved to here, so that all the assemblies within the
6755         application domain's private binary directories can be
6756         processed. Fixes bug #380546
6757
6758         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6759         mono_make_shadow_copy and made non-static. The decision whether
6760         to shadow-copy an assembly is made based on its location - it's
6761         copied if it's in one of the private application domain binary
6762         directories and its different to the target file in the shadow
6763         directory. Fixes bug #380546
6764
6765 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6766
6767         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6768
6769         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6770         types.
6771
6772         * reflection.c (mono_image_create_token): Handle 
6773         Method/ConstructorOnTypeBuilderInst.
6774         (resolve_object): Ditto.
6775         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6776         so it can be called from resolve_object. Also handle the case when the inflated
6777         class already has its methods setup.
6778
6779 2008-04-21  Martin Baulig  <martin@ximian.com>
6780
6781         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6782
6783 2008-04-20  Geoff Norton  <gnorton@novell.com>
6784
6785         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6786         pointer dereference.
6787
6788 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6789
6790         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6791         portability API to look up the assembly file. Fixes behavior in
6792         situations when the application has a bin/ directory, but the
6793         assembly search patch refers to Bin/ (and thus the requested file
6794         name is Bin/SomeLibrary.dll). Fixes bug #379888
6795
6796 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6797
6798         verify.c (mono_type_is_generic_argument): Extracted this check
6799         from a dozen places to here.
6800
6801         verify.c: Fixed all issues related to boxing generic arguments
6802         and their constraints.
6803
6804 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6805
6806         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6807
6808 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6809
6810         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6811         isn't finished yet. Fixes #363447.
6812
6813 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6816         Fixes #346419.
6817
6818 2008-04-13  Jb Evain  <jbevain@novell.com>
6819
6820         * domain.c: update the 2.1 profile versions.
6821         Merged from the Moonlight 2 branch.
6822
6823 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6826         mscorlibs for the non-refonly case as well.
6827
6828         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6829         in mono_assembly_load_from_full (). Fixes #378924.
6830
6831 2008-04-11  Geoff Norton  <gnorton@novell.com>
6832
6833         * icall.c: The global extern environ doesn't exist on Mac.  We
6834         need to call NSGetEnviron instead.
6835
6836 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         verify.c: Add generic method constraint verification.
6839
6840 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6841
6842         class.c (mono_class_inflate_generic_method_full): Add a long
6843         explanation to the is_mb_open hack. Remove the FIXME.
6844
6845 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * verify.c (mono_method_verify): Mark all unknown opcodes
6848         as invalid. Mark jmp as unverifiable.
6849
6850 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852         * verify.c: Add code to do type constraint verification on class instances.
6853
6854         * verify.c (mono_verifier_verify_class): Use the type constraint 
6855         verification code.
6856
6857 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6858
6859         * class.c (mono_class_get_field_default_value): Don't pass cindex
6860         as hint to mono_metadata_get_constant_index. The local is not initialized
6861         and should contain garbage most of the time. This could only work
6862         with a lot of luck.
6863
6864 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6865
6866         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6867
6868 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6869
6870         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6871
6872         * class.c (mono_class_from_generic_parameter): Save the token of the
6873         generic param in MonoClass::sizes.generic_param_token.
6874
6875         * reflection.c (mono_custom_attrs_from_class): If the class type is
6876         VAR or MVAR retrieve the attributes of the generic param.
6877
6878 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         * class.c (mono_class_init): Do class verification if the verifier
6881         is enabled.
6882
6883 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6884
6885         * verify-internal.h: Added mono_verifier_verify_class.
6886
6887         * verify.c: Added mono_verifier_verify_class. It checks for
6888         classes with explicit layout that have overlapping reference fields.
6889
6890         * pedump.c: Init the verifier state prior to verification. Fixed
6891         command line arguments.
6892
6893 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6894
6895         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6896
6897 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * verify-internals.h: Fix a warning.
6900
6901 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6902
6903         * verify-internals.h: New header with the verifier configuration
6904         extracted from mini.c.
6905
6906         * verify.c: Implemented the new functions exported by verify-internals.h.
6907
6908 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * verify.c: Add proper verification of ckfinite.
6911
6912 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * verify.c (do_conversion): Improved error message to something
6915         more meanfull.
6916
6917         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6918         with primitive types.
6919
6920 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * verify.c: Added tail prefix checking. Marked icall
6923         as unverifible.
6924
6925 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6926
6927         * verify.c: Fix the detection of branches to the middle
6928         of an instruction.
6929
6930 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * verify.c: Implemented verification of volatile. and
6933         unaligned. prefix. Check if a type is valid after retrieving it.
6934
6935 2008-04-01  Dick Porter  <dick@ximian.com>
6936
6937         * process.c (process_get_fileversion): If there's no string block,
6938         set the file language to en_US.  Fixes the other new part of bug
6939         374600.
6940
6941 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6942
6943         * class.c: New functions mono_method_can_access_field_full and
6944         mono_method_can_access_method_full. They perform type visibility
6945         and type site check.
6946
6947         * class-internal.h: Added exported functions.
6948
6949         * verify.c: Use new functions to implement proper visibility checks.
6950
6951 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6954
6955 2008-03-28  Dick Porter  <dick@ximian.com>
6956
6957         * process.c (process_get_fileversion): Use the first language ID
6958         we see, rather than insisting on an invariant language.  Fixes bug
6959         374600.
6960
6961 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6964         the streams to fix reading of invalid memory later.
6965
6966         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6967         to ease debugging.
6968
6969 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6972         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6973
6974 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6975         * threads.h: Added MonoThreadManageCallback type and
6976         mono_thread_set_manage_callback prototype
6977         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6978         (used to store the mono_thread_manage callback).
6979         * threads.c: Added mono_thread_set_manage_callback, and handle
6980         "MonoThread->manage_callback" in build_wait_tids.
6981
6982 2008-03-26  Dick Porter  <dick@ximian.com>
6983
6984         * process.c (process_get_fileversion): Set FileVersionInfo strings
6985         to Empty when the resource doesn't have the particular info.
6986         Fixes bug 355717.
6987
6988 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6989
6990         * verify.c (mono_method_verify): Proper prefix validation.
6991
6992 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6995         itself in a separate argument instead of throwing them. Fixes #373448.
6996
6997         * appdomain.c: Bump corlib version.
6998
6999 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
7000
7001         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
7002
7003 2008-03-20  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
7004
7005         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
7006         version macros.
7007
7008 2008-03-20  Mark Probst  <mark.probst@gmail.com>
7009
7010         * generic-sharing.c, class-internals.h: Code for putting
7011         reflection types into the runtime generic context.
7012
7013 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
7014
7015         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
7016         Fixes #340662. 
7017
7018
7019 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
7020
7021         * verify.c (VerifyContext): Added instruction prefix data to the struct.
7022
7023         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
7024
7025         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
7026
7027         * verify.c (do_cast): Let the result value keep the boxed status.
7028
7029         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
7030
7031 2008-03-17  Jb Evain  <jbevain@novell.com>
7032
7033         * reflection.c: when running on a 2.0 runtime, emit
7034         unconditionally the #~ header version as 2.0, and the
7035         CLI header version as 2.5, for symmetry's sake with csc.
7036
7037 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
7038
7039         * class.c: Remove the unused cache_interface_offsets stuff.
7040
7041         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
7042         profiler.c: Fix warnings.
7043
7044 2008-03-16  Mark Probst  <mark.probst@gmail.com>
7045
7046         * generic-sharing.c, class-internals.h: Support for putting
7047         methods into the runtime generic context.
7048
7049 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * class.c (mono_class_setup_fields): Ignore calls made to this function for
7052         classes which are generic instances of not-yet finished typebuilders. Fixes
7053         #351172.
7054
7055         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
7056
7057 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
7060
7061         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
7062         field, replace it with a hash table in MonoDynamicImage.
7063
7064         * reflection.c (inflate_mono_method): Access the generic definition object from
7065         image->generic_def_objects instead of imethod->reflection_info.
7066
7067         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
7068
7069         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
7070         
7071         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
7072         function in reflection.c so it is easier to keep in sync with the dynamic image
7073         creation code.
7074
7075         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
7076         mono_image_close ().
7077
7078 2008-03-15  Mark Probst  <mark.probst@gmail.com>
7079
7080         * class.c (mono_class_generic_sharing_enabled): Disable generic
7081         sharing for all architectures except AMD64 and x86 to fix build.
7082
7083 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
7084
7085         * verify.c: Use the generic definition MonoGenericContext when available.
7086         Remove code for checking generics instance compatibility in favor of
7087         mono_class_is_assignable_from.
7088
7089 2008-03-14  Mark Probst  <mark.probst@gmail.com>
7090
7091         * marshal.c, marshal.h, metadata-internals.h, image.c,
7092         wrapper-types.h: New wrapper for invoking a shared static method
7093         without having to pass the runtime generic context argument.
7094
7095 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
7096
7097         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
7098
7099 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
7100
7101         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
7102         
7103         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
7104         create a token from a FieldOnTypeBuilderInst.
7105         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
7106         (resolve_object): Ditto.
7107
7108         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
7109         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
7110
7111 2008-03-14  Martin Baulig  <martin@ximian.com>
7112
7113         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
7114
7115         * debug-mono-symfile.h
7116         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
7117         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
7118
7119 2008-03-10  Martin Baulig  <martin@ximian.com>
7120
7121         * debug-mono-symfile.h
7122         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
7123         `lexical_block_table_offset'.
7124         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
7125         `lexical_blocks'.
7126         (MonoSymbolFile): Added `version'.
7127
7128         * mono-debug.h
7129         (MonoDebugLexicalBlockEntry): Removed.
7130         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
7131         `lexical_blocks'.
7132
7133         * mono-debug.c (mono_debug_add_method): Don't compute lexical
7134         blocks here; the debugger now does this internally.
7135
7136 2008-02-27  Martin Baulig  <martin@ximian.com>
7137
7138         * object.c (mono_runtime_exec_main): Call
7139         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
7140         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
7141
7142 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7143
7144         * verify.c (verify_type_compatibility_full): Allow native int to be converted
7145         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
7146
7147 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
7148
7149         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
7150         ldftn with a virtual method.
7151
7152 2008-03-13  Geoff Norton  <gnorton@novell.com>
7153
7154         * decimal.c:  Only include memory.h if the platform has it.
7155
7156 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
7157
7158         * assembly.c, class.c, metadata-internals.h: make sure public key
7159         tokesns are compared in a case-insensitive way. Also, all
7160         the lookups in the GAC use a lowercase public key token
7161         (gaacutil already does the lowercasing on install). Fixes
7162         bug #369541.
7163
7164 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
7165
7166         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
7167         and return value.
7168
7169 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
7170
7171         * image.c: when someone loads a mscorlib from a file, return the
7172         currently loaded mscorlib (fixes bug #369253).
7173
7174 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7175
7176         * class.c: handle types with no parents by forcing them to have
7177         System.Object as a parent and marking them as broken (this currently
7178         allows the first part of bug #369173 to work as well, likely because
7179         we don't check for typeload exceptions everywhere yet).
7180
7181 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
7182
7183         * class.c: more complete check that types belong to corlib
7184         (fixes second part of bug #369173).
7185
7186 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
7187
7188         * generic-sharing.c:  Including glib.h for the MSVC builds to define
7189           "inline" to "__inline" before including mono-membar.h.
7190           
7191         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
7192           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
7193           MSVC builds.
7194
7195         Contributed under MIT/X11 license.
7196
7197 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7198
7199         * verify.c (do_invoke_method): Remove return type validation.
7200
7201         * verify.c (do_ret): Do return type validation at return site instead of
7202         call site.
7203
7204 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7205
7206         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
7207
7208         * verify.c: Some todos cleaned and improved a few error messages.
7209
7210 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
7213
7214 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
7217         system types correctly.
7218
7219         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
7220         function.
7221
7222 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * assembly.c (build_assembly_name): Fix a warning.
7225
7226 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7227
7228         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
7229         the called function takes an object type argument. Fixes storing or
7230         valuetypes across remoting as well as reducing memory usage.
7231         * image.c, metadata-internals.h: remove now unused ldfld_remote and
7232         stfld_remote wrapper caches.
7233
7234 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7235
7236         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
7237         is not found.
7238
7239         * reflection.c (mono_image_register_token): New helper function to save
7240         a token->object mapping.        
7241
7242         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
7243         managed code.
7244
7245         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
7246         one dimension arrays. Fixes #367670.
7247         (mono_reflection_get_type_internal): Ditto.
7248
7249 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7250
7251         * marshal.c: mono_load_remote_field_new() always returns object.
7252         so use the proper signature (fixes bug #366445).
7253
7254 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7255         
7256         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
7257         add an 'inline_failure' flag instead.
7258
7259 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7260
7261         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
7262         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
7263         contains the location of "this", used for exception handling.
7264
7265 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7266
7267         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
7268         their size on all platforms for perf reasons.
7269
7270 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7271
7272         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
7273         object-internal.h
7274
7275         * object-internal.h: Same.
7276
7277 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7278
7279         * reflection.h: Fix the build I just broke.
7280
7281 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7282
7283         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
7284         Test if a token is valid, this remove explicit usage of 
7285         MonoDynamicImage::tokens from the verifier code.
7286
7287         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
7288
7289         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
7290         instead of direct access to MonoDynamicImage::tokens.
7291
7292 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         * verify.c (token_bounds_check): Fix the build I just broke.
7295
7296 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7297
7298         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
7299
7300         * verify.c (verifier_load_method): Fixed the errors message.
7301
7302         * verify.c (mono_method_verify): Fixed a debug message.
7303
7304 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
7305
7306         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
7307         mono-perfcounters.h, class-internals.h: support for predefined
7308         writable counters, query of categories and counters, bugfixes.
7309
7310 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7311
7312         * verify.c (do_refanytype): Verify the refanytype opcode.
7313
7314         * verify.c (mono_method_verify): Use do_refanytype.
7315
7316 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7317
7318         * verify.c (do_mkrefany): Verify the mkrefany opcode.
7319
7320         * verify.c (mono_method_verify): Use do_mkrefany.
7321
7322 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
7323
7324         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
7325         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
7326         implementation.
7327
7328 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
7331         the type load exception.
7332
7333 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7334
7335         * verify.c: Added a few FIXME for method signatures
7336
7337         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
7338         of mono_method_get_signature and get vararg call working. Removed unused
7339         checks for return value.
7340
7341         * verify.c (do_refanyval): Verify the refanyval opcode.
7342
7343         * verify.c (mono_method_verify): Implemented verification of arglist and
7344         use do_refanyval.
7345
7346 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
7349         vtypes to marshal.c.
7350
7351         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
7352         it works for AOT as well.
7353
7354 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7355
7356         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
7357         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
7358         the system time is adjusted.
7359
7360 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
7361
7362         * icall.c, icall-def.h: use the new time functions (fixes the
7363         non-monotonic behaviour of TickCount).
7364
7365 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7366
7367         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
7368         it breaks the build.
7369         
7370         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
7371         cattr is not finished yet.
7372
7373 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7374
7375         * verify.c: Proper token validation for field, method and type.
7376
7377 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7378
7379         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
7380
7381         * loader.c (method_from_memberref): Generate type load error instead of method missing
7382         if the type is not found.
7383
7384 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
7387         some of the conversions caused the generation of a marshal directive exception.
7388
7389 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7390
7391         verify.c: Report which exception should be thrown by the JIT.
7392         Added a lot of FIXME notes.
7393
7394 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7395
7396         * generic-sharing.c: Runtime generic context slots are not
7397         instantiated on init anymore.  Instead, provide function to do the
7398         instantiating on demand.
7399
7400         * class-internals.h: Added vtable to runtime generic context.
7401         Macros for encoding direct and indirect slot offsets in one
7402         guint32.
7403
7404 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7405
7406         * object.c, generic-sharing.c: Moved some generic sharing code
7407         from object.c to generic-sharing.c.
7408
7409         * generic-sharing.c: Added support for extensible runtime generic
7410         context.
7411
7412         * metadata-internals.h: Two new hash tables in MonoImage for
7413         extensible runtime generic context support.
7414
7415         * domain.c: Unregister generic vtables upon domain unloading.
7416
7417         * image.c: Destroy new hash tables upon image unloading.
7418
7419         * metadata.c: Unregister generic subclasses upon image unloading.
7420
7421         * class-internals.h: New data structure for runtime generic
7422         context template.  New fields in the runtime generic context for
7423         extensible part.
7424
7425         * Makefile.am: Added generic-sharing.c.
7426
7427 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7428
7429         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
7430         there is a pending loader exception, raise it.
7431
7432         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7433         same.
7434
7435         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7436         same.
7437
7438         Fixes #363450.
7439
7440 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7441
7442         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7443
7444         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7445         
7446         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7447         ref-only requests for compatibility with MS.
7448
7449 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7450
7451         * reflection.c (mono_custom_attrs_from_method): Don't silently
7452         return an empty list for generic method instances.
7453         (mono_custom_attrs_from_param): Likewise.
7454
7455 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7456             Raja R Harinath  <harinath@hurrynot.org>
7457
7458         Fix #354757
7459         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7460         * class.c (mono_class_inflate_generic_method_full): Initialize it
7461         when a fully-open method is instantiated.
7462         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7463         to new field.
7464         * reflection.c (inflate_mono_method): Don't create a temporary context.
7465
7466 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7467
7468         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7469         Compute correct value, to prepare for imethod->reflection_info going away.
7470
7471 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7474
7475 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * verify.c: Implement skip visibility flag.
7478
7479 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7480
7481         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7482         which contains an extra field to tell the kind of exception that should be thrown.
7483
7484         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7485
7486 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7487
7488         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7489         'method' is updated.
7490
7491 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7494         explicit layout as well. Fixes #360375.
7495
7496 2008-02-11  Geoff Norton  <gnorton@novell.com>
7497
7498         * loader.c: Guard and dereference against inflated generic methods
7499
7500 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7501
7502         * class.c: Include Retargetable spec in assembly name.
7503         * assembly.c: Always include PublicKeyToken spec in assembly name
7504         (with value "null" if assembly is not signed), and include
7505         Retargetable spec.
7506         * icall-def.h: Added icall for Assembly.get_fullname.
7507         * icall.c: Added icall returning the fullname of an assembly.
7508
7509 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7510
7511         * class.c (mono_class_setup_vtable_general): Add a missing call to
7512         mono_class_setup_methods () which is needed in the AOT case.
7513
7514 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7515
7516         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7517         stack type of the given MonoType.
7518
7519         * verify.c (verify_type_compatibility_full): Handle the void type.
7520
7521         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7522         way stack merging works.
7523
7524         * verify.c (store_local): Improved verification message.
7525
7526         * verify.c (do_branch_op): If the merging is invalid, the method
7527         is unverifiable and not invalid. Improved error message.
7528
7529         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7530         a reference type diferent than System.Object. Improved error
7531         message.
7532
7533 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7534
7535         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7536
7537         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7538         type of an enum even if the argument is byref.
7539
7540         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7541         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7542
7543         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7544
7545         *verify.c (verify_type_compatibility_full): Make enum types
7546         compatible with their base types.
7547
7548         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7549         types are compatible for the special case of a boxed valuetype and
7550         System.Object.
7551
7552         * verify.c (verify_stack_type_compatibility): The function
7553         is_compatible_boxed_valuetype was extracted from here.
7554
7555         * verify.c (push_arg): Only set ctx->has_this_store if the method
7556         is not static.
7557
7558         * verify.c (do_ldelem): Fixed a typo in an error message and added
7559         strict check for mixing int32 and native int as the array type
7560         and ldelem type.
7561
7562         * verify.c (merge_stacks): Consider boxed valuetypes in the
7563         compatibility checks.
7564
7565 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7566         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7567
7568 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7569         *class.c: use_new_interface_vtable_code: renamed the env var to have
7570         a "MONO_" prefix, and fix the logic to enable it by default.
7571
7572 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7573         *class.c:
7574         mono_class_setup_vtable_general: rewrote the way in which interface
7575         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7576         makes the code more maintainable.
7577         For now the old code is still there, and can be activated setting
7578         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7579
7580 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7581
7582         * verify.c: guarded some debug functions around and #ifdef.
7583
7584         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7585
7586 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7587
7588         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7589         changes for now since they seem to break too many things.
7590
7591 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7592
7593         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7594         mono_marshal_find_nonzero_bit_offset): Added macro and function
7595         for finding the byte- and bit-offset of a bitfield within a
7596         struct.
7597
7598 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7601         (mono_marshal_get_struct_to_ptr): Ditto.
7602
7603         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7604         cctor_signature.
7605
7606 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7607
7608         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7609         between methods for non-corlib types.
7610
7611 2008-02-02  Geoff Norton  <gnorton@novell.com>
7612
7613         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7614         generic parameters as well. (Fixes #342536)
7615
7616 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7617
7618         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7619
7620         * verify.c (do_invoke_method): Fix for calling with byref structs.
7621
7622         * verify.c (do_cast): push a boxed value type based on the type token and not
7623         the type of stack.
7624
7625 2008-01-31  William Holmes  <billholmes54@gmail.com>
7626
7627         * process.c (process_module_string_read): Check the size returned form 
7628           VerQueryValue to avoid out of memory exception. 
7629
7630 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7633         Handle properly modules which are not in the moduleref table. Fixes
7634         #356938.
7635
7636 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7637
7638         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7639         the dynamic case which is now in managed code.
7640         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7641
7642         * marshal.c (mono_string_to_bstr): Fix a warning.
7643         (init_com_provider_ms): Ditto.
7644
7645         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7646
7647         * exception.c (mono_get_exception_out_of_memory): New helper function.
7648
7649 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7650
7651         * marshal.c: Add support for BSTR marshalling
7652         using other COM systems.
7653
7654         Code is contributed under MIT/X11 license.
7655
7656 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * object.c (mono_runtime_invoke_array): reverted previous
7659         commit as it breaks the build.
7660
7661 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * object.c (mono_runtime_invoke_array): Verify arguments for
7664         invalid types. Fixes #348522.
7665
7666 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7667
7668         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7669         non-final virtual calls using call. 
7670
7671         * verify.c (do_invoke): fixed some TODOs.
7672
7673         * verify.c (push_arg): set has_this_store for "ldarga 0".
7674
7675 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7678         which belong to an inflated class. Fixes #356531.
7679
7680 2008-01-26  Robert Jordan  <robertj@gmx.net>
7681
7682         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7683         which resort to FindFirstFile when a certain error condition
7684         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7685         Code is contributed under MIT/X11 license.
7686
7687 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7688
7689         * marshal.c (emit_marshal_string): Fix out string marshalling
7690         to use specified encoding. Fixes #323900.
7691
7692         Code is contributed under MIT/X11 license.
7693
7694 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7695
7696         * class.c (mono_class_inflate_generic_method_full): Don't modify
7697         iresult->context after cache check.
7698
7699 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7700
7701         * class.c (mono_class_inflate_generic_method_full): Change the
7702         struct assignments to memcpy for better visibility and add some comments.
7703
7704 2008-01-23  Dick Porter  <dick@ximian.com>
7705
7706         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7707         procedure, and make it work on windows.
7708
7709 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7712         a MonoReflectionTypeBuilder since it is always of that type.
7713
7714         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7715
7716         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7717
7718         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7719         
7720         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7721
7722         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7723
7724         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7725         instantiations from the type cache.
7726
7727 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7728
7729         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7730
7731         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7732
7733 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7734
7735         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7736
7737         * verify.c (mono_method_verify): removed old TODO
7738
7739 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7740
7741         * verify.c (do_newobj): add visibility check.
7742
7743 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7744
7745         * verify.c (do_load_function_ptr): add visibility check.
7746
7747 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7748         *class.c:
7749         mono_generic_class_get_class: hook profiler events.
7750         mono_field_get_offset: added to support heap-shot in the new profiler.
7751         *class.h: exported mono_field_get_offset.
7752         * reflection.c:
7753         mono_reflection_setup_internal_class: hook profiler events.
7754
7755 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7756
7757         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7758         argument here too and use it to avoid checking for pending exceptions if 
7759         possible.
7760
7761 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7762
7763         * assembly.c (build_assembly_name): add arg for passing the assembly
7764         flags. Do not consider a PublicKey with value "null" valid.
7765         (mono_assembly_name_parse_full): added boolean argument that will be
7766         set if the assembly name contains a PublicKeyToken spec. Added support
7767         for the Retargetable spec for which only Yes or No are allowed as valid
7768         value. Consider assembly name invalid if Retargetable spec is set, but
7769         either version, culture or public key (token) are not specified.
7770         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7771         with implementation in assembly.c.
7772         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7773         from MonoAssemblyName.
7774         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7775         introduced argument for mono_assembly_name_parse_full to know if the
7776         assembly name has a PublicKeyToken spec, and if it has instruct
7777         fill_reflection_assembly_name to use default value for keyToken (if
7778         PublicKeyToken is null).
7779
7780 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7781
7782         * verify.c (mono_method_verify): fixed ovf ops with
7783         float values. They are unverifiable now.
7784
7785 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7786
7787         * class.c (set_failure_from_loader_error): add BadImageException to the
7788         list of exceptions that can cause a type to fail to load.
7789
7790         * class.c (mono_class_get_exception_for_failure): same.
7791
7792 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * verify.c (in_any_exception_block): added, check if offset
7795         is part of any exception handling clause.
7796
7797         * verify.c (get_stack_type): added VAR and MVAR types.
7798
7799         * verify.c (do_stobj): better error messages.
7800
7801         * verify.c (do_cpobj): added, check cpobj.
7802
7803         * verify.c (do_initobj): added, check initobj.
7804
7805         * verify.c (do_sizeof): added, check sizeof.
7806
7807         * verify.c (do_localloc): added, check localloc.
7808
7809         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7810
7811 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7812
7813         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7814         save_lmf/restore_lmf opcodes.
7815
7816         * threads.c (mono_threads_install_notify_pending_exc): New function to
7817         install a callback notifying the JIT there is a pending exception on a thread.
7818         (mono_thread_request_interruption): Call the new callback.
7819         (mono_thread_get_and_clear_pending_exception): New function to return the
7820         exception pending on a thread.
7821
7822         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7823         to turn off checking for pending exceptions.
7824         (mono_marshal_get_native_wrapper): Ditto.
7825
7826 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * threads-types.h: Get rid of the unnecessary extern declarations.
7829
7830 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7831
7832         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7833         return field from parent class if not private.
7834         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7835         returns fields from parent class if they are not private.
7836         (method_nonpublic): added function to determine if a given method
7837         should be considered non-public. Returns false for private methods
7838         on parent class, and internal methods from parent on the 1.0 profile.
7839         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7840         use method_nonpublic function to determine whether method should be
7841         returned.
7842         (property_accessor_public): use newly introduced method_nonpublic
7843         function to determine whether accessor is non-public. 
7844         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7845         event from parent class if not private. Only return static event if
7846         Static flag is set, and only return static event from parent class if
7847         FlattenHierarchy flag is set.
7848         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7849         include non-private events from parent class.
7850
7851 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7854         warning.
7855
7856 2008-01-16  Wade Berrier <wberrier@novell.com>
7857
7858         * security.c: Add assembly.h header to appease some warnings
7859
7860 2008-01-16  Dick Porter  <dick@ximian.com>
7861
7862         * process.c (process_module_string_read): Remove trailing null
7863         when saving string.
7864
7865 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7866
7867         * class-internals.h: A new data structure describing the layout of
7868         a runtime generic context (MonoRuntimeGenericContextTemplate).
7869
7870         * metadata-internals.h: Added a hash table to MonoDomain that maps
7871         from open generic classes to their runtime generic context
7872         templates.
7873
7874         * object.c: Building of the runtime generic context, including
7875         proper handling of generic type arguments of superclasses.
7876         Building of the runtime generic context according to the template.
7877
7878 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7879
7880         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7881         Fixes #350856.
7882
7883         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7884         mono_portability_find_file (). Fixes #325466.
7885         (mono_image_get_public_key): Fix a warning.
7886
7887 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7888
7889         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7890         Fixes #353550.
7891         (mono_class_from_name_case): Ditto.
7892
7893 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7894
7895         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7896           common storage for the tables used in the System/NumberFormatter class.
7897
7898 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7901
7902 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7903
7904         * verify.c (get_boxable_mono_type): check if the token is valid.
7905
7906         * verify.c (set_stack_value): changed to add an error if an
7907         invalid type is set on stack. Changed all callers due to signature change.
7908
7909         * verify.c (do_stobj): implement stobj validation.
7910
7911 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7912
7913         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7914         set container->is_method, it was set earlier.
7915
7916         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7917         generic methods.
7918
7919         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7920         is_method of the generic container to TRUE for methods.
7921
7922 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * metadata.c (type_in_image): Handle type parameters properly.
7925
7926         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7927         memory ownership of this structure.
7928
7929 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7930
7931         * verify.c (get_boxable_mono_type): make typedref types been just
7932         unverifiable. check for void type.
7933
7934         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7935
7936         * verify.c (do_load_function_ptr): accept method spec tokens.
7937
7938 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7939
7940         * marshal.c (mono_class_native_size): Always set *align even if this is called
7941         recursively.
7942
7943 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7944
7945         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7946         out-of-date.
7947
7948 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7949
7950         * verify.c: removed some old unused tables. A huge bunch of small fixes
7951         to things found while testing the verifier with mono basic.
7952
7953         * verify.c (dump_stack_value): dump null literal flag to.
7954
7955         * verify.c (verify_type_compatibility_full): fix comparison
7956         for types that have a generic super type.
7957
7958         * verify.c (verify_stack_type_compatibility): fix compatibility
7959         between null literals and reference types. fix compatibility between
7960         boxed valuetypes and object. fix corner case test for enums.
7961
7962         * verify.c (do_cmp_op): proper verification of cgt.un in case
7963         of reference types.
7964
7965         * verify.c (do_invoke_method): fix error message.
7966
7967         * verify.c (do_store_indirect
7968
7969         * verify.c (check_is_valid_type_for_field_ops): proper verification
7970         of managed pointers to valuetypes and boxed valuetypes. proper verification
7971         of null literals.
7972
7973         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7974         allow token to be a reference type.
7975
7976         * verify.c (do_cast): proper handling of boxes valuetypes.
7977
7978         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7979         in object[].
7980
7981         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7982         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7983         fixed the decoding of unbox_any
7984
7985 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7986
7987         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7988
7989 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7990
7991         * verify.c (do_newobj): do delegate verification.
7992
7993         * verify.c (verify_delegate_compatibility): perform delegate
7994         verification.
7995
7996         * verify.c (verify_ldftn_delegate): perform tests related to
7997         ldftn delegates.
7998
7999         * verify.c (mono_delegate_signature_equal): perform the
8000         slightly diferent signature comparison required by delegates.
8001
8002         * metadata.c (mono_metadata_type_equal_full): added and exported
8003         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
8004         allows signature only comparison.
8005
8006         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
8007         as MONO_INTERNAL.
8008
8009 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
8010
8011         * verify.c: added a bunch of stack_slot_* functions to
8012         make access to stack slot type easier. This is required to
8013         allow optional flags, like null literal, boxed value and
8014         this pointer.
8015         All access paths to IlStackDesc::stype have been changed 
8016         to use these new funcions.
8017         Removed a bunch of unused functions and cleared all warnings.
8018         This patch introduces the usage of the this pointer and 
8019         boxed value flags.
8020
8021 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
8022
8023         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
8024
8025 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
8028         match managed version.
8029
8030         * appdomain.c: Bump corlib version.
8031         
8032         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
8033         argument.
8034
8035 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
8036
8037         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
8038         Set public key token to zero-length byte array if assembly is not
8039         strongnamed.
8040
8041 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8042
8043         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
8044         writing a vtype array elem.
8045
8046 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
8047
8048         * assembly.c (build_assembly_name): return FALSE if length of token is
8049         not 16 (if not "null").
8050         (mono_assembly_name_parse_full): return FALSE if value of version,
8051         culture, token or key is 0.
8052         * icall.c (fill_reflection_assembly_name): add boolean arguments to
8053         specify whether public key and public key token must be set to default
8054         value (zero-length byte array) if not available. Set versioncompat to
8055         SameMachine. If public key is available or the default is set, then
8056         set PublicKey flag.
8057         (ves_icall_System_Reflection_Assembly_FillName): if no public key
8058         is available, use empty byte array as default value. On the 2.0
8059         profile, use default value for public key token if not set.
8060         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
8061         profile, use default value for public key if not set. On the 2.0
8062         profile, use default value for public key token if not set.
8063         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
8064         default values for public key and public key token.
8065
8066 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
8069         field to keep it in synch with the managed object.
8070
8071         * marshal.c (emit_marshal_object): Add support for byref marshalling of
8072         delegates. Fixes #351520.
8073
8074         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
8075         contains defined memory.
8076         
8077         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
8078
8079         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
8080         
8081         * sgen-gc.c (check_consistency): New helper function to do a consistency check
8082         of the GC data structures.
8083
8084         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
8085
8086         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
8087         
8088         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
8089         barrier.
8090         (mono_array_clone_in_domain): Ditto.
8091         (mono_array_clone_in_domain): Ditto.
8092
8093         * threads.c (start_wrapper): Register the thread start argument as a GC root.
8094         (cache_culture): Use a write barrier.
8095
8096         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
8097         (ves_icall_get_property_info): Ditto.
8098
8099         * object.h (MONO_STRUCT_SETREF): New macro.
8100
8101         * class-internals.h (MonoStats): Add some GC statistics.
8102
8103         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
8104
8105 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
8106
8107         * exception.c (mono_exception_from_name_two_strings):
8108         Break from loop after method is found.
8109
8110 2008-01-04  Dick Porter  <dick@ximian.com>
8111
8112         * process.c (process_module_string_read): Rename variable to
8113         reflect correct usage, after fixing bug 345972.
8114
8115 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * verify.c (mono_type_create_fnptr_from_mono_method): 
8118         created a MonoType function pointer instance to be used during
8119         verification. The verifier releases this memory at end.
8120
8121         * verify.c (mono_method_is_constructor): extracted repeated
8122         checks for constructor into a single class.
8123
8124         * verify.c (do_push_field): use new extracted method
8125         for constructor check.
8126
8127         * verify.c (do_newobj): same.
8128
8129         * verify.c (do_ldftn): renamed to do_load_function_ptr
8130         and make it verify ldvirtftn too.
8131
8132         * verify.c (mono_method_verify: proper verification
8133         of ldvirtftn. release created MonoMethod instances.
8134
8135 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
8136
8137         * verify.c (token_bounds_check): added.
8138
8139         * verify.c (do_ldftn): added.
8140
8141         * verify.c (mono_method_verify): proper verificartion of ldftn.
8142
8143 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
8144
8145         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
8146         than the table row count. It's the resposibility of the caller to
8147         make the bounds check and raise the correct error.
8148
8149         * metadata.c (mono_metadata_decode_row_col): Same.
8150
8151         * loader.c (mono_get_method_from_token): perform bounds check
8152         on token for methoddef table.
8153
8154 2007-12-29  Miguel de Icaza  <miguel@novell.com>
8155
8156         * icall.c
8157         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
8158         assert into a negative result, the managed code already coped with
8159         that.
8160
8161         Some folks on Windows reported this error. 
8162
8163 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
8164
8165         * appdomain.c: Bump corlib version.
8166         * icall.c:
8167         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
8168         CultureInfo.CreateCulture to create CultureInfo for name.
8169         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
8170         create CultureInfo for name. Fixes bug #347174.
8171
8172 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
8173
8174         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
8175         flags.
8176
8177         * verify.c (is_valid_branch_instruction): allow branching to the
8178         first instruction of the protected block.
8179
8180         * verify.c (is_valid_cmp_branch_instruction): same.
8181
8182         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
8183         avoid double initialization.
8184
8185         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
8186         detect which cases the eval stack should just be copied.
8187
8188         * verify.c (mono_method_verify): check if the eval stack
8189         is empty when entering a protected block.
8190
8191 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * verify.c: added is_clause_in_range, is_clause_inside_range,
8194         is_clause_nested and verify_clause_relationship. They perform
8195         the verifications stated in P1 12.4.2.7.
8196
8197         * verify.c (mono_method_verify): remove some unused variables,
8198         add the new exception clause checks, add instruction border
8199         checks for protected block start/end, improved some error 
8200         messages and fixed a bug in the way invalid instruction access
8201         is detected.
8202
8203 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8204
8205         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
8206         from GC 7.0 if available.
8207
8208         * object.c: Remove an unused define.
8209         
8210         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
8211
8212         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
8213
8214         * null-gc.c (mono_gc_make_descr_for_array): Implement.
8215
8216         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
8217
8218         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
8219         to take the same arguments as the other make_descr functions.
8220
8221         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
8222
8223         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
8224         directly.
8225
8226         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
8227         mini.c.
8228
8229         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
8230         call to boehm-gc.c.
8231
8232         * boehm-gc.c (mono_gc_register_root): Fix a warning.
8233
8234         * null-gc.c (mono_gc_register_root): Fix a warning.
8235
8236         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
8237
8238         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
8239         (mono_gc_base_init): Call GC_init ().
8240
8241         * null-gc.c: Define mono_gc_register_root () as a no-op.
8242
8243         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8244
8245 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
8246
8247         * verify.c: add prototype for merge_stacks at top
8248
8249         * verify.c (do_switch): added.
8250
8251         * verify.c (merge_stacks): on some cases the stack merging
8252         was not happening properly. Unequal stack sizes at merge
8253         points should be invalid.
8254
8255         * verify.c (mono_method_verify): added more debug info on stack state.
8256         verify switch properly.
8257
8258 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * method-builder.h: New file, moved the mono_mb_ declarations here from 
8261         marshal.h.
8262
8263         * boehm-gc.c marshal.c: Include method-builder.h.
8264
8265         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
8266
8267         * marshal.c: Remove some code which is now in method-builder.c.
8268
8269 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8270
8271         * method-builder.c: New file, extraction of the method builder functionality 
8272         from marshal.c.
8273
8274         * marshal.c: Move the mb functions into method-builder.c.
8275
8276         * marshal.h marshal.c: Export some mono_mb_... functions.
8277
8278         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
8279
8280         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
8281         the caller.
8282
8283         * class.c (mono_class_get_full): Check the token type in the dynamic case.
8284
8285         * loader.c (mono_field_from_token): Ditto.      
8286
8287         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
8288         type as well.
8289         
8290         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
8291         Fixes #342565.
8292
8293         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
8294         a helper function for setting it.
8295
8296         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
8297
8298         
8299         * assembly.c: Significally simplify code now that referenced assemblies are 
8300         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
8301
8302         * threads.h: Don't include  the internal threads-types.h header file. Fixes
8303         #349952.
8304
8305 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
8306
8307         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
8308         instructions that were target of branches or are at protected block boundaries.
8309
8310         * verify.c (in_same_block): handle filter clauses.
8311
8312         * verify.c (is_valid_branch_instruction): added. checks the target of
8313         instructions br or brtrue/false.
8314
8315         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
8316         binary branch instructions such as beq and bge.
8317
8318         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
8319         and made it pin the instruction as been part of the exception block.
8320
8321         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
8322         of in_same_block.
8323
8324         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
8325         of in_same_block.
8326
8327         * verify.c (do_ret): ret from a protected block is unverifiable and
8328         not invalid.
8329
8330         * verify.c (do_static_branch): verify br and br.s instructions.
8331
8332         * verify.c (merge_stacks): add extra param to support detection
8333         of branches in the middle of instructions.
8334         
8335         * verify.c (mono_method_verify): verify branches and exception blocks
8336         that target the middle of instructions. Proper verification of br and br.s.
8337
8338 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
8341         skip_visibility field.
8342         (reflection_methodbuilder_from_dynamic_method): Ditto.
8343
8344         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
8345         registrations. Fixes #348193.
8346
8347         * threads.h: Move the internal mono_thread_get_pending_exception () to
8348         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
8349
8350 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8351
8352         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
8353         icall registration. Fixes #348193.
8354
8355         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
8356         for corlib classes into object. Fixes #349621.
8357
8358 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
8359
8360         * icall.c (property_accessor_nonpublic): new function to determine
8361         whether an accessor allows a property to be considered non-public.
8362         Returns false for private accessor(s) from parent class, and internal
8363         accessor(s) from parent on 2.0 profile (and higher).
8364         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
8365         to determine whether property should be included if NonPublic flag
8366         is set. Fixes bug #349078.
8367
8368 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
8369
8370         * verify.c (init_stack_with_value): added.
8371
8372         * verify.c (mono_method_verify): extracted common
8373         code for exception initialization into init_stack_with_value.
8374
8375         * verify.c (mono_method_verify): initialize the exception
8376         for handler clauses as well.
8377
8378         * verify.c (mono_method_verify): fix the exception clause
8379         ordering rules, it should use handler end offset and not
8380         start offset.
8381
8382 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
8383
8384         * rawbuffer.c: remove useless warning.
8385
8386 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
8387
8388         * threads.h, threads-types.h: move functions to the correct header
8389         (fixes bug#349952).
8390
8391 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8392
8393         * verify.c (mono_method_verify): proper verification
8394         of exception handling clauses ranges and fallthru in
8395         and out of protected blocks.
8396
8397 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * verify.c (mono_method_verify): fixed compilation issue.
8400
8401 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8402
8403         * verify.c (mono_method_verify): a printf slipped in, changed
8404         to use verifier debug macro.
8405
8406 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * verify.c (is_correct_leave): check for filter clauses.
8409
8410         * verify.c (do_filter): added.
8411
8412         * verify.c (mono_method_verify): property verification of leave.
8413
8414
8415 2007-12-18  Mark Probst  <mark.probst@gmail.com>
8416
8417         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
8418         Win32 build, until we figure out how to do the proper thing on
8419         Win32.
8420
8421 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
8422
8423         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
8424         by the previous patch.
8425         
8426         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
8427         the assembly resolve handler for refonly assemblies.
8428
8429 2007-12-17  Mark Probst  <mark.probst@gmail.com>
8430
8431         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
8432         Make sure only one thread is allowed to commence shutdown, and
8433         don't allow new threads to be started once shutdown is in
8434         progress.
8435
8436 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8437
8438         * verify.c (is_correct_endfilter): added.
8439
8440         * verify.c (is_unverifiable_endfilter): added.
8441
8442         * verify.c (do_endfilter): added.
8443
8444         * verify.c (mono_method_verify): property verification of endfilter
8445         and fixed a corner case or endfinally.
8446
8447 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8448
8449         * verify.h: new flags to support fail fast of unverifiable code and
8450         do non-strict verification. Non-strict verification is required to
8451         have MS runtime compatibility. There are a huge amount of unverifiable
8452         code that it accepts as verifiable. The strict mode verifies the code
8453         as the specs says.
8454         Non-strict mode will be required in cases where code needs to be
8455         accepted as verifiable but fails under strict mode.
8456
8457         * pedump.c: added support to fail fast and non-strict verification.
8458
8459         * verify.c: added support for both fail fast and non-strict verification.
8460
8461 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8462
8463         * verify.c (is_correct_endfinally): added.
8464
8465         * verify.c (mono_method_verify): property verification of endfinally.
8466
8467 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8468
8469         * verify.c (in_any_block): check for filter clauses.
8470
8471         * verify.c (is_correct_rethrow): added.
8472
8473         * verify.c (mono_method_verify): property verification of rethrow.
8474
8475         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8476
8477 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8478
8479         * verify.c (do_throw): added.
8480
8481         * verify.c (mono_method_verify): property verification of throw
8482
8483 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8484
8485         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8486         assemblies. Fixes #346425.
8487
8488 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8489
8490         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8491         FieldBuilders.
8492
8493         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8494
8495         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8496         prevent asserts when this is called with a token which might not be valid.
8497
8498         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8499         lookup_dynamic_token_class with valid_token == FALSE.
8500
8501         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8502
8503         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8504
8505         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8506         
8507 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8508
8509         * gc.c: Don't delay threadpool thread finalization unless Mono is
8510         shutting down.
8511
8512 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8513
8514         * threads.c: turn an assert into a non-fatal warning.
8515
8516 2007-12-09  Robert Jordan  <robertj@gmx.net>
8517
8518         * icall.c (GetVirtualMethod): Add missing argument validation.
8519
8520 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8521
8522         * verify.c (do_cast): added.
8523
8524         * verify.c (mono_method_verify): property verification of castclass and isinst.
8525
8526
8527 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8528
8529         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8530
8531         * verify.c (do_stelem): added.
8532
8533         * verify.c (mono_method_verify): property verification of stelem.X.
8534
8535 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8536
8537         * class.c, class-internals.h: Introduce an environment variable
8538         (MONO_GENERIC_SHARING) through which the extent of generic code
8539         sharing can be controlled (share all classes, share only corlib
8540         classes, or share nothing).
8541
8542         * object.c: Only create runtime generic context for classes for
8543         which sharing is enabled.
8544
8545 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8546
8547         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8548
8549         * verify.c (mono_method_verify): property verification of ldelem.any.
8550
8551 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8554         added ldelem.X opcodes.
8555
8556         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8557
8558         * verify.c: proper verification of ldelem.X 
8559
8560 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8561
8562         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8563
8564 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8565
8566         * verify.c (mono_method_verify): null literal requires special handling,
8567         the value pushed on stack need to be flagged as so.
8568
8569         * verify.c (do_ldelema): Verify ldelema properly.
8570
8571 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8572
8573         * verify.c: Verify ldlen properly.
8574
8575 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8578         to the target object's type. Fixes #346160.
8579
8580 2007-12-05  Dick Porter  <dick@ximian.com>
8581
8582         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8583         Solaris needs the same workaround as BSD-derived systems.  Fixes
8584         bug 323524, patch by Burkhard Linke
8585         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8586
8587 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8588
8589         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8590         handle to use when error dialog is shown; otherwise, update mask
8591         to show no error dialog when an error occurs.
8592
8593 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8594
8595         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8596
8597         * class.c (mono_class_get_field_default_value): New helper function to initialize
8598         field->def_type and field->data.
8599
8600 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8601
8602         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8603         the general one.
8604
8605         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8606
8607         * marshal.c: Avoid depending on delegate->method_info being set.
8608
8609         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8610         
8611         * object.c (mono_delegate_ctor): Set delegate->method.
8612
8613         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8614
8615         * appdomain.c: Bump corlib version.
8616
8617 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8618
8619         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8620         equality check if we're comparing canonicalized MonoGenericInsts.
8621
8622 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8623
8624         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8625         accessing class->methods.
8626
8627 2007-11-22  Dick Porter  <dick@ximian.com>
8628
8629         * threads.c: Ensure that the synch_cs is set before trying to use
8630         it.
8631
8632 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8633
8634         * profiler.c: r89126 broke the statistial profiler, unbreak.
8635
8636 2007-11-22  Martin Baulig  <martin@ximian.com>
8637
8638         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8639
8640         * mono-debug.c
8641         (mono_debug_debugger_version): Bump to 3.
8642         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8643         -> mono_debugger_class_initialized().
8644
8645         * mono-debug-debugger.c
8646         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8647
8648         * class.c
8649         (mono_debugger_start_class_init_func): Removed.
8650         (mono_debugger_class_loaded_methods_func): Added.
8651         (mono_class_setup_methods): Call it here.
8652
8653 2007-11-22  Martin Baulig  <martin@ximian.com>
8654
8655         * mono-debug.c
8656         (mono_debug_add_delegate_trampoline): New public method.
8657         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8658
8659         * mono-debug.h
8660         (MonoSymbolTable): Added `global_data_table'.
8661         (MonoDebuggerTypeKind): Removed.
8662
8663 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8666         these methods.
8667
8668         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8669         
8670 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8671
8672         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8673
8674 2007-11-20  Martin Baulig  <martin@ximian.com>
8675
8676         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8677
8678         * mono-debug-debugger.c
8679         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8680         (mono_debugger_remove_breakpoint): Likewise.
8681         (mono_debugger_check_breakpoints): Likewise.
8682         (mono_debugger_register_class_init_callback): New public method.
8683         (mono_debugger_remove_class_init_callback): Likewise.
8684         (mono_debugger_add_type): Likewise.
8685
8686         * mono-debug-debugger.h
8687         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8688
8689 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8690
8691         * class.c: more interface implementations needed for the
8692         array enumerator (fixes bug #341112).
8693
8694 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8695
8696         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8697         fix ParamName of ArgumentNullExceptions.
8698
8699 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8700
8701         * reflection.c (mono_reflection_encode_sighelper): Generate the
8702         modopts and modreqs.   I have a useless test that crashes monodis,
8703         but that shows the code working.
8704
8705 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8706
8707         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8708         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8709
8710 2007-11-15  Dick Porter  <dick@ximian.com>
8711
8712         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8713         When joining a thread, it's the thread that's calling Join that
8714         gets WaitSleepJoin state not the target.  Fixes the standalone
8715         test case in bug 334740, and hopefully the whole bug too.
8716
8717 2007-11-15  Dick Porter  <dick@ximian.com>
8718
8719         * process.c: Read file version info from the files pointed at by
8720         process modules, not the current process.  Fixes bug 315969.
8721
8722         Use windows typedef names in some places to fix warnings on the
8723         windows build.
8724
8725 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8726
8727         * image.c, metadata-internals.h: Added a generic_class_cache hash
8728         to MonoImage for looking up generic classes when sharing generics.
8729
8730 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8731
8732         * sgen-gc.c: warning cleanups.
8733
8734 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8737         inherited properties.
8738
8739 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8740
8741         * object.c, class-internals.h: Added more information to the
8742         runtime generic context.
8743
8744 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8745
8746         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8747         instead of just the target method. Generalize the abstract method handling to
8748         handle any non-static method.
8749
8750         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8751         mono_marshal_get_delegate_invoke () signature change.
8752
8753 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8754
8755         * class.c, class-internals.h: Made
8756         mono_type_get_basic_type_from_generic () public.  Fixed member
8757         access check for shared generics.
8758
8759         * loader.c: Don't insert field into field cache if it's part of a
8760         non-inflated generic class.
8761
8762         * domain.c, domain-internals.h: The generic sharing context is now
8763         part of the jit info data structure.  Added two accessor
8764         functions.
8765
8766 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8769         the array Get/Set/Address methods, since the JIT inlines them.
8770
8771         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8772
8773         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8774         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8775
8776         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8777         mono_marshal_get_delegate_invoke signature change.
8778
8779         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8780         an additional argument. Add support for invoking abstract methods.
8781
8782         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8783
8784         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8785
8786 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8787
8788         * class.c: Do field layout for open generic classes as well.
8789
8790 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8791
8792         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8793         other objects, because the threadpool is still around.  Put them
8794         in a list instead and after finalizing all other objects in the
8795         root domain shut down the thread pool and then finalize the
8796         threads.  Fixes bug #337383.
8797
8798         * threads.c, thread-types.h: New mono_thread_create_internal()
8799         function for marking a thread with the threadpool flag before it
8800         started.  Set synch_cs to NULL after freeing it.
8801
8802         * threadpool.c: Mark threadpool threads before they start.
8803
8804 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8805
8806         * reflection.h, reflection.c: don't export random functions
8807         and lazy load dbnull and missing objects.
8808
8809 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8810
8811         * class.c: Initialize COM types if COM interfaces
8812         are present (not just COM classes).
8813         
8814         Code is contributed under MIT/X11 license.
8815
8816 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8817         * reflection.c:
8818         create_dynamic_mono_image: hook module profiler events (dynamic case).
8819         mono_image_basic_init: hook assembly profiler events (dynamic case).
8820
8821 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8822         * profiler.c:
8823         simple_appdomain_unload: completely terminate the profiler
8824         instead of only processing the statistical samples.
8825         simple_shutdown: make sure this is really called exactly once,
8826         even in multithreaded applications, and always listen to
8827         appdomain events.
8828         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8829         here, the "[un]load" functions will do it.
8830         Fixes bugs #333791 and #325261.
8831
8832 2007-11-07  Geoff Norton  <gnorton@novell.com>
8833
8834         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8835         rather than depend on __APPLE__.
8836
8837 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8838
8839         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8840
8841 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8842
8843         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8844         UTF16 MonoString. Fix the crash from bug #335488
8845
8846 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8847
8848         * marshal.c: Correct (for non-Win32 OS) length != size in 
8849         mono_string_from_bstr. Fix #339530.
8850
8851 2007-11-06  Geoff Norton  <gnorton@novell.com>
8852
8853         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8854         to succeed
8855
8856 2007-11-05  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
8857
8858         * process.c: Added run-time GetProcessId API detection for Windows.
8859
8860 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8861
8862         * reflection.c  (mono_param_get_objects): If a parameter has the
8863         attribute [System.Runtime.InteropServices.Optional] we should
8864         set the DefaultValue of the ParameterInfo to be
8865         System.Reflection.Missing instead of DBNull.
8866
8867         See bug #339013.
8868
8869         (mono_get_reflection_missing_object): New method,
8870         returns the System.Reflection.Missing.Value singleton instance.
8871
8872 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8873
8874         * culture-info-table.h : regenerated.
8875
8876 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8877
8878         * icall.c: Use GetEnvironmentStrings on windows
8879         so we are using the same environment block as 
8880         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8881         #333740.
8882         
8883         Code is contributed under MIT/X11 license.
8884
8885 2007-10-31  Martin Baulig  <martin@ximian.com>
8886
8887         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8888
8889         * mono-debug-debugger.h
8890         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8891
8892 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8893
8894         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8895         classes.
8896
8897 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8898
8899         * culture-info-table.h : regenerated.
8900
8901 2007-10-30  Robert Jordan  <robertj@gmx.net>
8902
8903         * icall-def.h, icall.c:
8904         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8905
8906         Code is contributed under MIT/X11 license.
8907
8908 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8909
8910         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8911         inflated class instead of inflating them again.
8912         
8913         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8914         dynamic case.
8915
8916         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8917         Call setup_supertypes () after klass->parent is set.
8918         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8919
8920         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8921         for inflated instances of not yet created dynamic generic classes.
8922         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8923         times from inflated_method.
8924         (methodbuilder_to_mono_method): Ditto.
8925
8926 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8927
8928         * gc.c: code cleanup and removed old untested option of not creating the
8929         finalizer thread.
8930
8931 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8934         creating a jump trampoline for dynamic methods.
8935
8936 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8937
8938         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8939         generic TypeBuilders when called from another method of the same type (bug #335131).
8940
8941
8942 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8943
8944         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8945         doesn't seem to work perfectly.
8946         
8947         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8948         called multiple times.
8949         (methodbuilder_to_mono_method): Ditto.
8950         (resolve_object): Inflate FieldBuilder's.
8951
8952 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8953
8954         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8955         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8956         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8957
8958 2007-10-26  Dick Porter  <dick@ximian.com>
8959
8960         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8961         Thread initialisation changes
8962
8963 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8964
8965         * verify.c: fix compatibility check between arrays and System.Array
8966
8967 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8970         too. Fixes #336999.
8971
8972 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * object.c (mono_value_box): Use typed allocation here.
8975
8976 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8979         trampoline instead of compiling the method right away.
8980
8981         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8982
8983 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8986         related fields for dynamic classes. Fixes #334493.
8987
8988 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8989
8990         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8991         
8992         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8993
8994         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8995         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8996
8997         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8998
8999         * reflection.c (create_generic_typespec): Initialize klass->generic_container
9000         if needed.
9001         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
9002
9003 2007-10-18  Jonathan Chambers <joncham@gmail.com>
9004
9005         * marshal.c: Use correct key when removing item
9006         from ccw_hash.
9007         
9008         Code is contributed under MIT/X11 license.
9009
9010 2007-10-17  William Holmes  <billholmes54@gmail.com>
9011
9012         *marshal.c: Adding a case to marshal booleans to U1
9013
9014         Code is contributed under MIT/X11 license.
9015
9016 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
9017
9018         * class.c (mono_class_from_name): Search the modules compromising dynamic
9019         assemblies. Fixes #331601.
9020
9021 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
9022
9023         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
9024         exception if the type name contains an assembly component. Fixes #334203.
9025
9026         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
9027         modules inside dynamic assemblies. Fixes #334200.
9028         
9029         * reflection.c: Set image->public_key and image->public_key_length;
9030
9031         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
9032         fields.
9033
9034         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
9035         
9036 2007-10-16  Mark Probst  <mark.probst@gmail.com>
9037
9038         * metadata.c: Implemented correct comparing of generic classes.
9039         An inflated generic class can be equal to a non-inflated one if it
9040         is inflated with generic type variables as type arguments.  Fixes
9041         bug #333798.
9042
9043 2007-10-15  Dick Porter  <dick@ximian.com>
9044
9045         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
9046         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
9047         81646.
9048
9049         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
9050         instead of a monitor lock.  This means that monitor_try_enter and
9051         co can set the thread state safely.
9052         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
9053         thread_interrupt_requested, so interrupt actually works.
9054
9055         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
9056         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
9057         state accessor function
9058
9059 2007-10-15  Martin Baulig  <martin@ximian.com>
9060
9061         * mono-debug.h
9062         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
9063         the debugger with the current runtime.
9064
9065 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
9066
9067         * object.c, object-internals.h: added the ability to set a single
9068         trampoline for all the slots in a vtable.
9069
9070 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9071
9072         * marshal.c: deal with a possible race condition during multicast
9073         delegate invocation.
9074
9075 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9076
9077         * class.c: ensure value type methods don't have the synchronized
9078         flag set.
9079
9080 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
9081
9082         * string-icalls.c, string-icalls.h: reverted unapproved patch that
9083         breaks the build.
9084
9085 2007-10-11  Joel Reed  <joelwreed@comcast.com>
9086
9087         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
9088         to take an options parameter so that empty entries can be removed during
9089         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
9090
9091 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9092
9093         * marshal.c: make sure we don't store the signature from a dynamic
9094         method into the runtime invoke cache (bug #327189).
9095
9096 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9097
9098         * marshal.c: make sure the wrapper methods are properly initialized.
9099
9100 2007-10-11  Mark Probst  <mark.probst@gmail.com>
9101
9102         * metadata.c, metadata-internals.h: Generalized
9103         mono_type_stack_size() to mono_type_stack_size_internal() which
9104         takes an additional argument specifying whether it allows open
9105         types.
9106
9107 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9108
9109         * verify.c (do_invoke_method): handle typedbyref params
9110         correctly and check for unverifiable return values.
9111
9112         * verify.c (do_newobj): fix a warning.
9113
9114 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9115
9116         * verify.c: don't tread typedbyref as allways unverifable,
9117         so uses, like (ld/st)loc.0 are valid. verify for the cases
9118         that it matters, like boxing related operations.
9119
9120 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9121
9122         * verify.c: add verification of the newobj opcode. verification
9123         of delegate instantation still missing due ldftn and virldftn not
9124         pushing the function type on stack
9125
9126 2007-10-08  Mark Probst  <mark.probst@gmail.com>
9127
9128         * class-internals.h: Runtime generic context data structure
9129         definition.
9130
9131         * object.c: Initialization of runtime generic context at runtime
9132         vtable creation time.
9133
9134 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
9135         * class.c (mono_class_create_from_typedef,
9136         mono_class_from_generic_parameter, mono_ptr_class_get,
9137         mono_fnptr_class_get, mono_bounded_array_class_get)
9138         * domain.c (mono_domain_create, mono_domain_free)
9139         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
9140         * image.c (do_mono_image_load, mono_image_close):
9141         Hooked up load-unload profiler events.
9142
9143 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
9144
9145         * domain.c: track statistics about the actual amount of native code
9146         allocated.
9147
9148 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9149
9150         * class.c: the valuetype enumerators don't have the additional
9151         supertypes interfaces.
9152
9153 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9154
9155         * class.c: need more interfaces setup for the IEnumerator<T>
9156         object created for arrays (tests/ienumerator-interfaces.2.cs).
9157
9158 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
9161
9162 2007-10-05  Alp Toker  <alp@atoker.com>
9163
9164         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
9165         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
9166         #315863.
9167
9168 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
9169
9170         * verify.c (verify_type_compatibility_full): verification of
9171         compatibility improved, validates correctly non-strict checks between
9172         native int and I4 types different than (unsigned)int32.
9173
9174         * verify.c (do_store_indirect): added, do all verification of
9175         ldind.X opcodes. 
9176
9177         * verify.c (get_load_indirect_mono_type): renamed to
9178         get_indirect_op_mono_type, as it now returns the MonoType for 
9179         ldind.X and stind.X opcodes.
9180
9181 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * reflection.c: Fix the encoding of generic type definition for
9184         TypeBuilders.
9185
9186         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
9187         mono_image_typedef_or_ref but allows to specify if typespec lookups should
9188         be made. Typespec check is done prior to typeref cache lookup.
9189
9190         * reflection.c (mono_image_typedef_or_ref): now just delegate to
9191         mono_image_typedef_or_ref_full.
9192
9193         * reflection.c (encode_generic_class): encode the generic class
9194         directly instead of calling encode_type.
9195
9196         * reflection.c (encode_type): encode the generic type definition
9197         MonoClass as a generic instantiation.
9198
9199         * reflection.c (create_typespec): cache typespec tokens in
9200         the assembly->typespec cache. Don't create typespec for a generic
9201         instance MonoClass. Create typespec for the generic type defintion.
9202
9203         * reflection.c (create_generic_typespec): encode the generic
9204         class directly instead of calling encode_type.
9205
9206         * reflection.c (mono_image_create_token): encode the generic
9207         type definition not using a typespec for MonoType instances.
9208
9209
9210 2007-10-04  Raja R Harinath  <rharinath@novell.com>
9211
9212         Fix #328812
9213         * class.c (mono_image_init_name_cache): Don't return nested
9214         'protected internal' classes.
9215         (mono_class_from_name_case): Likewise.
9216
9217 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
9218
9219         * icall-def.h, icall.c : get_bundled_machine_config() is now the
9220           common function used by both DefaultConfig in System.dll and
9221           InternalConfigurationHost in System.Configuration.dll.
9222
9223 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9224
9225         * class.c: automatically add to vectors only a few essential explicit
9226         generic interfaces. The rest of the interfaces that arrays should
9227         provide are currently implicitly added (but still not lazily, see the
9228         design in the discussion of bug#325495 for the details of what is
9229         needed for that). Additionally, implicit interfaces are assigned the
9230         same vtable slot as the explicit interfaces (as they are compatible):
9231         this enables huge memory savings since we don't need to instantiate
9232         as many memthods and as large vtables anymore. Also, Since
9233         GetEnumerator<T> returns an instance of a type that is required to
9234         support a similarly large set of interfaces as arrays, we add
9235         implicit interfaces and interface offset sharing support to those
9236         types, too. This change adds all the required interfaces so that
9237         the anonarray.cs test case in the bug report works (we don't add
9238         all the interfaces to arrays of arrays 3-level deep and more because
9239         of the memory requirements explained in the bug and since they are much
9240         less common: the lazy-loading support will enabled them to work, too).
9241
9242 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9243
9244         * verify.c (merge_stacks): major clean up, all type compatibility
9245         checks are done by verify_type_compatibility. This fix my earlier lack
9246         of understanding of the CLR type system and merge_stacks no longer looks
9247         scary.
9248
9249         * verify.c: fixed some bad spelling.
9250
9251 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9252
9253         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
9254         a given stack slock.
9255         
9256         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
9257         verify_type_compatibility_full. This removed a near indentical function and fixed
9258         handling of Int32 and IntPtr across all opcodes.
9259
9260 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9261
9262         * class.c: only vectors have the additional generic interfaces.
9263
9264 2007-10-01  Jonathan Chambers <joncham@gmail.com>
9265
9266         * mono-config.c: Use g_strcasecmp instead of
9267         strcasecmp like everywhere else to fix
9268         compilation with MSVC.
9269         
9270         Code is contributed under MIT/X11 license.
9271
9272 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9273
9274         * object.c, object-internals.h: refactored the IMT code to enable
9275         building a single slot at a time and lazily creating the IMT trampolines
9276         and thunks.
9277
9278 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
9279
9280         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
9281
9282         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
9283         Fixes #328501.
9284         
9285 2007-09-29  Raja R Harinath  <harinath@gmail.com>
9286
9287         * loader.c (method_from_methodspec): Rearrange to avoid
9288         un-necessary exposition.  Don't assert out if the method's
9289         declaring type is a generic type definition.
9290
9291 2007-09-28  Martin Baulig  <martin@ximian.com>
9292
9293         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
9294
9295 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9296
9297         * class-internals.h: optimize field layout of MonoClass to
9298         requires less cachelines at runtime and save a few bytes on 64 bit
9299         systems.
9300
9301 2007-09-28  Jb Evain  <jbevain@novell.com>
9302
9303         * reflection.c: when encoding type names in custom attributes,
9304         if the type is a closed generic type, its generic arguments
9305         have to be serialized as AssemblyQualifiedName, so that when
9306         they are deserialized, it's possible to re-create them properly.
9307         Fixes #329450.
9308
9309
9310 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9311
9312         * object.c, class-internals.h: added delegate-creation counter.
9313
9314 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9315
9316         * class.c: cleanup of the code that synthetizes interfaces for
9317         arrays in 2.0: saves quit a bit of corlib mempool memory.
9318         Code to fix bug #325495 ifdeffed out for now until the issues
9319         with memory usage and O(n^2) behaviour are fixed.
9320
9321 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9322
9323         * marshal.c: when possible, do not duplicate the name of the methods
9324         in the method builder and in the generated MonoMethod.
9325
9326 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9327         * verify.c: added support for type checking ldind_* opcodes.
9328
9329 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9330
9331         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
9332         which is used to distinguish the fully open instantiation of a TypeBuilder
9333         with the rest. This temporary hack is required to restore the property that
9334         the fully open instantiation is the same type of the generic type definition.
9335
9336         * class-internals.h (mono_generic_class_is_generic_type_definition):
9337         new function as part of the internal API.
9338
9339         * class.c (inflate_generic_type): return NULL when the generic inst is
9340         fully open. The fully open generic type is now the same as the generic type
9341         definition for non TypeBuilder types.
9342
9343         * class.c (mono_generic_class_get_class): removed assert since it is
9344         no longer valid, gklass->cached_class can point to the generic type definition.
9345
9346         * class.c (mono_generic_class_is_generic_type_definition): new.
9347
9348         * metadata.c (mono_generic_class_hash): added is_tb_open field
9349         to the hash calculation.
9350
9351         * metadata.c (free_generic_class): if the generic class is associated
9352         with the generic type definition, its field will come from the mempool and
9353         must not be freed.
9354
9355         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
9356         new, this function identifies the corner case of a TypeBuilder fully open
9357         instantiation.
9358
9359         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
9360         for lookup. Set gclass->cached_class to be the container class in case of
9361         the fully open instantiation of non TypeBuilder types.
9362
9363         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
9364         to compare generic classes.
9365
9366         * reflection.c (method_encode_methodspec): remove assert that
9367         no longer is valid.
9368
9369         * reflection.c (mono_reflection_generic_class_initialize): add
9370         an aditional assert to ensure the proper type is used.
9371
9372 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
9373
9374         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
9375         to enjoy it.
9376
9377 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9378
9379         * verify.c (push_arg): Fixed support for ldarga
9380         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
9381         MonoType used as first arg in case of instance calls.
9382
9383 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9384
9385         * verify.c: Support for verifying VAR and MVAR types, 
9386
9387 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
9388
9389         * icall.c (ves_icall_get_property_info): Set the reflected type of the
9390         accessors correctly.
9391
9392 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9393
9394         * threads.c: support OSX and other systems in
9395         mono_thread_get_stack_bounds (bug #328026).
9396
9397 2007-09-25  Martin Baulig  <martin@ximian.com>
9398
9399         * mono-debug.h
9400         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
9401
9402 2007-09-24  Martin Baulig  <martin@ximian.com>
9403
9404         * mono-debug.h
9405         (MonoDebugClassEntry): Moved the definition of this struct into
9406         mono-debug.c to make it private.
9407
9408         * mono-debug.c
9409         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
9410         type table per symbol file, we don't need to store the symfile id
9411         any longer.
9412
9413 2007-09-24  Martin Baulig  <martin@ximian.com>
9414
9415         Create one type table per symbol file, since a `MonoClass *' gets
9416         invalid when its image is unloaded.
9417
9418         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
9419         (MonoDebugHandle): Added `type_table'.
9420
9421 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9422
9423         * mempool.c, mempool.h: added mono_mempool_new_size () API
9424         to be able to specify a smaller initial size for the pool.
9425         Adjusted the code to slowly increase pool size before using
9426         the previous default size.
9427         * image.c: use a small initial size for image mempools.
9428
9429 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
9430
9431         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
9432         Fixes ##320990.
9433
9434         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9435         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9436
9437 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9438
9439         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9440         free. Fixes #327438.
9441
9442 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9443
9444         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9445         generic instantiations, etc.
9446         <MONO_TYPE_ARRAY>: Likewise.
9447
9448 2007-09-21  Martin Baulig  <martin@ximian.com>
9449
9450         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9451         these structs were never defined.
9452         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9453
9454 2007-09-21  Martin Baulig  <martin@ximian.com>
9455
9456         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9457
9458 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9459
9460         * image.c: removed the guid hash tables: we can get the same info
9461         without the additional memory usage hit (partially fixes also bug #327052).
9462
9463 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9464
9465         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9466         event to handle unloading methods. After the event is called, the
9467         corresponding MonoMethod* must be considered invalid.
9468         * loader.c (mono_free_method): call the new mono_profiler_method_free
9469         event.
9470
9471 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9472
9473         * domain-internals.h: New flag in MonoJitInfo which marks shared
9474         generic methods.  New hash table (shared_generics_hash) in
9475         MonoDomain to keep track of shared generic methods.  Prototypes
9476         for functions to register and lookup shared generic methods.
9477
9478         * domain.c: Support for registering and looking up shared generic
9479         methods via a hash table (shared_generics_hash) in MonoDomain.
9480
9481         * class-internals.h: New exception to signal failure of shared
9482         compilation of a generic method.  New counters for generics
9483         sharing in MonoStats.
9484
9485 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9486
9487         * image.c, metadata-internals.h: don't keep a file descriptor open
9488         for loaded assemblies (bug#325988).
9489
9490 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9491
9492         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9493         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9494         use the corresponding datatypes.
9495         (type_in_image): Update to changes.
9496         (CleanForImageUserData): Simplify.
9497         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9498         Avoid quadratic behaviour in handling the "stolen" list by
9499         separating the filter predicate out, and by prepending the stolen
9500         items rather than appending them.
9501         (steal_ginst_in_image): Likewise.
9502         (mono_metadata_clean_for_image): Update to changes.
9503
9504 2007-09-19  Martin Baulig  <martin@ximian.com>
9505
9506         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9507
9508 2007-09-19  Martin Baulig  <martin@ximian.com>
9509
9510         * mono-debug.c (mono_debug_cleanup): Don't call
9511         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9512
9513 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9514
9515         Fix crash on 'make run-test' in mcs/errors
9516         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9517         Avoid more potential allocations in mono_class_from_mono_type.
9518         (ginst_in_image): Update to changes.
9519         (gclass_in_image): Rearrange slightly.
9520
9521 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9522
9523         * class.c (mono_class_init): Move the code that sets up class->methods to 
9524         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9525
9526         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9527         canonical instance of an inflated generic signature.
9528         (mono_type_create_from_typespec): Remove an invalid free.
9529
9530         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9531
9532 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9533
9534         * domain-internals.h: added a declaration of the
9535         mono_assembly_load_full_nosearch internal function.
9536
9537         * assembly.c (mono_assembly_load_with_partial_name): use
9538         mono_try_assembly_resolve return value properly.
9539         (mono_assembly_load_full_nosearch): copied the function body from
9540         mono_assembly_load_full, without the code to invoke assembly
9541         search hooks.
9542         (mono_assembly_load_full): calls the above new function and if the
9543         assembly is not resolved, invokes the search hooks.
9544
9545         * appdomain.c (mono_runtime_init): restore the global postload
9546         assembly search handlers.
9547
9548 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9549
9550         * class.c (mono_class_init): Make sure class->methods and class->properties
9551         are never NULL in the generics case.
9552
9553         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9554
9555 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * metadata.c (free_generic_class): Disable some code to fix the build.
9558
9559         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9560
9561         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9562         from the image mempool.
9563
9564         * metadata.c (free_generic_class): Free more data from the inflated class.
9565
9566         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9567
9568         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9569         mempool.
9570         (mono_type_create_from_typespec): Ditto.
9571
9572         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9573         MonoImage to the caller.
9574         (mono_init_internal): Save the opened image in a global variable.
9575         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9576
9577         * reflection.c (resolve_object): Fix a leak.
9578
9579         * metadata.c: Fix the freeing of data in the generics caches.
9580         
9581         * metadata.c (free_generic_inst): Comment this out to fix the build.
9582         (free_generic_class): Ditto.
9583
9584         * metadata.c: Free cached generic methods, instantinations and classes when
9585         they are removed from the caches.
9586         (mono_metadata_free_type): Free the type itself.
9587
9588         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9589         places.
9590
9591 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9592
9593         * boehm-gc.c: restrict managed allocs to __thread supporting
9594         architectures.
9595
9596 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9599         (mono_generic_class_get_class): Fix a leak.
9600
9601         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9602         mono_metadata_free_type ().
9603         (mono_metadata_inflate_generic_inst): Fix a leak.
9604
9605 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9608
9609         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9610         mempool.
9611
9612         * mono-debug.c (mono_debug_close_image): Fix call to 
9613         g_hash_table_remove ().
9614
9615 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9616
9617         * icall-def.h: redirect all the string ctor to the managed
9618         CreateString () methods.
9619         * string-icalls.c, string-icalls.h: removed dead code for string
9620         ctors and icalls.
9621
9622 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9623
9624         * mono-debug.c: Fix memory leaks.
9625
9626 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9627
9628         * threads-types.h: Implement mono_hazard_pointer_set and 
9629         mono_hazard_pointer_clear macros using do/while(0) to fix
9630         compilation with MSVC.
9631         
9632         Code is contributed under MIT/X11 license.
9633
9634 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9637         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9638
9639 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9640
9641         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9642         icalls.
9643
9644 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9645
9646         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9647         managed-code allocated as well.
9648
9649 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9650
9651         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9652
9653 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9654
9655         * boehm-gc.c: fixed the build after the AOT changes.
9656
9657 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9658
9659         * wrapper-types.h: Add an ALLOC wrapper type.
9660
9661         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9662         reference managed allocator methods.
9663
9664 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9665
9666         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9667         of Type array and not MonoType, a fix suggested by Hari.
9668         
9669 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9670
9671         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9672         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9673         
9674         Code is contributed under MIT/X11 license.
9675
9676 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9677
9678         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9679
9680 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9681
9682         * image.c (do_mono_image_open): if assembly file fails to open and
9683         MONO_IOMAP is in effect, try to find the path in a
9684         case-insensitive way.
9685
9686         * appdomain.c (mono_runtime_init): do not install postload hooks -
9687         tests show that MS.NET doesn't use anything of that sort to
9688         trigger the AppDomain.AssemblyResolve event.
9689         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9690         made non-static.
9691         (mono_runtime_init): init portability helpers here.
9692
9693         * assembly.c (mono_assembly_load_with_partial_name): if other   
9694         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9695         to resolve the assembly.
9696
9697         * domain-internals.h: added mono_try_assembly_resolve and marked
9698         it as internal.
9699
9700 2007-09-11  Jb Evain  <jbevain@novell.com>
9701
9702         * object-internals.h (MonoReflectionDynamicMethod): add
9703         a `MonoReflectionType *owner` field. The owner is used
9704         * reflection.c:
9705         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9706         method as the class declaring the dynamic method.
9707         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9708         dynamic method to the declaring type of the methodbuilder.
9709
9710 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9711
9712         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9713         rules for calling methods via reflection.
9714
9715 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9716
9717         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9718         Inflate MonoType's.
9719
9720 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9721
9722         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9723         provide a managed method that does fast allocations without needing
9724         a managed->unmanaged transition. Boehm GC implementation currently
9725         enabled for ptrfree objects on sane architectures.
9726
9727 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9728
9729         * marshal.c, marshal.h: exported a couple of useful functions and
9730         added mono_mb_get_label () to easily handle backward branches.
9731
9732 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9733
9734         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9735
9736 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9737
9738         * loader.c (find_method): Fixed the regression introduced while
9739         fixing bug #81466.
9740
9741 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9744         well.
9745         
9746         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9747         icall.c reflection.c: Pass a MonoGenericContext argument to 
9748         mono_lookup_dynamic_token ().
9749
9750         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9751         #82744.
9752         
9753 2007-09-09  Robert Jordan  <robertj@gmx.net>
9754
9755         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9756         for generic methods.
9757
9758         * object.c (mono_object_get_virtual_method): Handle generic methods.
9759         Fixes bug #78882.
9760
9761         Code is contributed under MIT/X11 license.
9762
9763 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9764
9765         * image.c: fix locking in mono_image_load_file_for_image ().
9766
9767 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9768
9769         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9770         used only as a cache: added an icall to fill it.
9771
9772 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9773
9774         * reflection.h: exposed mono_reflection_free_type_info
9775         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9776         since mono_reflection_bind_generic_parameters makes a copy of it.
9777         * reflection.c (free_type_info): subinfos should be freed.
9778         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9779         made non static.
9780         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9781         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9782         this fixes #82695 and #81726.
9783    
9784
9785 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9786
9787         * process.h, process.c:  added support for user profile/info in
9788           ProcessStartInfo. For now only Windows works.
9789
9790 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9791
9792         * metadata.c: consider the generic arguments when comparing
9793         signatures (bug #82614).
9794
9795 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9796
9797         * cil-coff.h, image.c: updated assembly loader to cope with the
9798         PE32+ 64 bit file format.
9799
9800 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9801
9802         * assembly.c, class.c, domain.c, loader.c: remove useless
9803         inclusion of cil-coff.h.
9804
9805 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9806
9807         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9808         if interface is marked with CoClassAttribute. 
9809    
9810         Code is contributed under MIT/X11 license.
9811
9812 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9813
9814         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9815         if it's seen twice in major collections.
9816
9817 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9818
9819         * sgen-gc.c: big objects are not copied to the gray area, but they
9820         need to be considered for scanning, too, if they are brought alive
9821         by an object ready for finalizations or a survived one.
9822
9823 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9824
9825         * sgen-gc.c: properly account the number of disappearing links when
9826         they are nullified.
9827
9828 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9829
9830         * sgen-gc.c: share the code to scan the registered roots between the
9831         different types of collections.
9832
9833 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9836
9837 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9840         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9841
9842 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9843
9844         * security-manager.c (mono_security_manager_get_methods):
9845         LinkDemandSecurityException now has 2 arguments instead of 3.
9846
9847 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9848
9849         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9850         platforms which need it.
9851
9852 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9853
9854         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9855         dtor.
9856
9857 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9858
9859         * threads.c: free the thread static data on thread exit.
9860
9861 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9862
9863         * class.c: walk the hierarchy to find the generic definition for
9864         a class (fixes runtime part of bug #82498).
9865
9866 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9869         ...
9870
9871         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9872
9873 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9874
9875         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9876
9877 2007-08-24  Robert Jordan  <robertj@gmx.net>
9878
9879         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9880
9881 2007-08-24  Jb Evain  <jbevain@novell.com>
9882
9883         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9884         for byref types.
9885
9886 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9887
9888         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9889         #82286.
9890
9891 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * assembly.c: Fix a warning.
9894         
9895 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9896
9897         * appdomain.c: parse the <runtime> section looking for the probing
9898         element with the 'privatePath' attribute, which sets additional
9899         directories in which the runtime should look for assemblies.
9900
9901 2007-08-23  Robert Jordan  <robertj@gmx.net>
9902
9903         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9904         Fixes #82499.
9905
9906 2007-08-23  Martin Baulig  <martin@ximian.com>
9907
9908         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9909         _mono_debug_init_corlib() and remove it from the header file.
9910
9911 2007-08-23  Martin Baulig  <martin@ximian.com>
9912
9913         * mono-debug-debugger.c
9914         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9915         don't notify the debugger about it.
9916
9917         * mono-debug-debugger.h
9918         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9919
9920 2007-08-23  Robert Jordan  <robertj@gmx.net>
9921
9922         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9923         Code is contributed under MIT/X11 license.
9924
9925 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9926
9927         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9928
9929 2007-08-22  Martin Baulig  <martin@ximian.com>
9930
9931         * mono-debug.c: Store debugging info on a per-domain basis and
9932         free it on domain unload.  Add support for unloading symbol files.
9933
9934         * mono-debug.h
9935         (MonoDebugList): New typedef.
9936         (MonoSymbolTable):
9937         - add `data_tables and `type_table'.
9938         - replace 'symbol_files' and `num_symbol_files' with a
9939           `MonoDebugList *'.
9940         (mono_debug_data_table): Removed.
9941         (mono_debug_list_add): New public function.
9942         (mono_debug_list_remove): New public function.
9943         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9944         (mono_debug_init_2_memory): Renamed into
9945         mono_debug_open_image_from_memory().
9946         (mono_debug_close_image): New public function.
9947         (mono_debug_domain_create): Likewise.
9948         (mono_debug_domain_unload): Likewise.
9949         (MONO_DEBUGGER_VERSION): Bump to 60.
9950
9951         * mono-debug-debugger.h
9952         (MonoDebuggerEvent):
9953         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9954         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9955         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9956         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9957           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9958         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9959           meaning.
9960         (mono_debugger_add_symbol_file): Removed.
9961         (mono_debugger_add_type): Removed.
9962         (mono_debugger_lookup_type): Removed.
9963         (mono_debugger_lookup_assembly): Removed.
9964
9965         * domain.c
9966         (mono_domain_create): Call mono_debug_domain_create().
9967         (mono_init_internal): Call mono_debug_init_corlib().
9968
9969         * assembly.c
9970         (mono_assembly_close): Call mono_debug_close_image().
9971
9972 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9973
9974         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9975         mmap call.
9976
9977 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9978
9979         * sgen-gc.c: ensure section->pin_queue_end is initialized
9980         correctly when non pinning objects in the section have been found.
9981
9982 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9983
9984         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9985         containing a list of directories separated by ':'. MSDN docs say
9986         the directories should be separated with ';'. Part of a bugfix for
9987         bug #81446
9988
9989 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9990
9991         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9992         it should MonoType and not MonoClass.
9993
9994 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9995
9996         * culture-info-table.h : regenerated.
9997
9998 2007-08-20  William Holmes  <billholmes54@gmail.com>
9999
10000         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
10001          to call ReplaceFile Kernel32 on windows or in io-layer.
10002         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
10003         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
10004          as an internal call.
10005
10006         Code is contributed under MIT/X11 license.
10007
10008 2007-08-20  Jb Evain  <jbevain@novell.com>
10009
10010         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
10011         and MONO_EXCEPTION_FIELD_ACCESS.
10012
10013         * debug-helpers.[c|h]: new mono_field_full_name function.
10014
10015 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10016
10017         * class.c: Removed class_security_level() and moved it to
10018         security-core-clr.c.
10019
10020         * security-core-clr.c, security-core-clr.h: class_security_level()
10021         is now public and renamed to mono_security_core_clr_class_level().
10022         It also looks for security attributes in the classes a class is
10023         nested in.
10024
10025 2007-08-20  Mark Probst  <mark.probst@gmail.com>
10026
10027         * security-core-clr.c, security-core-clr.h: CoreCLR security
10028         utility functions.
10029
10030         * Makefile.am: Added security-core-clr.[ch].
10031
10032         * security-manager.c, security-manager.h: Functions and enum for
10033         setting and getting the security mode.
10034
10035         * class.c: CoreCLR security checks.
10036
10037 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10038
10039         * icall-def.h, process.c, process.h: implemented icall to get
10040         user/system processor times.
10041
10042 2007-08-17  Mark Probst  <mark.probst@gmail.com>
10043
10044         * domain.c, threads.c, class-internals.h, domain-internals.h: New
10045         reader-lock-free jit_info_table.
10046
10047 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
10048
10049         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
10050
10051         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
10052
10053         * object-internals.h (MonoException): Add missing _data member.
10054
10055 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
10056
10057         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
10058         checking that only methods with matching qname or fqname are picked
10059         from implemented interfaces.
10060
10061 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10062
10063         * verify.c (do_newarr):added, do type verification of
10064         newarr ops, push the right value on the eval stack.
10065         * verify.c (mono_method_verify): use do_newarr
10066
10067
10068 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10069
10070         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
10071         factored the common code into get_boxable_mono_type, which
10072         is now using mono_type_get_full, this fixed byref related tests.
10073
10074 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
10075
10076         * class.c: added mono_type_get_full, this function has the same
10077         behavior of mono_class_get_full but the returned MonoType has
10078         all metadata of the associated token in case of a typespec token.
10079         * class.c: added mono_type_retrieve_from_typespec, used by 
10080         mono_type_get_full to retrieve the token type.
10081         * class.c (mono_class_create_from_typespec): changed to use
10082         mono_type_retrieve_from_typespec.
10083         * class.c (mono_ldtoken): changed to use mono_type_get_full
10084         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
10085         * class-internals.h: exported mono_type_get_full for internal use.
10086
10087 2007-08-16  Jb Evain  <jbevain@novell.com>
10088
10089         * domain.c (supported_runtimes): add entry for
10090         the 'moonlight' runtime version.
10091
10092 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10093
10094         * verify.c (mono_method_verify): small typo sliped in.  
10095
10096 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10097
10098         * verify.c (do_unbox_value): added, do type verification of
10099         unboxing ops
10100         * verify.c (mono_method_verify): use do_unbox_value
10101
10102
10103 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10104
10105         * verify.c (dump_stack_value): fixed typo, was printing string
10106         instead of object on stack.
10107         * verify.c (do_box_value): moved the byref check up as it leads
10108         to invalid code and should be done earlier.
10109         * verify.c: improved error messages for and ldobj
10110
10111 2007-08-15  William Holmes  <billholmes54@gmail.com>
10112
10113         * marshal.c (emit_marshal_custom): Omit the call to 
10114           marshal_native_to_managed when calling native to managed 
10115           and the argument is specified as an out argument.
10116
10117         Code is contributed under MIT/X11 license.
10118
10119 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
10120
10121         * verify.c: fixed the type checks for generics, function pointers and vectors.
10122         Added type verification for ldobj and ldtoken. The verifier
10123         would segfault if header or signature of a method contained references
10124         to non-existant types.
10125
10126 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
10127
10128         * marshal.c (cominterop_get_ccw): Patch from
10129         Bill Holmes to no walk up interface hierarchy. 
10130         All parent methods should be present in the interface for COM.
10131    
10132         Code is contributed under MIT/X11 license.
10133
10134 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
10135
10136         * marshal.c (emit_marshal_com_interface): Patch from
10137         Bill Holmes to handle COM Interfaces as return values
10138         for native->managed calls.
10139    
10140         Code is contributed under MIT/X11 license.
10141
10142 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
10143
10144         * marshal.c (cominterop_get_idispatch_for_object): Implement
10145         for runtime callable wrappers.
10146    
10147         Code is contributed under MIT/X11 license.
10148
10149 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
10150
10151         * pedump.c (main): changed from mono_init to mono_init_from_assembly
10152         so 2.0 types are accessible
10153
10154
10155 2007-08-13  Miguel de Icaza  <miguel@novell.com>
10156
10157         * domain.c (mono_init_internal): Call mono_assembly_load_friends
10158         once we load mscorlib.   Due to the order in which we initialize,
10159         the mono_assembly_load_full routine that loads mscorlib did not
10160         load friends.   We now load it once we load the
10161         mono_defaults.internals_visible_class class. 
10162
10163         * assembly.c: Expose the mono_load_friend_assemblies method.
10164
10165 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
10166
10167         * verify.c: improved the handling of boxing, better
10168         type checking for unary ops and conversion. Fix bug
10169         regarding managed pointer compatibility checking
10170
10171 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
10172
10173         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
10174
10175         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
10176
10177 2007-08-09  Raja R Harinath  <rharinath@novell.com>
10178
10179         * reflection.c (dup_type): Remove.
10180         * class.c (dup_type): Remove.
10181         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
10182         instead of the dodgy 'dup_type'.
10183         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
10184         handle the case where 'dup_type' needed the second argument.
10185
10186 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10187
10188         * domain.c: Fix a warning.
10189
10190 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
10191
10192         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
10193         checking that methods with the same fqname are not overridden
10194         with a method from an ancestor.
10195
10196 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
10197
10198         * threads.c (free_thread_static_data_helper): Avoid a crash if
10199         thread->static_data is not yet set.
10200
10201 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
10202
10203         * marshal.c: Use correct image when emitting
10204         native wrapper for COM calls.
10205    
10206         Code is contributed under MIT/X11 license.
10207
10208 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
10209
10210         * icall-def.h, security.c, security.h :
10211           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
10212
10213 2007-08-07  Martin Baulig  <martin@ximian.com>
10214
10215         * mono-debug-debugger.h
10216         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
10217
10218         * domain.c (mono_domain_free): Call
10219         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
10220
10221 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10222
10223         * verify.c (check_underflow, check_overflow): error message now returns IL offset
10224         * verify.c (in_same_block): code should test if either offset is inside the clauses
10225         * verify.c (mono_method_verify): push the exception into the eval stack of exception
10226         and filter blocks
10227
10228 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * image.c (mono_image_close): Fix a leak.
10231
10232         * object.c (mono_runtime_invoke_array): Avoid using alloca.
10233
10234         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
10235
10236 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10237
10238         * domain.c, threads.c, threads-types.h: fix memory retention issue
10239         with thread static variables not being cleared on domain unload.
10240         Reuse thread static slots after domain unload.
10241
10242 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10243
10244         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
10245         nullable type.
10246
10247         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
10248         now done in mono_runtime_invoke_array.
10249
10250         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
10251         receiver is a nullable type.
10252
10253         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
10254         generic parameter.
10255
10256 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
10257
10258         * marshal.c: Implement COM Objects as return type for 
10259         managed->unmanaged calls. Added Release calls for COM Object
10260         out/return values in managed->unmanaged calls.
10261
10262         Code is contributed under MIT/X11 license.
10263
10264 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10265
10266         * threads.h, threads-type.h: move the hazard pointer declarations
10267         to the private header.
10268
10269 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10270
10271         * file-io.c, appdomain.c: memory leak fixes.
10272
10273 2007-08-02  Dick Porter  <dick@ximian.com>
10274
10275         * socket-io.c
10276         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
10277         SO_REUSEADDR setting into io-layer/sockets.c.
10278
10279 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10280
10281         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
10282         from Object when called on a generic parameter. Fixes #82211.
10283
10284 2007-08-01  Dick Porter  <dick@ximian.com>
10285
10286         * file-io.c (convert_share): Test FileShare values bit-by-bit.
10287         Fixes bug 79250 yet again.
10288
10289 2007-07-30  Martin Baulig  <martin@ximian.com>
10290
10291         Merged the `debugger-dublin' branch.
10292
10293         * mono-debug.h
10294         (MonoDebugDataTable): New typedef.
10295         (MonoDebugMethodAddressList): New typedef.
10296         (MonoDebugWrapperData): Removed.
10297         (MonoDebugSymbolTable): Removed `current_data_table',
10298         `current_data_table_size', `current_data_table_offset'.
10299         (MonoDebugDataItemType): Moved into mono-debug.c.
10300         (MonoDebugMethodJitInfo): Remove `address'.
10301         (mono_debug_data_table): New global variable.
10302         (mono_debug_lookup_method_addresses): New public function.
10303         (mono_debug_find_method): Take a `MonoMethod *', not a
10304         `MonoDebugMethodInfo *'.
10305
10306         * mono-debug.c: Drop support for the old symbol tables.
10307
10308 2007-06-28  Martin Baulig  <martin@ximian.com>
10309
10310         * mono-debug.c (mono_debug_debugger_version): New public variable.
10311
10312 2007-07-31  William Holmes  <billholmes54@gmail.com>
10313
10314         * metadata.c Changed mono_type_create_from_typespec to not insert
10315           the type into the hash map until after
10316           do_mono_metadata_parse_type has completed.
10317         Fixes Bug #82194
10318         Code is contributed under MIT/X11 license.
10319
10320 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
10323         generic parameter. Fixes #82211.
10324
10325 2007-07-27  Jb Evain  <jbevain@novell.com>
10326
10327         * pedump.c (dump_metadata, dump_metadata_header): dump
10328         versions contained in the metadata header.
10329
10330 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10331
10332         * threads.c: register small_id_table with the GC.
10333
10334 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10335
10336         * threads.c, threads.h, class-internals.h, object-internals.h:
10337         Hazard pointers, to be used by lock-free parallel algorithms.
10338
10339 2007-07-26  Dick Porter  <dick@ximian.com>
10340
10341         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
10342         routine on non-windows platforms, as I've not managed to think of
10343         a non-kludgy way of doing this.  Finishes off bug 78739.
10344
10345 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10346
10347         * object.c: properly setup interface_bitmap in proxy vtables.
10348
10349 2007-07-25  Marek Habersack  <mhabersack@novell.com>
10350
10351         * appdomain.c (get_shadow_assembly_location): do not use TickCount
10352         to create unique shadow copy target directories, use the domain's
10353         serial number instead. Each domain gets a unique target directory
10354         that way.
10355
10356         * domain.c (mono_domain_create): added code to increment domain
10357         shadow copy serial number and cache the value in the current
10358         domain structure.
10359
10360         * domain-internals.h (struct _MonoDomain): added a new field -
10361         shadow_serial to hold the serial number used in generation of
10362         shadow-copy directories. This is to make sure that the directory
10363         name is unique for each and every domain created. We avoid a race
10364         condition with overriding assemblies already in use by other app
10365         domains.
10366
10367 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
10368
10369         * class.c (mono_bounded_array_class_get): fixed memory leak when 
10370         binding generic parameters.
10371
10372 2007-07-24  Raja R Harinath  <rharinath@novell.com>
10373
10374         * metadata.c (do_mono_metadata_parse_generic_class): Use
10375         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
10376         error.
10377
10378 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10379
10380         * loader.c, class-internals.h, reflection.c: removed the per-method
10381         generics hashtable: we use the global one through the call of
10382         mono_class_inflate_generic_method ().
10383
10384 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10385
10386         * class.c, metadata.c, class-internals.h: introduce yet another
10387         generics global cache for inflated methods (fixes 98% of the perf
10388         issue in bug #81806).
10389
10390 2007-07-23  Raja R Harinath  <rharinath@novell.com>
10391
10392         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
10393         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
10394         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
10395         return a MonoGenericInst containing (a copy) of those types.
10396         (mono_metadata_inflate_generic_inst): Update to changes.
10397         (mono_metadata_parse_generic_inst): Likewise.
10398         (mono_get_shared_generic_inst): Likewise.
10399         * reflection.c (mono_class_bind_generic_parameters): Likewise.
10400         (mono_reflection_bind_generic_method_parameters): Likewise.
10401         * metadata-internals.h: Likewise.
10402         * icall.c (free_generic_context): Kill.
10403         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
10404
10405         * reflection.c (reflection_methodbuilder_to_mono_method): Use
10406         mono_metadata_type_dup.
10407         * marshal.c (mono_mb_create_method): Likewise.
10408
10409         * metadata.c (mono_metadata_type_dup): Rename from
10410         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
10411         MonoImage.  Handle a few more cases, esp. when no mempool is given.
10412         * marshal.c, metadata-internals.h: Update to changes.
10413
10414 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10415
10416         * class.c: fixed a small leak for array classes and removed warning.
10417
10418 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10419
10420         * loader.c (mono_method_get_param_token): Make this work on generic methods.
10421         Return 0x8000000 for return parameters. Fixes #82161.
10422
10423 2007-07-21  Marek Habersack  <grendello@gmail.com>
10424
10425         * appdomain.c (get_shadow_assembly_location): append the current
10426         ticks value to the path. Avoids overwriting the same assemblies by
10427         several threads at the same time.
10428
10429 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10430         and Raja R Harinath  <rharinath@novell.com>
10431
10432         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10433         Simplify slightly.
10434         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10435         property for testing if a method is a generic method definition.
10436
10437 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10438
10439         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10440
10441 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10442
10443         * verify.c: used function from private branch, reverted to the one in class.h 
10444
10445 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10446
10447         * verify.c: a typo slipped in and the code wont compile
10448
10449 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10450
10451         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10452         disabled box instruction as it is doing the wrong thing
10453         improved stack dump messages, now it is easier to debug type related issues
10454
10455
10456 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10457
10458         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10459
10460 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10461
10462         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10463         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10464         grouped with class and valuetype. This change will simply 
10465         the code as it should be handled just like unmanaged pointers.
10466
10467 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10468
10469         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10470
10471 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10472
10473         * verify.c: several stack merge issues fixed, reference comparisons now
10474         check the type size. strict type check now works correctly.
10475         added more uses of IS_MANAGED_POINTER macro.
10476         fixed issues pointed by running the test suite against .net.
10477         
10478
10479 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10480
10481         * class.c, loader.c, class-internals.h: Removed the
10482         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10483         defines.
10484
10485         * icall.c: Better error checking in some internal reflection
10486         methods.
10487
10488 2007-07-18  William Holmes  <billholmes54@gmail.com>
10489
10490         * filewatcher.c : removed unused variable 'filename' in 
10491           ves_icall_System_IO_FSW_SupportsFSW
10492
10493 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10494
10495         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10496         obsolete, removed.
10497
10498 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10499
10500         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10501         
10502         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10503
10504 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10505
10506         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10507         Implement generics support.
10508         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10509
10510         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10511         type_args and method_args arguments.
10512         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10513         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10514         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10515
10516 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10517
10518         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10519           It adds a rootimage parameter to mono_reflection_get_type_internal,
10520           adds new function mono_reflection_get_type_with_rootimage and use
10521           the rootimage to resolve the types instead of the current image
10522
10523 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10524
10525         * culture-info-table.h: Forgot to update after r78304.
10526
10527 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10528
10529         * class.c (mono_class_is_open_constructed_type)
10530         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10531
10532 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10533
10534         * class.c (mono_bounded_array_class_get):  method fails if used with
10535         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10536         avoiding calculating the size for such array as it cannot be instantiated.
10537         Fix bug #82015
10538
10539 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10540
10541         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10542         field.
10543         * metadata.c, reflection.c: Update to changes.
10544
10545 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10546
10547         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10548         mono_class_is_valid_enum, they are used to valide a enum when loading.
10549         * reflection.c: used new functions to throw TypeLoadException when and
10550         invalid enum is build with TypeBuilder. Fixes #82018
10551   
10552 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10553
10554         * object.c: forgot commit of mono_class_setup_methods () to access
10555         iface->methods.
10556         * object-internals.h: added a few more handy fields to
10557         MonoIMTCheckItem.
10558
10559 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10560
10561         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10562         iface->methods.
10563
10564 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10565
10566         * class-internals.h, object-internals.h, object.c: IMT-based
10567         interface invocation core from Massimiliano Mantione
10568         (massi@ximian.com) with a reworked arch-specific interface,
10569         bsearch implementation and a few bugfixes and memory savings by me.
10570
10571 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10572
10573         * class.c (mono_class_create_from_typedef): mono would segfault if 
10574         an enum did not have a __value field. It now throws a TypeLoadException
10575         for such cases. Fix bug #82022
10576
10577 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10578
10579         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10580
10581 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10582
10583         * class.c (mono_class_init): If a class is already inited but has
10584         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10585
10586 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10587
10588         * class.c: Properly handle the case of an unimplemented interface
10589         method.  Fixes: 81673.
10590
10591 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10592
10593         * class-internals.h, object.c: cleanup patch from massi: use
10594         MonoVTable->interface_bitmap since the vtable interfaces offset array
10595         is going away.
10596
10597 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10598
10599         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10600         GetMDStreamVersion icall instead.
10601
10602 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10603
10604         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10605         not use mono_dl_build_path() with a full library name: makes
10606         fallbacks to libgaim and libfam work.
10607
10608 2007-07-06  William Holmes  <billholmes54@gmail.com>
10609
10610         * assembly.c: Added a continue statement in probe_for_partial_name when
10611          parse_assembly_directory_name fails.  Fixes : 82002
10612
10613 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10614
10615         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10616         and added a verification  for TYPEDBYREF.
10617         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10618         make native int interchangeable with int32 and some small cleanup and formating.
10619         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10620         handle byref of byref.
10621         * verify.c (push_local): handle byref of byref.
10622         * verify.c (do_binop): invalid mix of values is unverifiable
10623         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10624         added visibility checks
10625         * verify.c (field related method): added visibility checks
10626         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10627
10628 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10629
10630         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10631         string.
10632
10633 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10636
10637         * marshal.c (emit_marshal_string): When returning a string from managed code,
10638         allways make a copy even for unicode strings. Fixes #81990.
10639
10640 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10641
10642         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10643         of byref generic inst types (bug #81997).
10644
10645 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10646
10647         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10648         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10649
10650 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10651
10652         * marshal.c (emit_marshal_string): Add support for unicode strings in
10653         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10654
10655 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10656
10657         * verify.c: field load/store are now verified, missing only access checks now
10658
10659 2007-06-28  Martin Baulig  <martin@ximian.com>
10660
10661         * mono-debug.c (mono_debug_debugger_version): New public variable.
10662
10663 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10664
10665         * locales.c: When constructing DateTimeFormat or NumberFormat for
10666         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10667         MonoCultureInfo contructed from the current locale is always
10668         read-only and has UseUserOverride set to true. All MonoCultureInfo
10669         instances returned for GetCultures have both IsReadOnly and
10670         UseUserOverride set to true. Fixes part of bug #81930.
10671
10672 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10673
10674        * icall-def.h: Update System.__ComObject icalls
10675        * marshal.c: Avoid managed transition (and object creation)
10676        when looking up COM interface in RCW.
10677        * marshal.h: Ditto.
10678        
10679        Code is contributed under MIT/X11 license.
10680
10681 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10682
10683         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10684         to avoid crashes during assembly unloading.
10685
10686 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10687
10688         Fix MethodInfo.IsGenericMethodDefinition
10689         * reflection.c (mono_reflection_bind_generic_method_parameters):
10690         Rearrange code to ensure we always uses a generic method definition.
10691         * class.c (mono_class_inflate_generic_method_full): Set
10692         'generic_container' field only for generic method definitions.
10693         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10694         Use presense of 'generic_container' field as indication of being a
10695         generic method definition.
10696
10697 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10698
10699         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10700
10701         * object-internals.h: Reflect changes in the layout of the managed Delegate
10702         class.
10703         
10704         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10705         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10706         runtime memory used by the dynamic method. Fixes #77146.
10707
10708 2007-06-21  Dick Porter  <dick@ximian.com>
10709
10710         * file-io.h: 
10711         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10712         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10713         81767.
10714
10715 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10716
10717         * reflection.c (method_encode_methodspec): Add a tripwire.
10718         * class.c (inflate_generic_type): The fully open generic type is
10719         not the same as the generic type definition.
10720
10721 2007-06-21  Martin Baulig  <martin@ximian.com>
10722
10723         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10724
10725         * mono-debug-debugger.h
10726         (MonoDebuggerBreakpointInfo): Removed.
10727         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10728         (mono_debugger_remove_breakpoint): Likewise.
10729         (mono_debugger_breakpoint_callback): Likewise.
10730         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10731
10732 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10733
10734         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10735         generic type is not the same as the generic type definition.
10736         * class.c (mono_generic_class_get_class): Likewise.
10737
10738 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10739
10740         * icall.c: The second argument to 
10741         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10742         is a MonoType not a MonoClass.
10743
10744 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10745
10746         * verify.c: support for function pointers in the verifier
10747
10748 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10749
10750         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10751
10752 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10753
10754         * assembly.c: removed Mono.Data.SqliteClient from the list of
10755         forward-compatible assemblies as it breaks the ABI (bug #81899).
10756
10757 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10758
10759         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10760         lookup/update with the loader lock.
10761         * reflection.c (mono_class_bind_generic_parameters): No need to
10762         protect mono_metadata_lookup_* with the loader lock.
10763         * class.c (inflate_generic_type): Likewise.
10764         
10765         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10766         on a generic instantiated type.
10767
10768 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10769
10770         *verify.c: produce meanfull error messages on verification error
10771         *verify.c: fixed some cases of verification errors reported as validation errors
10772         *pedump.c: fixed the error name array, now it shows validation errors properly
10773         *verify.h: fixed the contant that should be used for verification errors
10774
10775 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10776
10777         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10778         for bug #77596, 81858 and 80743 (generics data structures on domain
10779         unload).
10780
10781 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10782
10783         Avoid allocating 'MonoGenericContext' on the heap.
10784         * class-internals (_MonoMethodInflated::context): Make field
10785         inline, not a pointer.
10786         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10787         stack.  Use the context embedded within the inflated method as the
10788         hash key, rather than 'new_context'.
10789         * class.c (inflate_generic_context): Simplify.  Return a struct
10790         rather than allocating on the heap.
10791         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10792         doesn't salt away a copy of the context -- simplifying the
10793         lifetime rules of a 'MonoGenericContext *'.
10794         (mono_method_get_context): Return pointer to embedded context.
10795         (setup_generic_array_ifaces): Allocate temporary context on stack.
10796         * reflection.c (inflate_mono_method): Likewise.
10797         (mono_reflection_bind_generic_method_parameters): Likewise.
10798         Use the context embedded within the inflated method as the hash key.
10799
10800         Avoid a source of allocation of 'MonoGenericContext'.
10801         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10802         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10803         * class.c: Update to changes.
10804         (mono_generic_class_get_context): Simplify drastically.  Now just
10805         returns a pointer to the field.
10806         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10807         argument as a const pointer.
10808         (mono_metadata_generic_context_equal): Likewise.
10809         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10810         Update to changes.
10811
10812 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10813
10814         * verify.c improved the handling of brtrue/brfalse, factored out common code
10815
10816 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10817
10818         Kill MonoGenericMethod.
10819         * class-internals.h (MonoGenericContext::method_inst): Rename from
10820         'gmethod' and convert to a MonoGenericInst.
10821         (MonoGenericMethod): Remove.
10822         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10823         * loader.c (method_from_methodspec): Update to changes.  Use a
10824         MonoGenericContext as the key to the hashtable.
10825         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10826         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10827         (mono_metadata_generic_context_hash): Likewise from
10828         'mono_metadata_generic_method_hash'.  Change hash function.
10829         (mono_metadata_load_generic_params): Update to changes.
10830         (mono_get_shared_generic_method): Remove.
10831         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10832         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10833         (inflate_generic_context): Likewise.
10834         (mono_class_inflate_generic_method_full): Likewise.
10835         (setup_generic_array_ifaces): Likewise.
10836         (mono_class_create_from_typespec): Likewise.
10837         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10838         (method_encode_methodspec): Update callsite.
10839         (reflection_methodbuilder_to_mono_method): Update to changes.
10840         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10841         MonoGenericContext as the key to the hashtable.
10842         (inflate_mono_method): Update to changes.
10843
10844         * class-internals.h (MonoGenericMethod::container): Remove.
10845         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10846
10847 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10848
10849         * profiler-private.h, profiler.c, profiler.h: added API to profile
10850         exception events.
10851
10852 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10853
10854         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10855
10856 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10857
10858         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10859         Fixed overflow and underflow not aborting the verification process.
10860
10861 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10862
10863         * class-internals.h (MonoStats): Added stats entries for dynamic
10864         code allocations.
10865
10866 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * loader.c (mono_free_method): Free header->locals and header->clauses.
10869
10870         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10871         dynamic case.
10872
10873         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10874
10875         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10876
10877 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10878
10879         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10880         the tables.
10881
10882 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10883
10884         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10885
10886 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10887
10888         MonoGenericMethod on a diet
10889         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10890         here ...
10891         (_MonoGenericMethod::reflection_info): ... from here.
10892         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10893         Update to changes.
10894         * reflection.c (inflate_mono_method): Likewise.
10895         (mono_reflection_bind_generic_method_parameters): Likewise.
10896
10897 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10898
10899         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10900         *verify.c: factored long ldarg forms to share code with short forms
10901
10902 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10903
10904         *verify.c: fixed code formating factored some duplicate code
10905         into a new function
10906
10907         *verify.h: fixed binary incompatibility introduced earlier
10908
10909         *pedump.c: fixed formating
10910
10911 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10912
10913         Fix assertion when disassembling Mono.C5.dll
10914         * loader.c (method_from_methodspec): Avoid inflating a method
10915         twice with the same context.  If the methodref is inflated, use
10916         the declaring method instead.
10917
10918         * class.c (mono_class_from_generic_parameter): Fix case similar to
10919         bug #81830 handled below, but for method containers.
10920
10921 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10922
10923         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10924         get_shared_generic_class.  Directly inflate the instance.
10925         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10926         (inflate_generic_class): Delete.
10927         (get_shared_generic_class): Delete.  Move setting of
10928         'cached_class' and 'cached_context' ...
10929         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10930
10931         * metadata.c (mono_metadata_lookup_generic_class): Change
10932         signature to take the components of a MonoGenericClass rather than
10933         an allocated MonoGenericClass.  Change semantics to be intern-like.
10934         * reflection.c (mono_class_bind_generic_parameters): Update to
10935         changes.  Make locking region tighter.
10936         * class.c (inflate_generic_class): Update to changes.
10937         (get_shared_generic_class): Likewise.
10938         * metadata-internals.h: Likewise.
10939
10940         * reflection.c (mono_class_bind_generic_parameters): Take and
10941         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10942         (mono_reflection_bind_generic_parameters): Use
10943         'mono_class_bind_generic_parameters' rather than duplicate the code.
10944         * class.c (mono_bounded_array_class_get): Update to changes.
10945         * object-internals.h: Likewise.
10946
10947         * reflection.c (mono_class_bind_generic_parameters): Only support
10948         parameterizing generic type definitions.  Remove support for other
10949         open types.
10950
10951 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10952
10953         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10954
10955         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10956         in the dynamic case.
10957
10958 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10959
10960         * threads.c: When cleaning up thread, reset the Background bit.
10961         Fixes bug #81720.
10962
10963 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10964
10965        * metadata.c: Move variable declarations to top of scope.
10966        * verify.c: Move variable declarations to top of scope.
10967
10968        Code is contributed under MIT/X11 license.
10969
10970 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10971
10972         * reflection.c (mono_class_bind_generic_parameters): Replace
10973         open-coded loop with mono_metadata_inflate_generic_inst.
10974
10975         * class.c (get_shared_generic_class): Don't call
10976         mono_get_shared_generic_inst.  Use the container's own
10977         'class_inst'.
10978
10979         * metadata.c (mono_metadata_load_generic_params): Move
10980         initialization of 'context' field here from ...
10981         * class.c (mono_class_create_from_typedef): ... here, and ...
10982         * loader.c (mono_get_method_from_token): ... here.
10983
10984         * class.c (get_shared_generic_class): Rename from
10985         mono_get_shared_generic_class and make static.
10986         (mono_get_shared_generic_inst): Move to metadata.c.
10987         * loader.c (mono_get_shared_generic_method): Likewise.
10988         * class-internals.h, metadata-internals.h: Update to changes.
10989
10990         Fix #81830
10991         * class.c (mono_class_from_generic_parameter): Don't assume a
10992         generic container owner exists.  Generic containers from monodis
10993         don't have any.
10994
10995 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10996
10997         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10998         * verify.h: new typedefs to returns the non-verifiable status
10999         * verify.c: initial implementation of generics, stack merging and object compatibility check
11000
11001 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11002
11003         * class.c, image.c, class-internals.h (MonoImage): class_cache is
11004         a MonoInternalHashTable again (fixed bug in internal hash table
11005         code).
11006
11007 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11008
11009         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
11010         MonoInternalHashTable again (fixed bug in internal hash table
11011         code).
11012
11013 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11014
11015         * class.c, image.c, class-internals.h, domain.c,
11016         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
11017         changes.  Have to figure out what makes them break the SWF
11018         regression.
11019
11020 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11021
11022         * class.c, image.c, class-internals.h (MonoImage): class_cache is
11023         a MonoInternalHashTable now.
11024
11025 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11026
11027         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
11028         MonoInternalHashTable now.
11029
11030 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
11033         invoke_impl code.
11034
11035         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
11036
11037         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
11038         dependent trampoline.
11039
11040         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11041
11042         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
11043
11044 2007-05-29  Robert Jordan  <robertj@gmx.net>
11045
11046         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
11047
11048 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
11049
11050         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
11051
11052 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
11053
11054        * marshal.c: Fix interface lookup loops for
11055        cominterop_get_com_slot_for_method and 
11056        cominterop_get_method_interface. Only need to lookup
11057        if type is a class, else use interface type method is on.
11058
11059        Code is contributed under MIT/X11 license.
11060
11061 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
11062
11063         * reflection.c: HasSecurity can be present even if no specially 
11064         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
11065         SecurityAttribute). Fix CAS regression tests on buildbot.
11066
11067 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11068
11069        * appdomain.c: Add configure checks for header files.
11070        * image.c: Add configure checks for header files.
11071        * file-io.c: Add configure checks for header files.
11072        * debug-mono-symfile.c: Add configure checks for header files.
11073        * threadpool.c: Add configure checks for header files.
11074        * console-io.c: Add configure checks for header files.
11075        * profiler.c: Add configure checks for header files.
11076        * rawbuffer.c: Add configure checks for header files.
11077        * icall.c: Add configure checks for header files.
11078        * rand.c: Add configure checks for header files.
11079        * socket-io.c: Add configure checks for header files.
11080
11081        Code is contributed under MIT/X11 license.
11082
11083 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * reflection.c (mono_custom_attrs_from_builders): Remove the 
11086         assertion as it breaks the build.
11087         
11088         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
11089
11090         * reflection.c (lookup_custom_attr): Make a copy here too.
11091
11092         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
11093         dynamic images.
11094
11095         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
11096         images.
11097
11098         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
11099         info.
11100
11101 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11102
11103         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
11104         (load_cattr_value): Ditto.
11105
11106 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
11107
11108         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
11109
11110 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
11111
11112         * threads.c: In "start_wrapper", set apartment_state to MTA if
11113         apartment_state is Unknown and we're running on 2.0 profile or
11114         higher.
11115         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
11116         to main method, then set apartment_state to Unknown on 1.0 profile,
11117         and MTA on 2.0 profile.
11118
11119 2007-05-16  Jb Evain  <jb@nurv.fr>
11120
11121         * class-internals.h (MonoDefaults): Add an attribute_class and
11122           customattribute_data_class.
11123         * domain.c (mono_init_internal): Populate them.
11124         * reflection.c: Use them to remove duplicates. Make a vew
11125         MonoClass variables `static'.
11126
11127 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11128
11129         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
11130         step in implementing IMT, so that all isinst checks now can go
11131         through the bitmap.
11132         This was needed because vtables for TransparentProxy need to look
11133         like the vtable of the "target" class, so they need to point to
11134         its interface bitmap directly.
11135
11136         * object.c: inside "mono_class_create_runtime_vtable" and
11137         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
11138
11139 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
11140
11141         * object-internals.h
11142           culture-info.h : added territory field in MonoCulture and
11143           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
11144         * locales.c : fill territory field above too.
11145         * culture-info-table.h : regenerated.
11146
11147 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11148
11149         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
11150         Fixes #81599.
11151
11152 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
11153
11154         * object.c: Always initialize apartment, even if 
11155         there is no custom attributes on entry point.
11156         
11157         Code is contributed under MIT/X11 license.
11158
11159 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
11160
11161         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
11162         * metadata.c: If no encoding is set, check for unicode
11163         on class.
11164         
11165         Code is contributed under MIT/X11 license.
11166
11167 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
11168
11169         * threads.c: Handle if mono_thread_current returns NULL 
11170         
11171         Code is contributed under MIT/X11 license.
11172
11173 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
11174
11175         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
11176         in start_wrapper. Added mono_thread_init_apartment_state and
11177         mono_thread_cleanup_apartment_state.
11178         * object.c: Initialize thread apartment state on main thread
11179         by checking for STAThreadAttribute on entry point.
11180         * object-internals.h: Add apartment_state field to MonoThread.
11181         * threads-types.h: Add unmanaged definition of 
11182         System.Threading.ApartmentState, MonoThreadApartmentState.
11183         
11184         Code is contributed under MIT/X11 license.
11185         
11186 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
11187
11188         * class.c: Fix windows build.
11189         * class-internals.h: Fix windows build.
11190         
11191         Code is contributed under MIT/X11 license.
11192
11193 2007-05-08  Robert Jordan  <robertj@gmx.net>
11194
11195         * process.c (CreateProcess_internal):
11196         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
11197         .CreateNoWindow was specified. Fixes #81496.
11198
11199 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11200
11201         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
11202         step in implementing IMT, replaced it with two compact arrays
11203         (interfaces_packed and interface_offsets_packed) and a bitmap that
11204         is used for isinst checks (interface_bitmap).
11205
11206         * class.c: (compare_interface_ids): compare function to pass to
11207         bsearch when looking for an interface with a given id.
11208         (mono_class_interface_offset): reimplemented using bsearch on
11209         interfaces_packed, getting the offset from interface_offsets_packed.
11210         (print_implemented_interfaces): utility debugging function.
11211         (setup_interface_offsets): reworked to initialize interfaces_packed,
11212         interface_offsets_packed and interface_bitmap.
11213
11214         * object.c: replaced all accesses to "MonoClass.interface_offsets"
11215         with uses of interfaces_packed and interface_offsets_packed.
11216
11217 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11218
11219         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
11220         mono_class_interface_offset prototype to wrap all accesses to
11221         "MonoClass.interface_offsets".
11222
11223         * class.c: Implemented mono_class_interface_offset, and wrapped all
11224         accesses to "MonoClass.interface_offsets".
11225
11226         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
11227         "MonoClass.interface_offsets".
11228
11229 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
11230
11231         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
11232         GetMethodFromHandle overloads (bug #78637).
11233
11234 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11235
11236         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
11237         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
11238
11239 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
11240
11241         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
11242         #81498.
11243
11244         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
11245         gracefully.
11246         (mono_custom_attrs_from_index): Ditto.
11247
11248         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
11249         Fixes #81501.
11250
11251 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
11254         is now allocated from a mempool.
11255
11256 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
11257
11258         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
11259         caller holds threads_lock, leading to deadlocks. Fixes #81476.
11260
11261 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
11264         mono_loader_clear_error () too late. Fixes #81463.
11265
11266 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
11267
11268         * culture-info-table.h : regenerated.
11269
11270 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11271
11272         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
11273         is missing.
11274
11275 2007-04-25  Dick Porter  <dick@ximian.com>
11276
11277         * Makefile.am: Put the mingw enforced-optimisation back into the
11278         PLATFORM_WIN32 section.
11279
11280 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
11283         patch.
11284
11285         * image.c (mono_image_load_module): New API function to load a module reference.
11286
11287         * image.c (load_modules): Load modules lazily. Fixes #80812.
11288
11289         * class.c (mono_class_from_typeref): Use mono_image_load_module.
11290         
11291         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
11292
11293         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
11294         to mono_image_load_module_dynamic.
11295
11296 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
11297
11298         * marshal.c: Fix calling convention for CCW on non-windows
11299         platforms. STDCALL on windows, CDECL everywhere else to work 
11300         with XPCOM and MainWin COM.
11301         
11302         Code is contributed under MIT/X11 license.
11303
11304 2007-04-23  Martin Baulig  <martin@ximian.com>
11305
11306         Fix #80969.
11307
11308         * loader.c
11309         (method_from_memberref): Added `gboolean *used_context' argument.
11310         (mono_get_method_from_token): Likewise.
11311         (mono_get_method_full): Don't insert the method in the cache when
11312         `used_context' is true.
11313
11314 2007-04-23  Raja R Harinath  <rharinath@novell.com>
11315
11316         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
11317
11318         * reflection.c (mono_reflection_bind_generic_parameters): Don't
11319         create new MonoTypes for returned types.
11320         * class.c (mono_generic_class_get_class): Export mono-internal.
11321         * class-internals.h: Update to changes.
11322
11323 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11324
11325         * threadpool.c, threadpool.h, icall-def.h: patch from
11326         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
11327
11328 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
11331         
11332         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
11333
11334         * threads.c (mono_thread_get_stack_bounds): New helper function.
11335
11336         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
11337         Correctly compute stack bounds when attaching. Fixes #81394.
11338
11339 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
11340
11341         * reflection.c: fix handling of doubles in custom attributes
11342         for the arm-fpa format (bug #81368).
11343
11344 2007-04-18  Raja R Harinath  <rharinath@novell.com>
11345
11346         * reflection.c (assembly_add_win32_resources): Mildly relax an
11347         bounds check to let the end pointer point just past the end of the
11348         allocated buffer.  (may fix #81384)
11349
11350 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
11351
11352         * culture-info-table.h : regenerated.
11353
11354 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
11357         the thread is aborted early.
11358
11359 2007-04-05  Dick Porter  <dick@ximian.com>
11360
11361         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
11362         FindFirstFile()/FindNextFile() to find entries.  This lets the
11363         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
11364         81038.
11365
11366         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
11367         the parameters of
11368         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
11369
11370 2007-04-04  Martin Baulig  <martin@ximian.com>
11371
11372         * debug-helpers.c
11373         (mono_method_desc_full_match): Add support for nested classes.
11374
11375 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
11376
11377         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
11378
11379 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
11382         waiting for too many threads.
11383
11384 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
11385
11386         * environment.c: Fix return value check on uname so we can get the 
11387         executing version on Solaris operating systems.
11388
11389 2007-03-28  Jb Evain  <jbevain@gmail.com>
11390
11391         * class.c (mono_type_get_name_recurse): Complete the
11392         fix for the creation of assembly qualified names for
11393         pointer types. Fixes #81208.
11394
11395 2007-03-27  Dick Porter  <dick@ximian.com>
11396
11397         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
11398         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
11399         changed.
11400
11401         * threads.c
11402         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
11403         the value of ReleaseMutex().
11404
11405 2007-03-27  Dick Porter  <dick@ximian.com>
11406
11407         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
11408         in little-endian order, not network endian, so must be converted
11409         to host endian here.  Fixes bug 80593.
11410
11411 2007-03-22  Jb Evain  <jbevain@gmail.com>
11412
11413         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
11414         qualified names for pointer types. Fixes #81208.
11415
11416 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
11417
11418         * marshal.c: Add support for PreserveSigAttribute. 
11419         
11420         Code is contributed under MIT/X11 license.
11421
11422 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
11423
11424         * process.c: Fix endianness issues. Fixes #81126.
11425
11426         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
11427         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
11428
11429         * image.c (mono_image_lookup_resource): Make this work on big-endian
11430         machines.Change API contract so the caller needs to free the return value.
11431         
11432         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
11433         API change.
11434         
11435 2007-03-14  Martin Baulig  <martin@ximian.com>
11436
11437         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11438         mono_type_get_desc() as well.
11439
11440 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11441
11442         * icall.c:  Fix environ access in VS.  
11443         
11444 2007-03-13  Alp Toker  <alp@atoker.com>
11445
11446         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11447         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11448         #63841.
11449
11450 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11451
11452         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11453         circular references among dynamic methods. Fixes #81091.
11454
11455         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11456
11457 2007-03-09  Martin Baulig  <martin@ximian.com>
11458
11459         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11460
11461 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11462
11463         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11464         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11465         
11466         Code is contributed under MIT/X11 license.
11467         
11468 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11469
11470         * loader.c: Reapply patch for bug #79424.
11471
11472 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * metadata.c (mono_type_to_unmanaged): Only convert object to
11475         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11476
11477 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11478
11479         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11480         (and incorrectly set) is_reference field from MonoGenericInst.
11481
11482 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11485         a little earlier.
11486
11487         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11488
11489         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11490
11491 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11492
11493         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11494         FileOptions.1 value to mean "temporary", map that to
11495         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11496
11497         Fixes 80688
11498
11499 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11500
11501         * appdomain.c: implement MS .Net style shadow copying. Copies of
11502         the assemblies are made in a subdirectory of the dynamic base
11503         directory, the assembly names are preserved.
11504         Copy .mdb and .config files along with the assemblies being shadowed.
11505
11506 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11507
11508         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11509         (emit_marshal_handleref): Ditto.
11510
11511         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11512         on Visual C++. Fixes #80671.
11513
11514 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11515
11516         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11517         for clone operations.
11518
11519 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11520
11521         * marshal.c: Fix warnings.
11522
11523 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11524
11525         * loader.c: allow case-insensitive matching of the dll name
11526         in dllmap handling when prefixed with "i:".
11527
11528 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11529
11530         * threads.c: Fix #ifdef for dummy_apc function for VS.
11531
11532 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11535
11536 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11537         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11538         giving precedence to the methods with a fully qualified name
11539         (InterfaceName.MethodName) when building the interface sections
11540         of the vtable.
11541
11542 2007-02-16  Dick Porter  <dick@ximian.com>
11543
11544         * threadpool.c (append_job): Fix fast-path array handling, so it's
11545         less likely the array will grow exponentially when the load is
11546         heavy.
11547
11548 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11549
11550         * metadata-internals.h, loader.c: fix dllmap lookup order
11551         for non-function maps, too, and prepare for fallback code.
11552
11553 2007-02-12  Robert Jordan  <robertj@gmx.net>
11554
11555         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11556         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11557         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11558         GlobalFree. Fixes a part of bug #77075.
11559
11560 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11561
11562         * loader.c: implemented typedef parent in field memberref.
11563
11564 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11565
11566         * marshal.c: Fix warnings and remember to call Release on
11567         IUnknown of RCW.
11568         
11569         Code is contributed under MIT/X11 license.
11570
11571 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11572
11573         * class-internals.h: Add MonoHandleRef definition, and
11574         handleref_class to mono_defaults. 
11575
11576         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11577         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11578
11579         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11580         (do nothing on this stage)
11581         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11582         (emit_marshal_handleref): New method, used for argument handling
11583         of HandleRefs. 
11584
11585 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11586
11587         * class.c (mono_class_setup_parent): Lazily init com types.
11588         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11589         init com types.
11590         * object.c (mono_remote_class_vtable): Lazily init com types.
11591         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11592         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11593         * domain-internals.h: Expose mono_init_com_types.
11594         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11595         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11596         Add support for COM Callable Wrapper marshalling.
11597         * marshal.h: Add icall definitions.
11598         * gc.c: Handle freeing of CCWs in finalizer code.
11599         
11600         Code is contributed under MIT/X11 license.
11601
11602 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11603
11604         * reflection.c: changed all the signature encoding code to use
11605         a variable-sized buffer.
11606
11607 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11608
11609         * marshal.c: locking fixes: never take the loader lock
11610         or other runtime locks when holding the marshal lock
11611         (fixes bug#80664).
11612
11613 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11614
11615         * marshal.c: make the delegate function pointer mapping
11616         work for the moving GC.
11617
11618 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11619
11620         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11621         for bug #80618.
11622
11623 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11624
11625         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11626         gmodule.
11627
11628 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11629
11630         * threadpool.c: made the code moving-GC safe.
11631
11632 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11633
11634         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11635         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11636         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11637         warning cleanup.
11638         * reflection.c: warning cleanup, some threading and moving GC fixes.
11639
11640 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11641
11642         * class.c, loader.c: create the needed Set/Get/Address array methods
11643         as well as the .ctors in mono_class_init (), fixes bug #80567.
11644
11645 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11646
11647         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11648         we doesn't decrease its alignment. Should fix the sparc build.
11649
11650 2007-01-24  Dick Porter  <dick@ximian.com>
11651
11652         * socket-io.c
11653         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11654         Create the returned object if we need to ignore an unsupported
11655         socket option.  Fixes a segfault reported by Atsushi.
11656
11657 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11658
11659         * class.c, object.c: restrict GC-tracked fields to
11660         UIntPtr fields used inside corlib, so we provide better
11661         type info to the GC and also allow broken packing as in
11662         bug #80580.
11663
11664 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11665
11666         * sgen-gc.c: removed duplicated function.
11667
11668 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11669
11670         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11671         value that means that the value is not supported, but that we
11672         should not return a failure, but instead report this as a
11673         successful operation.
11674
11675 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11676
11677         Fix tests/bug79956.2.il
11678         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11679         (mono_generic_class_get_class): If the generic definition in an
11680         enum, copy over other fields related to it.
11681
11682 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11683
11684         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11685         genericinst enums (bug #79215).
11686
11687 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11688         * class.c: Fix bug 80307.
11689
11690 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11691
11692         * image.c: if the file table is not present, try to load
11693         all the modules, since we don't have info about them
11694         having or not metadata (bug #80517).
11695         * assembly.c: allow mono_assembly_load_references () to
11696         work for netmodules.
11697
11698 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11699
11700         * image.c, metadata-internals.h, object.c: execute module
11701         cctors when running on the 2 runtime if present (bug #80487).
11702
11703 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11704
11705         * icall.c: optimized InitializeArray() on bigendian.
11706
11707 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11708
11709         * icall.c: fix for the broken ARM FPA double format.
11710
11711 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11712
11713         * icall.c: handle endian issues for r4 and r8 types, too, in
11714         the InitializeArray() icall.
11715
11716 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11717
11718         * loader.c (mono_loader_error_prepare_exception): Clear the error
11719         once we have extracted the information from it, do this before we
11720         call into the JIT's class loading mechanisms.
11721
11722         * object.c (mono_class_create_runtime_vtable): Do not clear the
11723         loader error before calling mono_class_get_exception_for_failure
11724         as the loader error is needed inside
11725         mono_class_get_exception_for_failure to throw the error (thinko).
11726
11727         Fixes #80521
11728         
11729 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11730
11731         * reflection.c: align fields rva data so it's faster to load at
11732         runtime.
11733
11734 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11735
11736         Prepare to simplify GenericMethod handling.
11737         * class-internals.h (mono_method_get_context): New accessor function.
11738         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11739         rather than directly accessing '->context' field.
11740
11741         * class-internals.h (_MonoGenericParam.method): Move ...
11742         (_MonoGenericContainer): ... here.  Add into union with klass field.
11743         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11744         Update to changes.
11745
11746 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11747
11748         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11749         the wrapper type enum and reduce relocations.
11750
11751 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11752
11753         * reflection.c (inflate_mono_method): Reuse method instantiation
11754         from the generic method, if available.
11755
11756 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11757
11758         * marshal.c (emit_marshal_variant): Fix conv_arg
11759         type in last commit, based on whether parameter is byref.
11760         
11761 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11762
11763         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11764         marshalling.
11765         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11766         MONO_TYPE_OBJECT back for VARIANT support.
11767
11768 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11769
11770         * marshal.c, marshal.h, icall-def.h: Implement 
11771         Marshal.ReAllocCoTaskMem.
11772
11773 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11774
11775         * marshal.c: memory retention fixes: use the proper
11776         image cache for runtime_invoke method lookups.
11777
11778 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11779
11780         * mempool.c: added code to help debug mempool allocations.
11781
11782 2007-01-11  Dick Porter  <dick@ximian.com>
11783
11784         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11785         support (experimenting with faking it with IP_MTU_DISCOVER for
11786         systems that don't have IP_DONTFRAGMENT.)
11787         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11788         icall.
11789
11790         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11791
11792         * socket-io.h: Add new fields to MonoSocketAsyncResult
11793         corresponding to the new ones in Socket.cs.
11794
11795 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11796
11797         Fix IronPython regression mentioned in #80249
11798         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11799         'cached_context' field, since it may have been initialized as a
11800         side-effect of metadata parsing.
11801
11802         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11803         (_MonoGenericClass.cached_class): Move here and rename from lone
11804         remaining field of ...
11805         (_MonoInflatedGenericClass): ... this.  Remove.
11806         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11807         to changes.
11808
11809         Fix mcs/tests/test-128.cs regression.
11810         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11811         2007-01-10 change below.
11812         [MONO_TYPE_OBJECT]: Recurse into array case.
11813
11814 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11815
11816         * class-internals.h (mono_get_inflated_generic_class): Remove.
11817         * class.c (mono_get_inflated_generic_class): Remove.
11818         (mono_generic_class_get_class): Rename from
11819         mono_class_create_generic.
11820         (mono_class_from_mono_type) [GENERICINST]: Use it.
11821         * reflection.c, metadata.c: Update to changes.  Use
11822         'mono_class_from_mono_type'.
11823
11824 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11825
11826         * reflection.c: use passed type when encoding an array element
11827         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11828
11829 2007-01-09  Robert Jordan  <robertj@gmx.net>
11830
11831         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11832         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11833         Fixes bug #80392.
11834
11835 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11836
11837         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11838
11839         * object.c (set_value): Avoid aliasing between type->data.klass
11840         and type->data.generic_class.
11841
11842         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11843
11844 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11845
11846         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11847         between type->data.klass and type->data.generic_class.
11848
11849 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11850
11851         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11852         value in out parameters.
11853
11854 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11855
11856         Simplify invariant for MonoGenericClass::klass field.
11857         * class.c (mono_class_create_generic): Verify 'klass' is null.
11858         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11859         initialize 'klass' field.
11860
11861 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11862
11863         Ongoing work to avoid redundant data and simplify invariants.
11864         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11865         'generic_class', and change type to a GenericInst.
11866         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11867         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11868
11869 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11870
11871         * class.c : skip io-layer under PLATFORM_WIN32.
11872
11873 2007-01-03  Tor Lillqvist  <tml@novell.com>
11874
11875         Fix #80305: In a bundled executable, look in the bundled exe
11876         assembly to determine the runtime version. Add the possibility to
11877         bundle also the machine.config file.
11878         
11879         * assembly.c (mono_assembly_open_from_bundle): Make
11880         non-static. Allow being called even if we have no bundled
11881         assemblies, and return NULL right away in that case.
11882
11883         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11884         here.
11885
11886         * domain.c (app_config_parse): Take an assembly exe file name as
11887         parameter instead of a config file name. Check for a bundled
11888         config file for that assembly by calling
11889         mono_config_string_for_assembly_file() (see below) before looking
11890         for one in the file system.
11891         (get_runtimes_from_exe): Corrsponding change to call of
11892         app_config_parse().
11893         (get_runtimes_from_exe): Check for bundled assembly exe file first
11894         by calling mono_assembly_open_from_bundle(). If no bundled
11895         assembly exe file is found, call mono_image_open() as before to
11896         look it up in the file system.
11897
11898         * mono-config.c: Add variable bundled_machinec_onfig.
11899         (mono_config_string_for_assembly_file): New function.
11900         (mono_config_for_assembly): Move code snippet that looks for a
11901         bundled assembly .config file into the above new function. Call
11902         it.
11903         (mono_register_machine_config, mono_get_machine_config): New
11904         functions to set and retrieve
11905
11906         * assembly.h: Declare mono_register_machine_config().
11907
11908         * mono-config.h: Declare mono_get_machine_config() and
11909         mono_config_string_for_assembly_file().
11910
11911         * icall.c: No declaration of environ necessary on Win32. It is
11912         declared (as a macro expanding to a function call) in stdlib.h.
11913         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11914         New internal mono function. Returns the value of
11915         mono_get_machine_config() as a Mono string.
11916
11917         * icall-def.h: Add get_bundled_machine_config().
11918
11919 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11920
11921         Remove redundant field
11922         * class-internals.h (_MonoGenericContext.container): Remove field.
11923         * loader.c (mono_method_get_signature_full): Don't parse a
11924         "container" for a signature parse when the signature is inflated
11925         immediately.
11926         (method_from_methodspec): Likewise, for a generic_inst.
11927         * class.c, metadata.c, reflection.c: Update to changes.
11928
11929 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11930
11931         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11932         'cached_context', and change semantics -- it starts off NULL, and
11933         is initialized on demand.
11934         * class.c (mono_generic_class_get_context): New accessor to
11935         replace 'context' field accesses.
11936         (mono_class_get_context): New helper.
11937         (*): Update to changes.
11938         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11939
11940 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11941
11942         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11943         before the memcpy.   Fixes Marshal2 regression.
11944
11945 2007-01-02  Jb Evain  <jbevain@gmail.com>
11946
11947         * blob.h: add a MONO_TYPE_ENUM definition
11948         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11949         fix the encoding of arrays of enums in custom attributes.
11950
11951         Fixes #79666.
11952
11953 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11954
11955         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11956         string is null terminated, but only cut the string short if it
11957         overflows the buffer.   
11958         
11959         (mono_string_to_byvalstr): Also fix this routine.   The code here
11960         was not properly terminating a string (it was only terminated
11961         because of the previous catch-all memset). 
11962
11963         I left the memset, because I do not know if applications expect
11964         the runtime to clear this region. 
11965
11966         Fixes #79944.
11967
11968         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11969         Clear the error before returning to unmanaged code to prevent the
11970         runtime from being confused later on (fixes  80420).
11971         (ves_icall_type_from_name): Always call mono_loader_clear_error
11972         after parsing a type that could have failed.
11973         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11974
11975         * loader.c (mono_loader_clear_error): Fix indentation.
11976
11977 2006-12-28  Martin Baulig  <martin@ximian.com>
11978
11979         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11980
11981 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11982
11983         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11984         getting a token for an EnumBuilder.
11985
11986 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11987
11988         * reflection.c: be more careful in case resource generation
11989         fails to create the data array.
11990
11991 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11992
11993         * sgen-gc.c: write barrier for clone and fix unregister handles.
11994
11995 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11996
11997         * reflection.c: some fixes needed in the generics code for the moving GC.
11998
11999 2006-12-22  Robert Jordan  <robertj@gmx.net>
12000
12001         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
12002         account. Fixes bug #80299.
12003
12004 2006-12-21  Raja R Harinath  <rharinath@novell.com>
12005
12006         Fix WaitHandle usage in delegates.
12007         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
12008         * object.c (mono_wait_handle_new): Use the property set method to
12009         initialize the handle.
12010         (mono_wait_handle_get_handle): New.
12011         * threadpool.c (mono_async_invoke): Use it.
12012         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
12013         Likewise.
12014         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
12015
12016 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
12017
12018         * marshal.c (emit_marshal): Call emit_marshal_variant and
12019         emit_marshal_com_interface when applicable.
12020         (emit_marshal_variant, emit_marshal_com_interface): Add
12021         methods for this case and remove if's from emit_marshal_object.
12022         
12023 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
12024
12025         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
12026
12027 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
12028
12029         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
12030         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
12031         and GlobalFree on Windows. Remove FIXME.
12032
12033 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
12034
12035         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
12036         implementation for managed objects.
12037
12038 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12039
12040         * object.c: implemented code to be used for checking
12041         that no reference field overlaps with non-references.
12042
12043 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12044
12045         * threadpool.c: fix queue code to be compatible with the
12046         moving GC.
12047
12048 2006-12-18  Miguel de Icaza  <miguel@novell.com>
12049
12050         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
12051         in structures by throwing ArgumentNullException.
12052
12053         (emit_marshal_safehandle): Also when they are null parameters.
12054
12055         (emit_marshal_safehandle): Add support for ref
12056         SafeHandles parameters
12057
12058 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12059
12060         * profiler.c: updated to use the mono-dl API instead of
12061         gmodule.
12062
12063 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12064
12065         * profiler.c: updated to use the mono-dl dynamic loading
12066         API instead of gmodule.
12067
12068 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
12069
12070         * profiler.c: use readlink, older versions of glib don't have
12071         g_file_read_link ().
12072
12073 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12074
12075         * profiler.c: try to detect the path to mono if libc fails to provide
12076         a useful name (bug #80286).
12077
12078 2006-12-16  Raja R Harinath  <rharinath@novell.com>
12079
12080         Fix #80242
12081         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
12082         instance, use the generic type definition instead.
12083         (ves_icall_Type_GetNestedTypes): Likewise.
12084         * class.c (mono_class_create_generic): Always set the
12085         nested_classes of a generic instance to NULL, even if the generic
12086         type definition has nested types.
12087
12088 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
12089
12090         * marshal.c (mono_string_from_bstr): Revert previous Windows change
12091         and fix on Linux.
12092         
12093 2006-12-15  Miguel de Icaza  <miguel@novell.com>
12094
12095         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
12096         my arguments were in the wrong order.   I also fixed the Windows
12097         version which seems to have had the same issue.
12098
12099         (mono_free_bstr): On Unix, this is g_free.
12100         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
12101         conversions (for the tests in corlib to pass).
12102
12103 2006-12-14  Miguel de Icaza  <miguel@novell.com>
12104
12105         * marshal.c (emit_ptr_to_object_conv): For now, ignore
12106         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
12107         exception if a ref SafeHandle in a struct has changed).
12108         
12109         (emit_struct_conv): Do not perform layout checks for classes
12110         derived from SafeHandle, as those are specially handled. 
12111
12112         (emit_object_to_ptr_conv): Add support for
12113         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
12114
12115         (emit_marshal_safehandle): Implement conversion of return values
12116         of safehandles (MARSHAL_ACTION_CONV_RESULT).
12117         
12118         * threads.c: WaitHandle now is compiled with two different handles
12119         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
12120         for 2.0.
12121         
12122         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
12123         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
12124         these routines to cope with both kinds of fields.
12125
12126 2006-12-12  Miguel de Icaza  <miguel@novell.com>
12127
12128         * metadata.c (mono_type_to_unmanaged): Handle the case where
12129         type->data.klass is a SafeHandle, and in that case, return the
12130         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
12131         MONO_MARSHAL_CONV_SAFEHANDLE. 
12132
12133 2006-12-11  Miguel de Icaza  <miguel@novell.com>
12134
12135         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
12136         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
12137         calling emit_marshal_object.
12138
12139         (emit_marshal_safehandle): Implement marshalling of
12140         SafeHandle parameters (no ref support yet).
12141
12142         (MarshalAction): Document the defines as I implement
12143         them for SafeHandle.
12144
12145         (emit_marshal_object): indentation police.
12146
12147         * class-internals.h: Define MonoSafeHandle.
12148         Add safehandle_class to MonoDefaults type.
12149
12150         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
12151         list of classes to check for fields. 
12152
12153         * domain.c (mono_init_internal): Add SafeHandle to the list of
12154         mono_defaults loaded.
12155
12156 2006-12-15  Raja R Harinath  <rharinath@novell.com>
12157
12158         Fix #80253
12159         * reflection.c (mono_reflection_bind_generic_parameters): If the
12160         generic type definition is a type builder, ensure that it is fully
12161         initialized before instantiating it.  Kill some dead code.
12162
12163 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
12164
12165         * object.c: clear the loader_error () before loading
12166         more metadata stuff (bug #80258).
12167
12168 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
12169
12170         * icall.c, icall-defs.h: type modifiers icalls for
12171         parameters and properties.
12172
12173 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12174
12175         * object.c, icall.c: fixed warnings.
12176
12177 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12178
12179         * marshal.c: fixed a couple of leaks and coding style in a few places.
12180
12181 2006-12-08  Dick Porter  <dick@ximian.com>
12182
12183         * process.c: Cope with NULL ProcessStartInfo arguments on windows
12184         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
12185         80173.
12186
12187 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12188
12189         * process.c: ProcessStartInfo may have only filename set and
12190         arguments can be NULL.
12191
12192 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12193
12194         * icall.c: fix leak found by Robert Jordan.
12195
12196 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12197
12198         * marshal.c, marshal.h: generate managed method to access an element
12199         of a multi-dimensional array.
12200
12201 2006-11-30  Paolo Molaro (lupus@ximian.com)
12202
12203         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
12204
12205 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12206
12207         * icall.c: back out GetFields () fix until the serialization code is
12208         fixed to not depend on the incorrect behaviour.
12209
12210 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12211
12212         * profiler.c: provide defaults if none are set.
12213
12214 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12215
12216         * Makefile.am, attrdefs.h: new public header file with
12217         constants for attributes for use by embedders.
12218
12219 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12220
12221         * icall.c: GetFields () fix for bug #80064.
12222
12223 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
12224
12225         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
12226         removed long unused icalls.
12227
12228 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
12229   
12230         * marshal.c: 
12231                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
12232                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
12233                 can be generated without a delegate class.
12234                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
12235         
12236         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12237
12238 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12239
12240         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
12241         #80069.
12242
12243 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12244
12245         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
12246         icall-def.h: added icalls needed by System.GC.
12247
12248 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
12249
12250         * loader.c: ensure the class in catch clauses is handled
12251         correctly for generics methods (fixes bug#79980).
12252
12253 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12254
12255         * monitor.h, monitor.c: added mono_locks_dump () function
12256         to help debug deadlocks involving managed locks.
12257
12258 2006-11-13  Dick Porter  <dick@ximian.com>
12259
12260         * file-io.c (get_file_attributes): If the file is a symlink try
12261         and get the stat data for the target, but also add the
12262         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
12263         the specs for the windows symlink support, but will probably have
12264         to be reworked when I have test data from a vista machine.  Fixes
12265         bug 79887.
12266
12267 2006-11-13  Dick Porter  <dick@ximian.com>
12268
12269         * gc.c (mono_domain_finalize): 
12270         * marshal.c (mono_delegate_begin_invoke): 
12271         * threadpool.c (socket_io_init, mono_thread_pool_init)
12272         (mono_thread_pool_finish): 
12273         * monitor.c (mono_monitor_try_enter_internal): 
12274         * threads.c (mono_thread_resume, mono_thread_init)
12275         (mono_thread_suspend_all_other_threads)
12276         (mono_thread_execute_interruption): 
12277         * appdomain.c (mono_domain_unload): Check for NULL error returns
12278         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
12279         75733.
12280
12281 2006-11-11  Miguel de Icaza  <miguel@novell.com>
12282
12283         * process.c
12284         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
12285         Only close the handle if the value of the handle is not
12286         INVALID_HANDLE_VALUE.  This just makes the process a bit more
12287         robust.
12288
12289         Improvement for #75733, so that we do not run into this problem. 
12290
12291         
12292         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
12293         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
12294         internal variables.  Fixes #79462 
12295         
12296
12297 2006-11-09  Dick Porter  <dick@ximian.com>
12298
12299         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12300         Use poll() not select().  Fixes bug 79397.
12301
12302 2006-11-09  Raja R Harinath  <rharinath@novell.com>
12303
12304         Fix #79872
12305         * assembly.c (mono_assembly_load_from_full): Check that the given
12306         image has an assembly manifest.
12307
12308 2006-11-09  Ankit Jain  <jankit@novell.com>
12309
12310         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
12311         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
12312         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
12313
12314 2006-11-07  Dick Porter  <dick@ximian.com>
12315
12316         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12317         Put the old resolver behaviour back for pre-2.0 profiles.
12318
12319 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12320
12321         * threadpool.c: precise GC and locking fixes.
12322
12323 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12324
12325         * class.c: don't load types that have an explicit unaligned
12326         managed reference. Provide better info in the TypeLoad exception.
12327         Part of the fix for bug #79744.
12328         * object.c: use the correct check for class type load issues.
12329
12330 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12331
12332         * class.c: enforce alignment of fields with managed references
12333         even when Pack=1 is forced by the user (bug #77788).
12334
12335 2006-11-03  Dick Porter  <dick@ximian.com>
12336
12337         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12338         If the address reverse lookup fails, return it as the hostname
12339         anyway.  Fixes bug 79721.
12340
12341 2006-11-03  Dick Porter  <dick@ximian.com>
12342
12343         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
12344         Fix build on Windows.
12345
12346 2006-11-02  Dick Porter  <dick@ximian.com>
12347
12348         * icall-def.h: 
12349         * object-internals.h: 
12350         * exception.c (mono_get_exception_thread_interrupted): 
12351         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
12352         Fixes bug 74525.
12353
12354         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
12355         Check for pending Thread.Interrupt.
12356
12357 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
12358         * loader.c: Fixed bug 79684.
12359
12360 2006-10-27  Dick Porter  <dick@ximian.com>
12361
12362         * file-io.c (get_file_attributes): Force symlinks to directories
12363         to be returned as a regular file.  Fixes bug 79733.
12364 2006-10-26  Dick Porter  <dick@ximian.com>
12365
12366         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
12367         CreateFile to open a directory then we need to set the
12368         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
12369
12370 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
12373         friends.
12374
12375 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12376
12377         * sgengc.c: small cleanup of timer code.
12378
12379 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12380
12381         * sgen-gc.c: fix some warnings and start adding support for
12382         complete object removal on domain unload.
12383
12384 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
12385
12386         * assembly.c: build_assembly_name should not consider a version
12387         number without build or revision number invalid. Fixes bug #79715.
12388
12389 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
12390
12391         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
12392         call kernel32 function OutputDebugString directly.
12393         
12394         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12395         
12396 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
12397
12398         * reflection.c: small cleanup, using a function to insert a MonoString
12399         in the string heap.
12400
12401 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
12402
12403         * reflection.c: moving GC fixes.
12404
12405 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12406
12407         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
12408         all the objects with finalizers belonging to an unloading appdomain.
12409
12410 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12411
12412         * sgen-gc.c: added ability to allocate even when the nursery is fully
12413         pinned and fixed a couple of bugs.
12414
12415 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * threads.h: Revert the last change for now.
12418
12419         * threads.h (mono_thread_get_pending_exception): Rename this to
12420         mono_thread_get_undeniable_exception ().
12421
12422 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
12423
12424         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
12425         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
12426         when fname does not refer to valid assembly. This result in a more
12427         meaningful error message.
12428         * exception.c: added mono_get_exception_bad_image_format2 which 
12429         constructs a BadImageFormatException using the ctor taking a custom
12430         message and the file name. Passing in a NULL msg results in a default
12431         message.
12432         * exception.h: define mono_get_exception_bad_image_format2 function.
12433         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12434         when file name pointed to an invalid IL image. Use 
12435         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12436         as this results in a more meaningful error message.
12437
12438 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12441         #79465.
12442
12443 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12444
12445         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12446         consistency with the other _size functions.
12447         (mono_type_stack_size): Ditto.
12448
12449         * class.c object.c icall.c: Fix warnings caused by the above change.
12450
12451         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12452
12453         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12454
12455         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12456
12457 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12458
12459         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12460         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12461         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12462         threadpool.h, threads-types.h: mark more internal functions.
12463
12464 2006-10-11  Dick Porter  <dick@ximian.com>
12465
12466         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12467         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12468         reproduce the bug even before applying the fix.)
12469
12470 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12471
12472         * reflection.c: allow retrieving attributes for arguments in generic
12473         methods (bug #79241).
12474
12475 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12476
12477         * debug-mono-symfile.c: properly check fopen () result (found by
12478         coverity).
12479
12480 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12481
12482         * reflection.c: make error message clearer and fixed two
12483         issuelets found by Coverity.
12484
12485 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12488
12489 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12490
12491         * object-internals.h, gc-internal.h, profiler-private.h:
12492         mark internal functions.
12493
12494 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12495
12496         * reflection.c: put data in the text section.
12497         * icall.c: recognize more types in type_from_typename ().
12498         * process.c, marshal.c: added some GC FIXMEs.
12499
12500 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12501
12502         * loader.c: check for NULL before initializing.
12503
12504 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * gc.c (finalizer_thread): Use a non-alertable wait here.
12507
12508         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12509         until the correct solution is found.
12510
12511 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12512
12513         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12514         modules with no metadata. Fixes #79596.
12515
12516         * image.c (load_metadata_ptrs): Put back the error message when
12517         the #- heap is encountered since the support is not complete yet.
12518
12519 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12520
12521         * gc.c: do not allow the user to SuppressFinalize () a
12522         delegate because it would leak the trampoline if present.
12523
12524 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12525
12526         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12527         PropertyPtr table.
12528
12529 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12532
12533         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12534
12535         * row-indexes.h: Add definitions for *Ptr tables.
12536
12537         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12538
12539         * metadata.c (mono_metadata_translate_token_index): New helper function to
12540         translate table indexes used in uncompressed metadata.
12541         (mono_metadata_decode_table_row): Ditto.
12542         (mono_metadata_decode_table_row_col): Ditto.
12543
12544         * metadata.c: Add table schema for *Ptr tables.
12545
12546         * class.c loader.c: Use the new helper function to access the affected metadata
12547         tables.
12548         
12549         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12550         #38532.
12551         
12552 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12555         sequences which can be unbounded in size. Fixes #79583.
12556
12557 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12558
12559         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12560         static initialization.
12561
12562         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12563
12564         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12565
12566         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12567
12568         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12569         ctor fails, i.e. throw the same exception on subsequent accesses.
12570         
12571 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12572
12573         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12574         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12575         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12576         Handle marshalling of interfaces and VARIANTs contained in structs.
12577         
12578         Code is contributed under MIT/X11 license.
12579         
12580 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12583         
12584         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12585         mempool.
12586
12587 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12588
12589         * console-io.c: ignore previous SIGINT handler.
12590
12591 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12592
12593         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12594         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12595         #79460, #79461, #79485.
12596
12597         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12598
12599         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12600         #79217.
12601
12602 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12603
12604         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12605         could be generated from it.
12606
12607 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12608
12609         * rand.c: fix read loop to correctly handle EINTR.
12610
12611 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12612
12613         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12614         internal calls are defined to keep methods closer to the declaring
12615         type and allow a significant reduction in runtime relocations and
12616         memory usage.
12617
12618 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12619
12620         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12621         exception message to have FileNotFoundException use the default
12622         assembly load error message. Fixes bug #79426.
12623         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12624
12625 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12626
12627         * threadpool.c: (start_thread_or_queue) use the root domain when
12628         creating the thread instead of the async object one.
12629
12630 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12631
12632         * class.c, object.c, class-internals.h, reflection.c:
12633         for arrays, store element_size inside MonoClass (speedup
12634         for array object creation).
12635
12636 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12637
12638         * icall.c: fixed CodeBase to use the file name and not the module
12639         name (bug #79365).
12640
12641 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12642
12643         * mono-debug.c, mono-debug.h: export find_method as
12644         mono_debug_find_method ().
12645
12646 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12647
12648         * debug-helpers.c, class-internals.h: added a few functions useful
12649         when debugging under gdb.
12650
12651 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12652
12653         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12654         characters that need special handling.
12655
12656 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12657
12658         * mono-config.c: make the os/cpu specification more flexible,
12659         allowing lists and negation.
12660
12661 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12662
12663         * marshal.c: COM Interop fixes. Handle case where method->klass.
12664         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12665         calling convention on non-windows platforms. This is for
12666         compatibility with XPCOM and MainWin COM.
12667         
12668         Code is contributed under MIT/X11 license.
12669         
12670
12671 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12672
12673         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12674         correctly. Fixes #79217.
12675
12676         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12677
12678 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * mono-config.c: allow both an os and cpu attribute for dllmap
12681         and dllentry elemnets to enable a single config file to be used
12682         for multiple architectures.
12683
12684 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12685
12686         * loader.c: MonoLoaderError was cleared too soon on load failure.
12687         Fixes bug #79424.
12688
12689 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12690
12691         * icall.c: use the defining class vtable when accessing a
12692         static field, not a pobblibly derived class.
12693
12694 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12695
12696         * icall.c string-icalls.c: Remove references to unicode.h.
12697
12698         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12699
12700         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12701
12702         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12703         indicating the image where custom marshaller types should be looked up.
12704         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12705         custom marshallers, instead of corlib. Fixes #79425.
12706
12707 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12710
12711 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12712
12713         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12714         Implement Environment.ProcessorCount.
12715         
12716         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12717         Implement Environment.ProcessorCount.
12718         
12719         * icall.c: 
12720         Add Environment.ProcessorCount icall.
12721         
12722         Patch by Jason McFall.
12723
12724 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12725
12726         * assembly.c: don't append .exe/.dll when the filename already contains
12727         one of those extensions.
12728
12729 2006-09-12  Martin Baulig  <martin@ximian.com>
12730
12731         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12732         to array interfaces.
12733
12734 2006-09-11  Martin Baulig  <martin@ximian.com>
12735
12736         * reflection.c (mono_image_build_metadata): Create the
12737         MethodImpl's after emitting all types and methods, so we don't
12738         need another fixup pass for them.
12739
12740 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12741
12742         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12743         change.
12744
12745 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12746
12747         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12748         unload.
12749
12750 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12753         args is not set. Fixes #78926.
12754
12755 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12758
12759         * image.c (load_class_names): Move this to class.c, and rename it to 
12760         'mono_image_init_name_cache'.
12761         (load_modules): Fix a warning.
12762
12763         * class.c icall.c image.c: Initialize image->name_cache lazily.
12764
12765         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12766         on its name using information in the AOT file.
12767
12768         * class.c (mono_class_from_name): Use the new hook function.
12769
12770 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12771
12772         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12773         correctly.
12774
12775         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12776         Fixes #79289.
12777         
12778 2006-09-06  Martin Baulig  <martin@ximian.com>
12779
12780         * icall.c (mono_lookup_internal_call): Small fix.
12781
12782 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12783
12784         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12785         double g_free.
12786
12787 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12788
12789         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12790         when --debug is specified.
12791
12792 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12793
12794         * class.c (setup_generic_array_ifaces): Fix a warning.
12795
12796 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12797
12798         * Temporarily remove the patch to assemly.c that checks the
12799         assembly versions as it breaks our gacutil.
12800
12801 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12802
12803         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12804
12805         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12806         a net 1.0 runtime.
12807
12808         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12809         created using the default ctor. Fixes #79152.
12810         (mono_string_builder_to_utf16): Ditto.
12811
12812 2006-09-01  Martin Baulig  <martin@ximian.com>
12813
12814         Fix handling of the generic array interfaces.
12815
12816         * class-internals.h
12817         (MonoDefaults): Removed `generic_array_class' and added
12818         `generic_ilist' class.
12819
12820         * class.c
12821         (mono_bounded_array_class_get): Add the new generic array interfaces.
12822         (setup_generic_array_ifaces): New static method; create vtable
12823         entries for each method in the generic array interfaces.
12824
12825         * metadata.c
12826         (select_container): Allow "parent-less" generic methods.
12827
12828         * marshal.c
12829         (mono_marshal_get_generic_array_helper): New public method.
12830
12831         * icall.c
12832         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12833         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12834         moved the interncall into System.Array.
12835
12836 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12837
12838         A few more cases of avoiding work on types with ->byref set.
12839         Has the real fix for #79238
12840         * icall.c (is_generic_parameter): New helper.
12841         (ves_icall_Type_GetGenericParameterPosition): Use it.
12842         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12843         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12844         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12845         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12846         reference types.
12847         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12848         reference types.
12849         (ves_icall_Type_get_IsGenericInstance): Likewise.
12850         (ves_icall_Type_get_IsGenericType): Likewise.
12851
12852 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12853
12854         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12855         class if possible.
12856
12857         * mempool.h (mono_mempool_get_allocated): New helper function.
12858
12859         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12860         change.
12861
12862         * mempool.c: Fix warnings and the calculation of stats.
12863
12864         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12865
12866         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12867
12868         * loader.c (mono_get_method_from_token): Update method_count stat.
12869
12870         * class-internals.h (MonoStats): Add some stats.
12871
12872 2006-08-31 Robert Jordan  <robertj@gmx.net>
12873
12874         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12875         with managed variants.
12876         All code is contributed under the MIT/X11 license.
12877         
12878 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12881         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12882
12883         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12884
12885         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12886         with cycles in classes.
12887
12888         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12889
12890         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12891         missing a [MarshalAs] directive. Fixes #79203.
12892
12893         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12894         klass->marshal_info. Fixes #79217.
12895
12896 2006-08-30  Martin Baulig  <martin@ximian.com>
12897
12898         Committing a patch from Joachim Ante <joe@otee.dk>:
12899         Add support for binary data symbol stores.
12900
12901         * debug-mono-symfile.c
12902         (mono_debug_open_mono_symbol_file): Renamed into
12903         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12904         arguments.
12905
12906         * mono-debug.c
12907         (mono_debug_open_image): Added `raw_contents' and `size' args.
12908         (mono_debug_init_2_memory): New public function.
12909
12910 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12911
12912         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12913
12914 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12915
12916         * appdomain.c: implement support for ShadowCopyFiles.
12917
12918 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12919
12920         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12921         when value is NULL (and should remove CID #51).
12922
12923 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12924
12925         * image.c: moved 2 functions to ../utils.
12926
12927 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12928
12929         * gc.c: cope with the target object of a GC handle being NULL
12930         (bug #78877).
12931
12932 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12933
12934         * class.c: recursively check parent's explicit implementations
12935         of interface methods (fixes bug #79125).
12936
12937 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12938
12939         * filewatcher.c: Avoid warnings when building, do not redefine
12940         constants that are defined.
12941
12942         Remove warnings.
12943
12944 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12945
12946         * image.c: don't fail when the link points to an absolute path.
12947
12948 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12949
12950         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12951         Fix CID #3.
12952
12953 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12954
12955         * image.c (full_path): A new method used to obtain the actual path
12956         of an assembly even in the presence of symbolic links.  
12957
12958         This is necessary for the case where we are running a binary that
12959         has been GACed, but we are using the "published" path name
12960         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12961         file in the GAC.
12962
12963         This was the source of the failure for the `xsp' command with the
12964         recent AppDomain changes, as far as the runtime was concerned,
12965         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12966         $prefix/mono/gac/blah/version/blah.exe.
12967
12968         (do_mono_image_open): use full path
12969
12970 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12973
12974 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12975
12976         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12977         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12978
12979 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12980
12981         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12982         small structures. Fixes #78990.
12983
12984 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12987
12988         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12989
12990 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12991
12992         * appdomain.c:
12993         * marshal.c: don't load all the assemblies from a domain into newly
12994         created ones. The new domains might have different rules and load
12995         assemblies from different locations. Fixes bug #76757.
12996
12997         Patch by Lluis. Conflicts resolved by Brian Crowell.
12998
12999 2006-08-16  Alp Toker  <alp@atoker.com>
13000
13001         * socket-io.c: First half of the fix for #79084.
13002         Set sa_size to the length of the content, not that of the struct.
13003         Don't add NULL suffix to the content, this should be done in
13004         managed code if needed.
13005
13006 2006-08-14  Raja R Harinath  <rharinath@novell.com>
13007
13008         Fix part of #79012
13009         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
13010         mono_metadata_parse_type returns NULL.
13011
13012 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
13013
13014         * normalization-tables.h : new file for string normalization data.
13015         * locales.c, locales.h, icall.c :
13016           added load_normalization_resource() for string normalization,
13017           and icall as well.
13018         * Makefile.am : added normalization-tables.h to the sources.
13019
13020 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * marshal.c: Add more helper functions to reduce code duplication and use them
13023         everywhere.
13024
13025 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
13026
13027         * marshal.c: Fix non-x86 stdcall warnings.
13028         
13029         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
13030         them everywhere.
13031
13032 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
13033
13034         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
13035         type check on multi-dimensional arrays. Fixes #79000.
13036
13037 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13038
13039         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
13040         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
13041         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
13042         * class-internals.h: add is_com_object to class structure.
13043         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
13044         null checks to COM object marshalling. Fix .ctor call on RCW.
13045         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
13046         
13047         All code is contributed under the MIT/X11 license.
13048
13049 2006-08-09  Dick Porter  <dick@ximian.com>
13050
13051         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
13052         racing mono_monitor_allocator_lock() somewhere, so don't delete
13053         the critical section for now.  Found by running and exiting
13054         monodevelop.
13055
13056 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
13059         (ves_icall_System_ComObject_FindInterface): Ditto.
13060         (ves_icall_System_ComObject_CacheInterface): Ditto.
13061
13062         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
13063         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
13064
13065 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13066
13067         * threadpool.c: treat pipes from process asynchronous reads as sockets
13068         when reading from them, so we get select/poll or epoll to wait for
13069         data.
13070
13071 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
13072
13073         * loader.c: Fix a typo (CID #233) in the null check.
13074
13075 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
13076
13077         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
13078         Hopefully fixes #78949.
13079         
13080         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
13081         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
13082         bytes. Fixes #78972.
13083
13084 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13085
13086         * filewatcher.c: we need to set errno here.
13087
13088 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13089
13090         * filewatcher.c: let Win32Exception get the error value.
13091
13092 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13093
13094         * filewatcher.c: translate errno into win32 errors for Win32Exception
13095         to know what happened.
13096
13097 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13098
13099         * threadpool.c: Fix more warnings.
13100
13101         * assembly.c (search_loaded): Fix warnings.
13102
13103         * threadpool.c (mono_thread_pool_finish): Fix warnings.
13104         (mono_async_invoke): Ditto.
13105
13106 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
13107
13108         * object.c (mono_remote_class_vtable): Need to create proxy vtable
13109         entries for __ComObject type in addition to ComImport types.
13110         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
13111         about hash table.
13112         
13113         All code is contributed under the MIT/X11 license.
13114
13115 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
13116
13117         * image.c: avoid tentative loading of modulerefs that contain
13118         no metadata (P/Invoke library names).
13119
13120 2006-07-28  Dick Porter  <dick@ximian.com>
13121
13122         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
13123         mono_loader_lock() somewhere, so don't delete the critical section
13124         for now.  Found by running and exiting monodevelop.
13125
13126 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13127
13128         * filewatcher.c: define the inotify syscalls when we're building on
13129         linux and have sys/syscall.h. The build system might not have support
13130         for inotify but the target system might have it.
13131
13132 2006-07-26  Miguel de Icaza  <miguel@novell.com>
13133
13134         * domain.c: Documentation updates.
13135
13136         * loader.c (mono_free_method): Do not release the method
13137         information if we are being profiled, as profilers will use this
13138         information at shut down to present some data to the user.
13139
13140         This is needed so that the profiler does not crash, as the
13141         profiler tends to keep MonoMethods around, and they might become
13142         invalid if we free these.
13143
13144         (mono_get_method_constrained): Return the original CIL stream
13145         method as well, so verification can be performed against it.
13146
13147 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13148
13149         * filewatcher.[ch]: support for inotify file system watcher.
13150         * icall.c: add new internal calls for the inotify file system watcher.
13151
13152 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13153
13154         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
13155         #78888.
13156
13157 2006-07-20  Dick Porter  <dick@ximian.com>
13158
13159         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
13160         warning.
13161
13162 2006-07-20  Dick Porter  <dick@ximian.com>
13163
13164         * threads.c (start_wrapper): Do the thread cleanup while we still
13165         hold a reference to its object.  Fixes bug 78123.
13166
13167 2006-07-18  KornĂ©l PĂ¡l  <kornelpal@gmail.com>
13168
13169         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
13170         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
13171           "managed-to-managed".
13172         * icall.c: Redirect string constructors that take sbyte* to
13173           ves_icall_System_String_ctor_RedirectToCreateString.
13174         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
13175           to CreateString () methods with matching signature.
13176         * reflection.c: Use original security informations for
13177           MONO_WRAPPER_MANAGED_TO_MANAGED.
13178         * security-manager.c: Use original security informations for
13179           MONO_WRAPPER_MANAGED_TO_MANAGED.
13180         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
13181           that is a placeholder and only its address should be used.
13182         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
13183           that is a placeholder and only its address should be used.
13184
13185 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13186
13187         Begin implementing COM Interop.
13188         * appdomain.c: Increment corlib version.
13189         * class.c: Set ComImport classes' parent to __ComObject.
13190         * loader.c: Mark cominterop methods as such.
13191         * domain.c: Add __ComObject class to MonoDefaults structure.
13192         * image.c: Add 2 hashtables to the image for COM Interop related methods
13193         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
13194         using the mempool allocator
13195         
13196         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
13197         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
13198         declaration for mono_metadata_type_dup_mp.
13199         
13200         * debug-helpers.c: Added strings for two additional wrapper types
13201         * object.c: Create proxy objects for ComImport classes
13202         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
13203         and added __ComObject class to MonoDefaults structure.
13204         
13205         * object-internals.h: Finish MonoRealProxy definition, and add definition of
13206         MonoComInteropProxy and MonoComObject.
13207         
13208         * marshal.c: Added support for COM Interop
13209         (signature_cominterop): Converts managed signature to corresponding
13210         unmanaged COM signature.
13211         (cominterop_get_function_pointer): gets unmanaged function pointer via
13212         COM object vtable
13213         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
13214         (cominterop_get_method_interface): returns interface type that method is defined on
13215         (mono_mb_emit_cominterop_call): emits native call to function pointer
13216         gotten from vtable
13217         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
13218         that matches signature of unmanaged function.
13219         (cominterop_get_native_wrapper): wrapper around adjusted method call.
13220         (cominterop_get_invoke): forwards call from proxy to __ComObject
13221         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
13222         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
13223         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
13224         
13225         * marshal.h: Added Marshal icall declarations.
13226         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
13227         so we can access them in finalizer
13228         
13229 2006-07-14  Dick Porter  <dick@ximian.com>
13230
13231         * object.c (mono_type_initialization_cleanup): Fix a race
13232         condition by temporarily commenting out the critical section
13233         deletion.
13234
13235 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * reflection.c (create_custom_attr): Fix some warnings.
13238         (create_custom_attr_data): Ditto.
13239         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
13240         types. Fixes #78855.
13241
13242 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
13243
13244         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
13245
13246         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
13247
13248 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * reflection.c (resolve_object): Add support for DynamicMethod.
13251
13252         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
13253         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
13254
13255 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
13256
13257         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
13258         don't leak GPtrArray's pdata has we have no use (nor free) for it.
13259
13260 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
13261
13262         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
13263         Fixes #77888.
13264
13265 2006-06-30  Raja R Harinath  <rharinath@novell.com>
13266
13267         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
13268         slightly: remove a shadow local variable.
13269
13270 2006-06-29  Raja R Harinath  <rharinath@novell.com>
13271
13272         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
13273         definition that introduces the virtual function slot.
13274         Also fix Coverity #105.
13275
13276 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
13277
13278         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
13279         for dynamic assemblies. Fixes #78724.
13280
13281 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
13284         Fixes #78722.
13285
13286 2006-06-21  Martin Baulig  <martin@ximian.com>
13287
13288         * reflection.c
13289         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
13290         fixes #76484.
13291
13292 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
13295
13296 2006-06-20  Raja R Harinath  <rharinath@novell.com>
13297
13298         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
13299         nor TYPEREFs.
13300         * class.c (mono_class_create_from_typespec): Add 'context' argument.
13301         Inflate result if necessary.
13302         (mono_class_get_full): Remove old version.  Rename from
13303         'mono_class_get' and add 'context' argument.  Pass it to
13304         ..._create_from_typespec.
13305         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
13306         (mono_ldtoken): Revert change below.
13307
13308 2006-06-20  Martin Baulig  <martin@ximian.com>
13309
13310         * class.c (mono_ldtoken): Don't pass the generic context to
13311         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
13312
13313 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
13314
13315         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
13316         and later freeing it. Fixes #78638.
13317
13318 2006-06-15  Miguel de Icaza  <miguel@novell.com>
13319
13320         * icall.c (mono_class_get_throw): Revert over-zealous error
13321         throwing, the caller for mono_class_get_throw will cope with
13322         errors when classes are not properly initialized already.
13323
13324         The code still copes with loader exceptions though.
13325
13326         Fixes the regression in reftype1 and reftype3 from the CAS tests.
13327         
13328 2006-06-14  Miguel de Icaza  <miguel@novell.com>
13329
13330         Fixes the `make run1' version of RuntimeAbort (to be commited,
13331         source is in Bugzilla).
13332         
13333         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
13334         FALSE on class loading failure instead of returning true.
13335
13336         * class.c (mono_class_create_from_typedef): It is possible for
13337         mono_metadata_interfaces_from_typedef_full to fail if a class is
13338         not found, cope with this.
13339         
13340
13341 2006-06-14  Dick Porter  <dick@ximian.com>
13342
13343         * socket-io.c: 
13344         * process.c: Fix a bunch of signed/unsigned warnings from gcc
13345         4.1.1
13346
13347 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
13348
13349         * culture-info-table.h : oops, forgot to make it nsync with r61548.
13350
13351 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13352
13353         * icall.c: Another fix for building mono in Visual Studio.
13354
13355 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13356
13357         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
13358         
13359 2006-06-09  Martin Baulig  <martin@ximian.com>
13360
13361         * debug-mono-symfile.c: Put this back and really fix it this
13362         time. Sorry for all the trouble.
13363
13364 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13365
13366         * icall.c (mono_class_get_throw): Fix a warning.
13367         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
13368         ReflectionTypeLoadException if needed. Fixes #78606.
13369
13370         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
13371         (mono_class_init): Ditto.
13372
13373         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
13374         ref_only exceptions.
13375         (mono_loader_clear_error): Make this work even if there is no error.
13376
13377 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
13378
13379         * object-internals.h marshal.c marshal.h icall.c: Implement method 
13380         Marshal.GetComSlotForMethodInfo using internal call.
13381
13382 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
13385         a function for signalling it.
13386
13387         * class.c (mono_class_from_typeref): Use the new kind of loader error when
13388         a referenced assembly is not found.
13389
13390         * loader.c (mono_loader_error_prepare_exception): Add support for 
13391         LOADER_ERROR_ASSEMBLY. Fix formatting.
13392
13393 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
13394
13395         * domain.c appdomain.c class-internals.h marshal.c: Add support 
13396         for VARIANT marshalling on windows and increment corlib version
13397         since Variant struct was added.
13398
13399 2006-06-03  Miguel de Icaza  <miguel@novell.com>
13400
13401         * debug-mono-symfile.c: Revert Martin's previous patch which broke
13402         stack trace line information:
13403
13404         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
13405         (Martin) when looking up B which is between A and C, return A not C.
13406
13407         Bug is #78573.
13408
13409         Thanks to Alexander Olk for tracking this down.
13410
13411 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
13414         
13415         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
13416         avoid clobbering its value.
13417         (mono_string_to_lpstr): Fix a warning on windows.
13418
13419 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13420
13421         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
13422
13423         * reflection.c loader.c: Removed references to 'dummy' flag.
13424
13425         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
13426
13427         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
13428         it gets GC tracking.
13429
13430         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
13431         GC tracking.
13432         
13433         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13434
13435         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13436
13437         * appdomain.c: Bump corlib version.
13438
13439 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13440
13441         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13442         CEE_STIND_REF when working with object references.
13443
13444 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13445
13446         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13447         Fixes #78539.
13448
13449 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13450
13451         * loader.c (method_from_memberref): Fix argument value for
13452         mono_loader_set_error_method_load (I was passing the MonoClass
13453         instead of the class name char *).
13454
13455 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13458         CEE_STIND_REF when working with object references.
13459
13460 2006-05-30  Martin Baulig  <martin@ximian.com>
13461
13462         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13463         mono_method_full_name() change and replace the ':' with a '.'
13464         here.
13465
13466 2006-05-30  Martin Baulig  <martin@ximian.com>
13467
13468         * debug-mono-symfile.c
13469         (mono_debug_symfile_lookup_location): Fix the algorithm:
13470         when looking up B which is between A and C, return A not C.
13471
13472 2006-05-29  Martin Baulig  <martin@ximian.com>
13473
13474         * mono-debug.h
13475         (MonoDebugMethodInfo): Make the typedef public.
13476         (MonoDebugSourceLocation): New public struct.
13477
13478         * mono-debug.c
13479         (mono_debug_source_location_from_address): Removed.
13480         (mono_debug_source_location_from_il_offset): Removed.
13481         (mono_debug_il_offset_from_address): Removed.
13482         (mono_debug_address_from_il_offset): Removed.
13483         (mono_debug_lookup_method): New public function.
13484         (mono_debug_lookup_source_location): New public function; replaces
13485         the old mono_debug_source_location_from_*() functions; see the
13486         inline documentation.
13487         (mono_debug_free_source_location): New public function.
13488         (mono_debug_print_stack_frame): New public function; see the
13489         inline documentation.
13490
13491         * debug-mono-symfile.c
13492         (mono_debug_find_source_location): Renamed into
13493         mono_debug_symfile_lookup_location(); only take a
13494         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13495         documentation.
13496         (mono_debug_find_method): Renamed into
13497         mono_debug_symfile_lookup_method().
13498
13499 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13500
13501         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13502         returned by mono_image_open_full ().
13503
13504         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13505         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13506         #78517.
13507
13508         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13509         #78518.
13510
13511 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13512
13513         * class.c (mono_class_from_typeref): handle missing images
13514         earlier, deals with bug #78418.   Refactor code; 
13515
13516         Fix a warning introduced in my previous commit (some stale code
13517         from before I revisited my patch).
13518
13519         * class.c (mono_class_create_from_typedef): On failure, remove the
13520         class from the MonoImage->class_cache as the class is not
13521         initialized;   Fixes the leak pointed out by Paolo.
13522
13523 2006-05-25  Dick Porter  <dick@ximian.com>
13524
13525         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13526         DeleteCriticalSections until I figure out which one may still be
13527         sometimes locked when mono_thread_cleanup is called.
13528
13529 2006-05-24  Dick Porter  <dick@ximian.com>
13530
13531         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13532         of mono_thread_manage and back into its own function, so it can be
13533         called after the finalizer thread has finished.
13534
13535         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13536
13537 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13538
13539         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13540         Fixes #78495.
13541
13542         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13543         with non-blittable elements.
13544         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13545
13546 2006-05-24  Martin Baulig  <martin@ximian.com>
13547
13548         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13549         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13550
13551         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13552         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13553         `mono_debugger_event_handler' to NULL.
13554
13555 2006-05-24  Martin Baulig  <martin@ximian.com>
13556
13557         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13558
13559 2006-05-24  Martin Baulig  <martin@ximian.com>
13560
13561         * mono-debug-debugger.h
13562         (mono_debugger_create_notification_function): Added
13563         `MonoCodeManager *' argument.
13564
13565 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13566
13567         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13568
13569 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13570
13571         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13572         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13573         implementation.
13574
13575 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13576
13577         * icall.c: precise GC support: objects can't be stored in unmanaged
13578         memory anymore, even if they are kept alive by other references: since
13579         they can move the GC needs to be able to always find them.
13580
13581 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13582
13583         * object.c: precise GC support for static fields. Support
13584         for moving GCs: write barriers and pinned allocation for interned
13585         strings.
13586
13587 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13588
13589         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13590         structure.
13591
13592 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13593
13594         * class.c, gc.c: sgen and precise GC updates.
13595
13596 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13597
13598         * marshal.h, marshal.c: added write barrier wrapper and precise type
13599         fixes.
13600
13601 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13602
13603         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13604         support.
13605
13606 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13607
13608         * reflection.c: precise and sgen GC updates.
13609
13610 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13611
13612         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13613
13614 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13617
13618 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13621         MONO_TYPE_OBJECT. Fixes #78462.
13622
13623 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13626         and blittable types.
13627
13628 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13629
13630         * class.c (mono_class_get_exception_for_failure): Implement parts
13631         of a TODO: if the loader error is set (instead of the class
13632         error), we return a Loader exception that can be properly thrown
13633         elsewhere.
13634
13635         This was exposed by some Winforms 2.0 code that I tried to run
13636         (Atsushi pointed me to it).
13637
13638 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13641         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13642         
13643         * marshal.c (emit_marshal_vtype): Add limited support for 
13644         UnmanagedType.LPStruct. Fixes #78427.
13645
13646         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13647         Applied a patch from kangaroo to fix #77523.
13648
13649 2006-05-17  Martin Baulig  <martin@ximian.com>
13650
13651         * threads.c
13652         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13653         (debugger_thread_created): Removed.
13654         (debugger_thread_exited): Removed.
13655
13656 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13659
13660         * object-internals.h (MonoReflectionResource): Sync with managed version.
13661
13662 2006-05-12  Wade Berrier <wberrier@novell.com>
13663
13664         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13665
13666 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13669         functions try to allocate from the image mempool.
13670
13671 2006-05-12  Dick Porter  <dick@ximian.com>
13672
13673         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13674
13675 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13676
13677         * object.c: The FieldGetter and FieldSetter methods require the full
13678         name of the class, not only the name. Fixes bug #78277.
13679
13680 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13681
13682         * loader.c (method_from_memberref): Do not pass the NULL klass to
13683         mono_loader_set_error_() methods.  Pass the non-NULL value
13684         (class). 
13685
13686 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13689         (mono_assembly_close): Null out assembly->image->references after freeing it.
13690
13691         * image.c (mono_image_close): Free image->references.
13692         
13693         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13694
13695 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13696
13697         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13698         before checking if it's NULL (g_assert).
13699
13700 2006-05-10  Martin Baulig  <martin@ximian.com>
13701
13702         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13703         I thought I already killed that two months ago, but now it somehow reappeared.
13704
13705 2006-05-10  Martin Baulig  <martin@ximian.com>
13706
13707         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13708
13709 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * reflection.c: Allocate memory for dynamically created methods in the image
13712         mempools.
13713
13714 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13715
13716         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13717         don't use the ad pointer before checking if it's NULL (g_assert).
13718
13719 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13720
13721         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13722         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13723
13724         * marshal.c: Allocate all signatures from mempools.
13725
13726         * marshal.c: Allocate some more signatures from mempools.
13727
13728 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13729
13730         * object.c (mono_load_remote_field): The code used to provide a
13731         temporary variable for returning results if the user did not
13732         provide a result pointer.  But our temporary variable was allocted
13733         on the satck.
13734
13735         Fix calling code to always pass a result area.   Coverity ID 103.
13736
13737 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13740         value, not the old. Fixes #78312.
13741         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13742
13743         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13744         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13745         per-image cache.
13746
13747         * assembly.c (mono_assembly_close): Free image->references.
13748
13749         * assembly.c (mono_assembly_names_equal): Fix a warning.
13750         (mono_assemblies_cleanup): Cleanup more global data.
13751
13752         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13753
13754         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13755         ptr_cache and image->modules.
13756
13757         * image.c (mono_image_init): Allocate array_cache lazily.
13758         
13759 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13760
13761         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13762         behavior was changed recently and has bad side effects.
13763
13764 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13765
13766         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13767         
13768         * assembly.c (mono_assembly_close): Remove a debug printf.
13769
13770         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13771
13772         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13773         to also allow for temporary references between mono_image_open ()/close ().
13774
13775         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13776
13777 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * marshal.c: Fix support for dynamic methods.
13780
13781         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13782
13783         * marshal.c (mono_marshal_cleanup): New cleanup function.
13784
13785         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13786         image mempools.
13787
13788         * class.c (mono_class_init): Fix leaking class->nested_classes.
13789
13790         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13791
13792         * image.c (mono_image_init): Initialize the new cashes.
13793
13794         * image.c (mono_image_close): Destroy the new cashes.
13795
13796         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13797
13798         * mempool.c (mono_mempool_strdup): New helper function.
13799
13800         * class-internals.h: Add prototype for mono_loader_unlock ().
13801
13802         * domain.c (mono_jit_info_table_find): Fix a warning.
13803         (mono_debugger_check_runtime_version): Ditto.
13804
13805         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13806         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13807         functions to these modules.
13808
13809         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13810         metadata modules.
13811         
13812         * marshal.c (mono_free_bstr): Fix a warning.
13813
13814         * assembly.c (mono_assembly_open_full): Fix another small leak.
13815
13816         * object.c: Fix some unload leaks in the remoting code.
13817
13818         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13819         function.
13820
13821         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13822
13823         * reflection.c: Fix some unload leaks in dynamic assemblies.
13824
13825 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13826
13827         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13828         * marshal.h: Add BSTR support on Win32
13829         * icall.c: Add BSTR icalls
13830         * metadata.h: Add BSTR enums
13831
13832 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13833
13834         Work to catch the crash from #76795 and turn it into an
13835         exception.   As I stubbed out pieces of the VisualBasic support,
13836         I found a number of places where the code was failing and I added
13837         checks to those places. 
13838         
13839         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13840         function return a status code.  If we fail to parse the signature
13841         from mono_metadata_parse_generic_inst, return FALSE.
13842
13843         * loader.c (mono_get_method_from_token): If we fail to load the
13844         method (mono_class_get) return NULL.   
13845
13846         * (method_from_memberref): Return NULL if we are unable to parse
13847         the method signature
13848
13849         (mono_loader_error_prepare_exception): Since we now use the
13850         loader_error flag internally to stop processing, and obtaining
13851         exceptions that might be thrown will walk this code path the
13852         proper way of going from a MonoLoaderError into a
13853         MonoException was convoluted.   This new routine encapsulates the
13854         process of turning the error into an exception and *clearing* the
13855         error afterwards.
13856         
13857 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13858
13859         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13860         with missing assemblies), and to cope with:
13861
13862                 * Missing fieldref from a non-existing assembly.
13863                 * Missing methodref from a non-existing assembly.
13864
13865         The first batch of work to address *some* of the issues from 76661.
13866         
13867         * object.c (mono_class_create_runtime_vtable): If we fail to
13868         initialize the class raise the exception here. 
13869
13870         * metadata.c (mono_class_get_overrides_full): If any methods fail
13871         to load return the failure to the caller.
13872
13873         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13874         flagging assemblies that failed to load.   
13875
13876         Do not crash if we are unable to load the assembly.
13877
13878         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13879         assemblies. 
13880
13881         * loader.c (mono_loader_set_error_type_load): Change the
13882         convention to always pass unallocated strings, so we make our own
13883         copies (I know our own code had duplicated strings before, but
13884         this keeps the normal conventions).
13885         (method_from_memberref): Call mono_loader_set_error_method_load
13886         for all possible failures of loading the class. 
13887         Remove assert, turn into a loader error.
13888
13889         (mono_loader_error_to_exception): Move this routine from mini
13890         (mini_loader_error_to_exception) there was no need to have that in
13891         mini. 
13892
13893         * class.c (mono_class_from_typeref): If we were not able to load
13894         the assembly with mono_assembly_load_reference, call the
13895         mono_loader_set_error_type_load to register the problem.
13896
13897         (mono_class_setup_fields): If we fail to load the type from
13898         mono_metadata_parse_type_full, call mono_class_set_failure and
13899         break from the loop.
13900
13901         If class->exception_type is set, we do not layout the fields as
13902         that might crash the runtime, and instead return (from breaking
13903         from the previous loop).
13904
13905         (mono_class_setup_vtable): This now returns a boolean indicating
13906         whether the table was properly setup.   The decision is driven by
13907         mono_class_get_overrides_full which might run into non-existing
13908         methods. 
13909         
13910         (mono_class_init): Returns TRUE on success or FALSE if there was a
13911         problem in loading the type (incorrect assemblies, missing
13912         assemblies, methods, etc).
13913
13914         When we call mono_class_setup_fields we also check for a potential
13915         error inside this call (either a class exception or a general
13916         loader exception).
13917
13918         (mono_class_create_from_typedef): If the parent fails to load
13919         (calling mono_class_get_full) return NULL.
13920         
13921         ** Important **
13922
13923         calls to mono_metadata_parse_type_full should be checked
13924         everywhere and set the mono_class_set_failure
13925         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13926
13927         The current patch checks the places where my manually constructed
13928         tests show the errors are showing up, but we should do it
13929         everywhere. 
13930
13931         ** Important2 **
13932
13933         mono_class_init return values should be tested everywhere, like
13934         the previous case this is something that we should audit
13935         everywhere and not only on the cases exposed by the tests I
13936         created. 
13937
13938 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13939
13940         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13941         boolean parameter and instead pass the information on `options'
13942         parameter (FileOptions).
13943
13944         * icall.c: Register the new signature for MonoIO.Open.
13945
13946         * debug-helpers.c (dis_one): Trying to understand how coverity
13947         works.  Fix Run 5, item 78.
13948
13949 2006-04-26  Dick Porter  <dick@ximian.com>
13950
13951         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13952         dereference.
13953
13954 2006-04-25  Martin Baulig  <martin@ximian.com>
13955
13956         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13957
13958         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13959         debugger_thread_created().
13960         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13961         special way.
13962         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13963         (mono_debugger_finalize_threads): New function; undo the effects
13964         of mono_debugger_init_threads().
13965         (mono_debugger_create_all_threads): Removed.
13966
13967 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13968
13969         * image.c (mono_image_close): Tidy up trace messages.
13970
13971         * assembly.c (mono_assembly_close): Ditto.
13972
13973         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13974         no longer references an already freed assembly. Fixes #78168.
13975
13976 2006-04-21  Dick Porter  <dick@ximian.com>
13977
13978         * threads.c (mono_thread_detach): Fix reference counting when
13979         detaching threads.
13980
13981 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13982
13983         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13984         #78155.
13985
13986 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13989         (mono_type_to_stind): Ditto.
13990
13991         * marshal.c: Use the new helper functions to simplify code.
13992
13993         * image.c (mono_image_close): Add some code for help debug assembly unloading
13994         problems.
13995
13996         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13997         image mempool.
13998
13999         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
14000         assembly was already loaded in another appdomain. Fixes #78083.
14001
14002 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
14005         referenced assemblies.
14006         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
14007
14008         * domain.c (mono_domain_free): Add a trace message.
14009
14010         * appdomain.c (add_assemblies_to_domain): Ditto.        
14011
14012         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
14013         field.  
14014
14015 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14016
14017         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
14018
14019 2006-04-12  Martin Baulig  <martin@ximian.com>
14020
14021         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
14022         `USE_INCLUDED_LIBGC'.   
14023
14024 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14025
14026         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
14027         the patch contains ../ and a small directory name later. Hopefully fixes
14028         #78035.
14029
14030 2006-04-10  Martin Baulig  <martin@ximian.com>
14031
14032         Clean up the debugger's thread-handling code.
14033
14034         The debugger's thread-handling code has been moved from
14035         ../mini/debug-debugger.c to threads.c.  We now iterate directly
14036         over the `threads' hash, keep track of exiting threads and also
14037         use proper locking.
14038
14039         We can now debug XSP and XSP based applications with the debugger.
14040
14041         * object-internals.h (MonoThread): Added `gpointer end_stack'.
14042
14043         * threads.h
14044         (MonoThreadCallbacks): Removed; this was only used by the debugger.
14045         (mono_install_thread_callbacks): Likewise.      
14046
14047         * threads.c (mono_thread_callbacks): Removed.
14048         (debugger_thread_created, debugger_thread_exited): New static functions.
14049         (start_wrapper): Call debugger_thread_created().
14050         (thread_cleanup): Call debugger_thread_exited().
14051         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
14052         (mono_debugger_init_threads): New public function.
14053         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
14054         iterate directly over the `threads' hash and also use proper locking.
14055
14056         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
14057
14058         * mono-debug-debugger.h
14059         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
14060
14061 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14062
14063         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
14064         argument type=array. Fixes #78057.
14065
14066 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
14067
14068         * culture-info-table.h : regenerated. Fixed bug #69652.
14069
14070 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14071
14072         * loader.c metadata.c: Reapply a variant r59116.
14073         
14074         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
14075
14076         * class.c (mono_class_setup_interface_offsets): New internal function.
14077
14078         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
14079         interfaces too. Fixes #77398.
14080
14081         * reflection.c (encode_cattr_value): Add support for 
14082         parameter type=object, argument type=array.
14083         (load_cattr_value): Ditto. Fixes #77916.
14084
14085         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
14086         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
14087
14088         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
14089         a byval char array and CharSet is Ansi.
14090
14091         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
14092
14093 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
14094
14095         * metadata.c: Add some locking comments.
14096         
14097         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
14098         mempool.
14099         (mono_metadata_free_method_signature): Don't free the signature itself.
14100
14101         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
14102
14103         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
14104         reference the same MonoImage.
14105         (mono_assembly_load_from_full): Add an assert.
14106
14107 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14108
14109         * image.c (mono_image_close): Don't put the image we are about to free into the
14110         loaded_images_guid_hash.
14111
14112         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
14113         to reduce code duplication.
14114
14115         * marshal.c: Register the native functions called by this module as icalls, to
14116         somewhat centralize the creation of MonoMethodSignature's.
14117
14118         * loader.c (mono_method_signature): Add a cache for method signatures.
14119
14120         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
14121         the parameter attributes of a method.
14122         (mono_metadata_parse_method_signature_full): Refactored the computation of
14123         parameter attributes into a separate function. Also avoid one allocation in
14124         most cases.
14125
14126         * assembly.c (mono_assembly_close): Ditto.
14127
14128         * image.c (mono_image_close): Log trace messages with INFO level.
14129
14130         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
14131
14132         * image.c reflection.c: Correct reference counting of image modules.
14133         
14134         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
14135         of this function from the image mempool.
14136         
14137         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
14138         to allow more cached types to be used.
14139
14140         * mono-debug.c (mono_debug_add_method): Appled patch from
14141         David S. Miller  <davem@sunset.davemloft.net>: Access 
14142         minfo->lexical_blocks[] entry elements using read32().
14143
14144 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14145
14146         * loader.c (mono_free_method): No longer free the method header for non-dynamic
14147         methods as it is allocated from the mempool.
14148
14149         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
14150         image mempool.
14151
14152         * metadata-internals.h: Add comments describing the reference counting scheme
14153         used for MonoImage and MonoAssembly.
14154
14155         * image.c assembly.c reflection.c: Rework reference counting of images and 
14156         assemblies so they are freed when the runtime is shut down. Free some 
14157         additional memory structures when an image is unloaded.
14158         
14159 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14160
14161         * class.c loader.c reflection.c: Allocate more data structures in
14162         the image mempool.
14163
14164 2006-03-31  Miguel de Icaza  <miguel@novell.com>
14165
14166         * icall.c
14167         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
14168         build on pre glib 2.4 systems.
14169
14170 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14171
14172         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
14173
14174         * icall.c: Fix some warnings.
14175
14176 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
14177
14178         * culture-info-table.h : regenerated.
14179
14180 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
14181
14182         * threads.c, object-internals.h, verify.c: changed the culture caching
14183         code to use a normal MonoArray for storage so the GC can keep track of
14184         them easily. Fixed bits of the cache logic, too and simplified the
14185         code.
14186
14187 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
14188
14189         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
14190         thread for non-Boehm GCs.
14191
14192 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
14193
14194         * domain.c, object.c, domain-internals.h: reduce the amount of memory
14195         needed to keep track of the data for static fields.
14196
14197 2006-03-29  Raja R Harinath  <rharinath@novell.com>
14198
14199         Fix #75172
14200         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
14201         for interface classes.  Use 'num_methods' instead.
14202         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
14203         before using '->vtable_size' field.
14204
14205 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14206
14207         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
14208         doesn't contain managed pointers, so use a normal hashtable.
14209
14210 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14211
14212         * reflection.c, class-internals.h, domain.c: fixed handling of types
14213         used as values for objects in custom attributes (bug #77915):
14214
14215 2006-03-24  Martin Baulig  <martin@ximian.com>
14216
14217         * class.c (mono_class_setup_fields): Added support for generic
14218         instances; fixes #77580.
14219
14220 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14221
14222         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
14223
14224 2006-03-24  Dick Porter  <dick@ximian.com>
14225
14226         * file-io.c (get_file_attributes): More stat macro breakage.
14227         Fixes bug 77759.
14228
14229 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
14230
14231         * profiler.c: added the file=filename option in the default profiler
14232         to output the profile data to filename.
14233
14234 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14235
14236         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
14237         bug #77877.
14238
14239 2006-03-22  Martin Baulig  <martin@ximian.com>
14240
14241         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
14242         allocated `MonoClassField *' in `fb->handle'.
14243
14244 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14245
14246         * class.c, image.c, metadata-internals.h: implemented new mechanism to
14247         allocate interface ID to save memory and allow better ID reuse on
14248         appdomain unload. setup_generic_vtable () removal from Martin.
14249
14250 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14251
14252         * object.h, appdomain.c, domain.c, exception.c, icall.c,
14253         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
14254         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
14255         write barriers for reference stores with managed objects accessed with
14256         C structures in the runtime and in embedding programs.
14257
14258 2006-03-20  Raja R Harinath  <rharinath@novell.com>
14259
14260         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
14261         'interface_id' and 'max_interface_id' fields of MonoClasses
14262         representing open generic types.
14263
14264 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
14265
14266         * object.h, object.c, icall.c: added functions to deal with
14267         storing valuetypes that contain references in managed objects.
14268         * reflection.c, string-icalls.c, threads.c, marshal.c: small
14269         fixes and comments around uses of mono_array_addr ().
14270
14271 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
14272
14273         * object.h, icall.c, monitor.c: object.GetHashCode ()
14274         implementation that supports the moving garbage collector.
14275
14276 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14277
14278         * icall.c, threads-types.h, threads.c: implemented finalizer for
14279         LocalDataStoreSlot.
14280
14281 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * metadata.c (mono_type_size): Add a fixme.
14284         (mono_type_stack_size): Ditto.
14285
14286         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
14287         'type_forwarders' field.
14288
14289         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
14290         attribute from net 2.0.
14291
14292         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
14293         from class.c.
14294
14295         * class.c (mono_class_setup_fields): Fix a warning.
14296         
14297         * class.c (mono_class_from_name): Add support for assemblyref entries
14298         in the EXPORTEDTYPE table.
14299
14300         * reflection.c: Add support for handling type forwarders under net 2.0.
14301
14302         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
14303         
14304 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14305
14306         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
14307         overwriting entries in ModuleBuild->types, also clean up the code
14308         a little. Fixes #77774.
14309
14310 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14311
14312         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
14313         load friend assembly info when present.
14314
14315 2006-03-14  Raja R Harinath  <rharinath@novell.com>
14316
14317         Fix crasher on gtest-158.cs.
14318         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
14319         the return value if the MonoClass we want is yet in an
14320         inconsistent state.
14321         * class.c (mono_class_create_from_typedef): Add an comment
14322         explaining an order dependency between mono_class_setup_parent and
14323         mono_class_setup_mono_type.
14324
14325 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14326
14327         * class.c: documentation updates and events bug fix.
14328
14329 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14330
14331         * class.c: some cleanup, locking fixes.
14332
14333 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14334
14335         * class.c: fix the generics code to setup nested
14336         type info to the instantiated type (bug #77770).
14337
14338 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14339
14340         * marshal.c: fixed a few type correctness issues.
14341
14342 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14343
14344         * loader.c: the Set/Get/Addrtess array methods should be public.
14345
14346 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14347
14348         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
14349         
14350         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
14351         info->wrapper.
14352
14353 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14354
14355         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
14356
14357         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
14358
14359         * mempool.c (mono_mempool_alloc): Speed this up a bit.
14360         (mono_mempool_alloc0): Ditto.
14361
14362 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14363
14364         * socket-io.c:
14365         (create_object_from_sockaddr): it was allocating 4 extra bytes
14366         for the AF_UNIX data. Fixes bug #77747.
14367
14368 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14369
14370         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
14371
14372 2006-03-09  Dick Porter  <dick@ximian.com>
14373
14374         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
14375         Fixes bug 76966 again.
14376
14377 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
14378
14379         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
14380         names from r57532
14381         * appdomain.c: Bumped corlib version to 48 (due to r57532)
14382
14383 2006-03-07  Martin Baulig  <martin@ximian.com>
14384
14385         * object.c
14386         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
14387
14388 2006-03-07  Martin Baulig  <martin@ximian.com>
14389
14390         * class.c
14391         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
14392         regression introduced in r56970; see gtest-252.cs.
14393
14394         * loader.c (mono_get_method_constrained): Correctly handle generic
14395         methods; see gtest-253.cs.
14396
14397 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
14400
14401 2006-03-04  Martin Baulig  <martin@ximian.com>
14402
14403         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
14404         compute the parent type at runtime, just like we're already doing
14405         it for interfaces.
14406
14407         * reflection.c
14408         (mono_reflection_bind_generic_parameters): Don't compute the
14409         parent type anymore.
14410
14411         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
14412
14413 2006-03-04  Martin Baulig  <martin@ximian.com>
14414
14415         * mono-debug-debugger.h
14416         (mono_debugger_create_notification_function): Allocate memory at
14417         runtime and return a pointer to it.
14418
14419 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * assembly.c: Fix windows build.
14422         
14423         * assembly.c: Fix build.
14424
14425         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
14426
14427         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
14428         
14429 2006-03-03  Dick Porter  <dick@ximian.com>
14430
14431         * process.c
14432         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14433         Check parameters before dereferencing them.  Fixes Aaron's part of
14434         bug 77393.
14435
14436 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14437
14438         Fix performance regression.
14439         * loader.c (find_method_in_class): Add 'from_class' argument.
14440         Rename 'klass' argument to 'in_class'.  The signature is compared
14441         against the method in 'in_class', and the corresponding method is
14442         returned from 'from_class'.
14443         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14444         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14445         type definition and generic instantiation in parallel.
14446         (mono_get_method_constrained): Update to changes.
14447
14448 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14449
14450         * threads.c: make sure the domain is correct, too when doing
14451         mono_thread_attach ().
14452
14453 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14456         windows. Fixes #77683.
14457
14458 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14459
14460         * object.h, *: introduced specific way to set elements of an array
14461         of references to be used as write barrier. Still need to audit the
14462         uses of mono_array_addr.
14463
14464 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14465
14466         * object-internals.h: New field to cache the assmebly name, patch
14467         from Tambet Ingo (tambet@ximian.com)
14468
14469 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14470
14471         * decimal.h, class-internals.h, metadata-internals.h,
14472         file-io.h: mark a few function declarations as internal, to
14473         reduce the number of PLT entries.
14474
14475 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14476
14477         * file-io.c: fix typo in warning message.
14478
14479 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14480
14481         * loader.c: on unix, lookup the "*A" version of a function
14482         if charset is auto as a second option before failing.
14483
14484 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14485
14486         * class.h (mono_class_inflate_generic_method): Revert to two
14487         argument version.
14488         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14489         (mono_class_inflate_generic_method_full): Add.
14490         * class.c (mono_class_inflate_generic_method_full): Rename from
14491         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14492         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14493         * loader.c, reflection.c: Update to changes.
14494
14495 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14496
14497         * icall.c: const fixes and small improvements.
14498
14499 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14500
14501         * threadpool.c: for asynchronous connect(), enable the same workaround
14502         for BSD 6 as for the Mac. Fixes bug #77637.
14503
14504 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14505
14506         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14507         formatted classes. Fixes #77524.
14508
14509 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14510
14511         * class.c (inflate_generic_type): Add a couple more
14512         micro-optimizations.
14513         (inflate_generic_context): Don't use the 'gmethod' from
14514         'inflate_with'.
14515         (mono_class_inflate_generic_method): If the method has generic
14516         parameters, but the passed-in context doesn't have a 'gmethod',
14517         create one.  Use the possibly simplified generic instantiation
14518         from the declaring class instead of the one passed in.
14519
14520 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14521
14522         Make generic method signature and method header handling lazy.
14523         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14524         (inflate_generic_header): Likewise.
14525         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14526         parameter to avoid inflating types.
14527         (mono_get_inflated_method): Empty out.
14528         * class.h (mono_class_inflate_generic_method): Update to changes.
14529         * loader.c (mono_get_method_from_token): Don't parse signature for
14530         generic methods, nor methods of generic classes.
14531         (mono_method_signature): Rename from 'mono_method_signature'.
14532         Inflate signature on demand.
14533         (mono_method_get_header): Inflate method header on demand.
14534         * reflection.c: Update to changes.
14535
14536 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14537
14538         * metadata.c (mono_metadata_inflate_generic_inst): If the
14539         instantiation is closed, don't bother expanding it in the new
14540         context.
14541         * class.c (inflate_generic_class): If the generic instantiation
14542         doesn't change after inflation, return the argument itself.
14543         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14544         Add bounds checks.
14545         (inflate_generic_context): If neither the generic class nor the
14546         generic method instantiations change, return the original context.
14547         * reflection.c (mono_method_get_object): Do
14548         'mono_get_inflated_method' before accessing the ->klass field.
14549         (inflate_mono_method): Don't create a MonoGenericMethod unless
14550         necessary.
14551         (inflate_method): Don't pass a constructed type as the declaring
14552         type of a methodbuilder.
14553
14554 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14555
14556         * object.c: fix memory overwrite.
14557
14558 2006-02-22  Dick Porter  <dick@ximian.com>
14559
14560         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14561         it doesn't work any more.
14562         (mono_threads_request_thread_dump): Fix unused variable warnings.
14563
14564 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14565
14566         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14567         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14568         the public header file.
14569
14570 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14573
14574 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14575
14576         * class-internals.h, object.c: reduce the size of MonoVTable
14577         and store the interface_offsets array at negative offsets.
14578
14579 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14580
14581         * metadata.c: tweak table descriptors data structures to reduce
14582         size and runtime relocations.
14583
14584 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14585
14586         * marshal.c: fix some types and opcodes to be type-safe
14587         in marshaling wrappers.
14588
14589 2006-02-21  Ankit Jain  <jankit@novell.com>
14590
14591         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14592
14593 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14594
14595         * metadata.c (get_constraints): Relax debugging checks for monodis.
14596
14597 2006-02-21  Ankit Jain  <jankit@novell.com>
14598
14599         * metadata.c (mono_metadata_load_generic_params): Move the code
14600         checking for ambiguous generic params from here to mono/dis/get.c
14601         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14602
14603 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14604
14605         Fix assertion triggered when compiling nemerle.
14606         * class.c (mono_get_shared_generic_inst): Rename from
14607         get_shared_inst and make non-static.
14608         * loader.c (mono_get_shared_generic_method): New.  Used to create
14609         the MonoGenericContext-equivalent of a MonoGenericContainer.
14610         (mono_get_method_from_token): Initialize the 'context' field of
14611         the created MonoGenericContainer.
14612         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14613         * metadata.c (get_constraints): Add sanity check.
14614         * class-internals.h: Add new internal methods.
14615
14616         * reflection.c (verify_safe_for_managed_space): New sanity check.
14617         Currently checks that owner-less generic parameters aren't allowed
14618         in managed space.
14619         (mono_type_get_object): Use it.
14620         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14621         that are now in mono_type_get_object.
14622         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14623
14624 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14625
14626         * metadata.c (mono_type_create_from_typespec): Rename from
14627         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14628         argument and caching of types in the generic container.
14629         (unwrap_arrays, find_generic_param): Remove.
14630         * metadata-internals.h: Update.
14631         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14632
14633 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14634
14635         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14636
14637         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14638         return values. Fixes #77581.
14639
14640         * class.c (mono_fnptr_class_get): Switch name and name_space.
14641
14642         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14643         classes and add support for [In, Out] attributes.
14644         (mono_marshal_free_asany): Ditto. Fixes #77524.
14645
14646 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14647
14648         * class.c (mono_class_from_generic_parameter): Make more robust to
14649         incomplete MonoGenericContainers from monodis.
14650
14651 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14652
14653         * class-internals.h: added some more exception types.
14654         * class.c, metadata.c: added a few checks to handle missing
14655         types.
14656
14657 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14658
14659         Use owner-less generic-params some more.
14660         * class.c (my_mono_class_from_generic_parameter): Remove.
14661         (mono_class_from_generic_parameter): Handle null image,
14662         param->name and param->owner.
14663         (mono_class_from_mono_type): Update.
14664         (mono_class_create_from_typespec): Remove 'container' parameter.
14665         If that parameter is non-null, the result is always inflated by
14666         'mono_class_get_full' anyway.
14667         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14668         parameter.
14669         (mono_class_get_full): Update.
14670
14671         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14672         instance is not open, don't bother inflating.
14673         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14674         parse metadata for inflated classes.
14675         (_mono_class_get): Change GenericContext* parameter to
14676         GenericContainer*.
14677         (mono_class_create_from_typespec): Likewise.  Simplify, and
14678         implement trivially.  All the cases are handled in
14679         mono_class_from_mono_type.  Don't inflate returned class.
14680         (mono_class_get_full): Delegate GENERICINST optimization to
14681         inflate_generic_type.
14682         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14683
14684 2006-02-16  Dick Porter  <dick@ximian.com>
14685
14686         * socket-io.c (create_object_from_sockaddr): Fix typo.
14687         (create_sockaddr_from_object): Check array lengths before
14688         potentially accessing items off the end.
14689         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14690         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14691         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14692         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14693         length checks to avoid wraparound overflows.
14694         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14695         contents of the array of sockets
14696         (hostent_to_IPHostEntry2)
14697         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14698         Check return value of inet_ntop ().
14699         (addrinfo_to_IPHostEntry): Fix typo
14700
14701 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14702
14703         Type metadata parsing doesn't use generic-instantiation information.
14704         * metadata.c (mono_metadata_parse_array_full): Change
14705         MonoGenericContext* parameter to MonoGenericContainer*.
14706         (mono_metadata_parse_type_full): Likewise.
14707         (mono_type_create_from_typespec_full): Likewise.
14708         (mono_metadata_parse_mh_full): Likewise.
14709         (mono_metadata_parse_generic_inst): Likewise.
14710         (do_mono_metadata_parse_generic_class): Likewise.
14711         (do_mono_metadata_parse_type): Likewise.
14712         * metadata-internals.h: Update to changes.
14713         * class.c (mono_class_find_enum_basetype): Likewise.
14714         (mono_class_setup_fields): Likewise.
14715         (mono_class_create_from_typespec): Likewise.
14716         * loader.c (method_from_methodspec): Likewise.
14717         (mono_get_method_from_token): Likewise.
14718         (mono_method_get_header): Likewise.
14719
14720 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14721
14722         * marshal.c: handle additional GENERICINST case (patch from
14723         Thong Nguyen <tum@veridicus.com>).
14724         Fix a few cases where LDIND_I/STIND_I was used for references.
14725
14726 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14727
14728         * reflection.c (mono_reflection_get_token): Remove unused variable.
14729
14730 2006-02-16  Martin Baulig  <martin@ximian.com>
14731
14732         * reflection.c (mono_reflection_get_token): Add support for fields
14733         in instantiated generic types.
14734
14735         * icall.c
14736         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14737
14738 2006-02-15  Martin Baulig  <martin@ximian.com>
14739
14740         * icall.c
14741         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14742         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14743         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14744         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14745
14746 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14747
14748         * class.c, metadata.c, metadata.h, object.c, icall.c,
14749         marshal.c: changed mono_type_get_underlying_type () to do
14750         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14751         Fixed handling of instantiated generic valuetypes (bug #75479).
14752
14753 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14754
14755         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14756         Delegate to mono_metadata_decode_value, and work on the returned value.
14757
14758         * icall.c (ves_icall_MonoType_GetGenericArguments):
14759         Add consistency check here too.
14760         
14761 2006-02-15  Ankit Jain  <jankit@novell.com>
14762
14763         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14764         char/short etc.
14765
14766 2006-02-15  Ankit Jain  <jankit@novell.com>
14767
14768         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14769         signed values, used only for representing lower bounds of arrays.
14770         (mono_metadata_parse_array_full): Use new
14771         mono_metadata_decode_signed_value to decode lower bounds.
14772
14773 2006-02-14  Martin Baulig  <martin@ximian.com>
14774
14775         * reflection.c
14776         (mono_reflection_get_token): Support "MonoGenericMethod" and
14777         "MonoGenericCMethod" and allow generic instances / methods.
14778
14779 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14780
14781         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14782         to obtain the terminal size using an ioctl.
14783
14784         * object.c (mono_nullable_init): Revert this as nullable reference
14785         types are not valid.
14786         (mono_nullable_box): Ditto.
14787
14788 2006-02-09  Dick Porter  <dick@ximian.com>
14789
14790         * threads.c (mono_thread_detach): Drop a reference to the thread
14791         we're detaching.
14792
14793 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * object.c (mono_nullable_init): Handle nullable reference types.
14796         (mono_nullable_box): Ditto. Fixes #77446.
14797
14798 2006-02-07  Martin Baulig  <martin@ximian.com>
14799
14800         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14801
14802 2006-02-07  Ankit Jain  <jankit@novell.com>
14803
14804         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14805         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14806         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14807         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14808         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14809         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14810
14811 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14812
14813         * class.c (mono_class_create_generic): Set type_token as well.
14814
14815         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14816         compatible with MS.
14817
14818 2006-02-02  Martin Baulig  <martin@ximian.com>
14819
14820         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14821         has never been used so far.
14822
14823 2006-02-02  Martin Baulig  <martin@ximian.com>
14824
14825         * mono-debug-debugger.h: Changed comment at the top of this file;
14826         the header is not installed, but it's safe to #include it from
14827         within the JIT.
14828
14829         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14830         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14831
14832 2006-02-02  Martin Baulig  <martin@ximian.com>
14833
14834         * mono-debug.h
14835         (MonoSymbolTable): Removed the `metadata_info' field.
14836
14837         * mono-debug.c
14838         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14839
14840         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14841         (mono_debugger_add_builtin_types): Removed.
14842         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14843         (mono_debugger_create_notification_function): We now operate on a
14844         pre-allocated area; take a `gpointer' and return `void'.
14845
14846         * mono-debug-debugger.c
14847         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14848         (mono_debugger_add_builtin_types): Removed.
14849
14850 2006-02-02  Martin Baulig  <martin@ximian.com>
14851
14852         * threads.c (mono_debugger_create_all_threads): New public method.
14853
14854 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14855
14856         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14857         breaks on several platforms.
14858
14859 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14860
14861         * assembly.c: the VS.NET build doesn't supply default values for
14862         MONO_ASSEMBLIES and MONO_CFG_DIR.
14863
14864 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14865
14866         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14867         helper function.
14868
14869         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14870
14871         * loader.c (method_from_memberref): Fix a warning.
14872
14873         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14874
14875         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14876         with explicit layout. Fixes #77433.
14877
14878 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14879
14880         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14881         max_interface_id is initialized before using it. Fixes #77398.
14882         (ves_icall_Type_GetInterfaces): Ditto.
14883
14884 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14885
14886         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14887         allocate memory for parameter attributes when parsing memberref
14888         signatures.
14889         * loader.c (mono_loader_set_error_method_load): Don't warn.
14890         (method_from_memberref): Ensure MissingMethodException gets thrown
14891         if method is not found.  Make warning more informative.
14892
14893 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14894
14895         Fix #77397
14896         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14897         return true if is byref.
14898         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14899         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14900         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14901
14902 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14903
14904         Fix tests/find-method.2.il
14905         * loader.c (find_method, find_method_in_class): Remove is_inflated
14906         argument.  Revert 2006-01-18 change.
14907         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14908         is generic, search for method in its generic definition.
14909         * class.c (mono_class_setup_vtable_general): Print generic
14910         arguments of generic types in debugging printf.
14911
14912 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14915
14916         * threads.c (mono_threads_request_thread_dump): New helper function.
14917
14918 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14919
14920         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14921
14922 2006-01-25  Ankit Jain  <jankit@novell.com>
14923
14924         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14925         move definition to ..
14926         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14927         
14928 2006-01-25  Ankit Jain  <jankit@novell.com>
14929             Raja R Harinath  <rharinath@novell.com>
14930
14931         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14932         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14933         as necessary.
14934
14935 2006-01-25  Martin Baulig  <martin@ximian.com>
14936
14937         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14938         `MonoDebuggerThread' into debug-debugger.c.
14939
14940 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14941
14942         * profiler.c: fix printing of data.
14943
14944 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14945
14946         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14947           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14948
14949 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14950
14951         * object.c: fix deadlock related to string interning.
14952
14953 2006-01-23  Martin Baulig  <martin@ximian.com>
14954
14955         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14956
14957         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14958
14959 2006-01-23  Martin Baulig  <martin@ximian.com>
14960
14961         * mono-debug.h: Moved the prototypes of some functions which are
14962         used by the JIT here from mono-debug-debugger.h.
14963
14964 2006-01-21  Martin Baulig  <martin@ximian.com>
14965
14966         * Makefile.am: Don't install mono-debug-debugger.h.
14967
14968 2006-01-21  Martin Baulig  <martin@ximian.com>
14969
14970         * mono-debug-debugger.h: Enforce the private status of this header
14971         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14972         Moved some stuff from mono-debugger-jit-wrapper.h here.
14973
14974 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14975
14976         * class.c (mono_class_from_typeref): Add a sanity test to help
14977         catch lack of assembly load/search hooks.
14978
14979 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14980
14981         * marshal.c (emit_struct_conv): Relax the fields with same offset
14982         check even more. Fixes #77230.
14983
14984 2006-01-18  Martin Baulig  <martin@ximian.com>
14985
14986         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14987         argument; if false, we compare the uninstantiated signatures.
14988         (method_from_memberref): Compare the uninstantiated signatures;
14989         fixes #76417.
14990
14991 2006-01-18  Robert Jordan  <robertj@gmx.net>
14992
14993         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14994         Clear the weak link. Fixes bug #77170.
14995
14996         * gc.c (mono_gchandle_free):
14997         Reflect *-gc.c changes (tiny optimization).
14998
14999 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
15000
15001         * metadata.c (mono_metadata_signature_dup): Applied patch from
15002         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
15003         Fixes #77288.
15004
15005 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15006
15007         * marshal.c (emit_struct_conv): Allow fields with the same offset when
15008         marshalling from native to managed code. Fixes #77230.
15009
15010 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15011
15012         * threadpool.c: fix problem (Mac only) when more than one asynchronous
15013         connect. Fixes bug #77020.
15014
15015 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15016
15017         * class.c: fixed id assignement for nested interfaces (bug #77275).
15018         Added also better info for --print-vtable debugging.
15019
15020 2006-01-12  Martin Baulig  <martin@ximian.com>
15021
15022         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
15023         interfaces on-the-fly; fixes #76625.
15024
15025         * class-internals.h
15026         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
15027         don't need that anymore.
15028
15029 2006-01-12  Miguel de Icaza  <miguel@novell.com>
15030
15031         * socket-io.c
15032         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
15033         To avoid initing the nested_classes when not needed I turned the
15034         PeerCredData as a toplevel internal class, as it has to be shared
15035         anyways. 
15036
15037         Fixes the CASA issue.
15038
15039 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15040
15041         * domain.c: Accessors for MonoJitInfo
15042
15043         * profiler-private.h: Add jitinfo to the end jit hook
15044
15045         * profiler.[ch]: Define new hooks, called after jitting which give
15046         the MonoJitInfo that was compiled
15047
15048 2006-01-10  Martin Baulig  <martin@ximian.com>
15049
15050         * class.c (mono_class_setup_events): Add support for generic
15051         classes; fixes #76440.
15052
15053 2006-01-06  Raja R Harinath  <rharinath@novell.com>
15054
15055         Fix #77160.
15056         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
15057         on passed-in method.
15058
15059 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15060
15061         * object.c (mono_runtime_invoke_array): Add Nullable support.
15062
15063         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
15064
15065 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
15066
15067         * file-io.c: Don't consider sockets as directory and avoid an endless
15068         loop. Fix bug #76966.
15069
15070 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15071
15072         * object.c (mono_nullable_init): New helper function.
15073         (mono_nullable_box): Ditto.
15074
15075         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
15076
15077         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
15078
15079         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
15080         
15081 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
15082
15083         * class.c (mono_class_is_assignable_from): Make T assignable to 
15084         Nullable<T>.
15085
15086 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
15087
15088         * appdomain.c: Bump corlib version to 46.
15089         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
15090         serialization purpose) and changed ves_icall_System_Reflection_
15091         Assembly_get_code_base signature to accept a boolean (to escape, or 
15092         not, the assembly code base).
15093
15094 2005-12-23  Dick Porter  <dick@ximian.com>
15095
15096         * icall.c: 
15097         * threads-types.h: 
15098         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
15099         CreateEvent icall now returns "created" boolean parameter.
15100
15101 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15102
15103         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
15104         #76967.
15105
15106         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
15107         when attr_klass is an interface. Fixes #77045.
15108
15109 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * marshal.c (emit_struct_conv): Fix previous patch.
15112         
15113         * marshal.c (emit_struct_conv): Add a check for fields with the same
15114         offset.
15115
15116 2005-12-20  Raja R Harinath  <rharinath@novell.com>
15117
15118         Fix regression in Mono.C5.
15119         * class.c (mono_class_create_generic): If 'klass' is an interface
15120         set up the interface offsets.
15121         (mono_class_is_assignable_from): Don't throw away generic arguments.
15122
15123 2005-12-19  Raja R Harinath  <rharinath@novell.com>
15124
15125         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
15126         type parameters.
15127
15128 2005-12-15  Raja R Harinath  <rharinath@novell.com>
15129
15130         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
15131         dead store.
15132         (do_mono_metadata_parse_generic_class): Don't pass the current
15133         generic context when parsing the type being instantiated: it
15134         cannot use it, anyway.
15135
15136         * loader.c (method_from_memberref): Don't inflate a signature if
15137         it doesn't contain any type parameters.
15138
15139 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15140
15141         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
15142
15143 2005-12-14  Martin Baulig  <martin@ximian.com>
15144
15145         * class.c
15146         (mono_type_get_name_recurse): Don't return null for type
15147         parameters and open generic classes.
15148         (mono_class_setup_methods): Don't exclude generic instances.
15149         (mono_get_unique_iid): Use different IDs for different
15150         instantiations of the same generic type.
15151         (mono_class_setup_vtable): Only use setup_generic_vtable() for
15152         open generic instances; create a normal vtable for closed generic
15153         instances.
15154         (mono_class_setup_vtable_general): We're now also called for
15155         closed generic instances.
15156
15157         * reflection.c
15158         (mono_reflection_bind_generic_parameters): Correctly use
15159         mono_metadata_lookup_generic_inst() everywhere.
15160
15161 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
15162
15163         * object.c (mono_class_create_runtime_vtable): Call 
15164         mono_class_setup_vtable ().
15165
15166         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
15167         function.
15168         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
15169         #76959.
15170
15171         * loader.c (mono_loader_set_error_type_load): Print the type load
15172         warnings to the console so they are more visible to the user.
15173         (mono_loader_set_error_method_load): Ditto.
15174
15175         * reflection.c (ensure_runtime_vtable): Revert the last change as it
15176         is still broken.
15177         
15178         * reflection.c (ensure_runtime_vtable): Fix build.
15179
15180         * reflection.c (ensure_runtime_vtable): Disable an optimization which
15181         doesn't work in all cases.
15182
15183 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * object.c (mono_array_new_full): Treat a single dimensional array
15186         with 0 lower bounds as an szarray. Fixes #76973.
15187
15188         * reflection.c (custom_attr_visible): Really fix this.
15189
15190 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
15191
15192         * reflection.c (custom_attr_visible): Allow nested public attributes
15193         as well.
15194
15195         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
15196         interface check.
15197
15198 2005-12-12  Raja R Harinath  <harinath@gmail.com>
15199
15200         * class.c (set_generic_param_owner): Delete.
15201         (mono_class_create_from_typedef): Don't set ->owner field of
15202         generic parameters to "param containers" of enclosing classes.
15203         * reflection.c (mono_reflection_initialize_generic_parameter):
15204         Likewise.
15205
15206 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
15207
15208         * reflection.c (custom_attr_visible): Fix build.
15209
15210 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
15213         private attributes.
15214         
15215         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
15216         handling of null parameter defaults.
15217
15218 2005-12-09  Raja R Harinath  <rharinath@novell.com>
15219
15220         * class.c (mono_class_from_generic_parameter): Don't set
15221         klass->generic_container.
15222         (my_mono_class_from_generic_parameter): Likewise.
15223
15224 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15225
15226         * reflection.c (load_public_key): Fix a warning.
15227         (method_encode_code): Fix unaligned accesses.
15228
15229 2005-12-07  Martin Baulig  <martin@ximian.com>
15230
15231         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
15232
15233         * reflection.c
15234         (write_generic_param_entry): Encode our custom attrs.
15235
15236         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
15237
15238 2005-12-07  Martin Baulig  <martin@ximian.com>
15239
15240         * reflection.c (encode_new_constraint): Removed; we don't use the
15241         `NewConstraintAttribute' anymore.
15242
15243 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15244
15245         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
15246         not fire a TypeResolve event when Assembly.GetType () is called.
15247
15248 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15249
15250         Beginning of support for nullable types in the runtime. Parts of
15251         this patch are from Martin.
15252
15253         * appdomain.c (MONO_CORLIB_VERSION): Bump
15254
15255         * domain.c (mono_init_internal): get the nullable type
15256
15257         * class.c (mono_class_is_nullable): New method
15258         (mono_class_get_nullable_param): New mehod
15259         (mono_class_create_generic): In types T? set cast_class to T
15260
15261         * class-internals.h (MonoDefaults): new nullable default class
15262         (mono_class_get_nullable_param, mono_class_get_nullable_param):
15263         new methods.
15264
15265 2005-12-05  Raja R Harinath  <rharinath@novell.com>
15266
15267         * metadata.c (select_container): New.  Refactor code to select the
15268         appropriate GenericContainer given the type of generic parameter
15269         we are looking for.
15270         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
15271         not a MonoGenericContext.  Use select_container.  Update parameters.
15272         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
15273         and MONO_TYPE_MVAR.
15274         (unwrap_arrays): Remove duplicate tests.
15275         (find_generic_param): Rename from 'has_same_context'.  Now walks a
15276         generic instantiated class to find any arguments that are generic
15277         parameters.
15278         (mono_type_create_from_typespec_full): Use find_generic_param to
15279         avoid evicting some generic instantiations from the typespec
15280         cache.
15281
15282 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
15283
15284         * reflection.c: fixed writing of doubles on ARM FPA.
15285
15286 2005-12-02  Robert Jordan  <robertj@gmx.net>
15287
15288         * icall.c: Fixed EventInfo.ReflectedType (#76829).
15289
15290 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15291
15292         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
15293         least on SUSE 10 they are not the same (on debian, they are just the
15294         same thing).
15295
15296 2005-12-01  Raja R Harinath  <rharinath@novell.com>
15297
15298         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
15299         DeclaringType for VARs and MVARs.
15300         * class.c (set_generic_param_owner): Fix initialization of owner
15301         fields.
15302
15303 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15304
15305         * icall.c: fixed Enum.ToObject() to correctly convert the values.
15306
15307 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15308
15309         * threadpool.c: workaround for a bug that shows up on the Mac:
15310         select()+connect() on a blocking socket is not like it should
15311         be, so we proceed to connect() in that case, wasting the I/O
15312         threadpool thread until connect succeedes. Fixes bug #75436.
15313
15314 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15315
15316         * threadpool.c: fix typo when setting file descriptor states.
15317
15318 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15319
15320         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
15321         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15322         create a temporary signature container.
15323         (mono_metadata_parse_generic_param): Update to changes.
15324         (mono_type_create_from_typespec_full): Update to changes.
15325         * loader.c (method_from_memberref): Don't use a
15326         MonoGenericContainer while parsing a memberref signature.
15327         (method_from_methodspec): Remove dead-store of the 'container'
15328         variable.  It's overwritten before use.
15329
15330         * metadata.c (mono_type_create_from_typespec_full): Make debugging
15331         checks tighter.
15332         (mono_metadata_parse_generic_param): Likewise.
15333         * loader.c (find_method_in_class): Does not need a
15334         MonoGenericContainer.  Use 'mono_method_signature' rather than
15335         'mono_method_signature_full'.
15336         (find_method, mono_get_method_constrained, method_from_memberref):
15337         Update to changes.
15338
15339         * metadata.c (mono_type_create_from_typespec_full): Ensure that
15340         owner-less generic-parameters are never evicted from the typespec
15341         cache.
15342
15343         * loader.c (method_from_memberref): Don't use the current context
15344         when parsing signatures.
15345         (method_from_methodspec, mono_get_method_from_token): Update to changes.
15346
15347         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
15348         side-effects in g_assert.
15349         * loader.c (mono_get_method_from_token): Resolve klass earlier so
15350         that we don't potentially lose information.
15351
15352 2005-11-26  Dick Porter  <dick@ximian.com>
15353
15354         * icall.c:
15355         * threads.c: icalls to implement basic (ie, not named)
15356         System.Threading.Semaphore.
15357
15358 2005-11-24  Dick Porter  <dick@ximian.com>
15359
15360         * process.c
15361         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15362         Use GetProcessId() if it's available.
15363
15364 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
15365
15366         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
15367
15368 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15369             Ankit Jain  <jankit@novell.com>
15370
15371         * loader.c (mono_get_method_from_token): Initialize 'method' field
15372         of all generic parameters before parsing the signature.  Remove
15373         code that "fixed"-up MVAR references.
15374
15375 2005-11-23  Ankit Jain  <jankit@novell.com>
15376
15377         * metadata.c (mono_metadata_has_generic_params):
15378         (mono_metadata_load_generic_param_constraints):
15379         (mono_metadata_load_generic_params): Move duplicate code ...
15380         (mono_metadata_get_generic_param_row): ... here. Returns the
15381         first row-id in GenericParam table for a given owner (token).
15382         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
15383         prototype.
15384
15385 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15386             Ankit Jain  <jankit@novell.com>
15387
15388         * metadata.c (mono_metadata_class_equal): Pass signature_only when
15389         comparing VARs too.
15390         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
15391         type->data.generic_param only if the type is an MVAR.
15392         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
15393         leak owner-less VARs and MVARs into managed space.
15394
15395 2005-11-21  Martin Baulig  <martin@ximian.com>
15396
15397         * class-internals.h
15398         (MonoMethod): Moved the `generic_container' here from
15399         `MonoMethodNormal' since we now also need it for
15400         `MonoMethodPInvoke';
15401         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
15402         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
15403         an union containing both `MonoMethodNormal' and
15404         `MonoMethodPInvoke'.
15405
15406         * loader.c
15407         (mono_get_method_from_token): Allow implementing generic methods
15408         as interncalls.
15409
15410         * threads.c
15411         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
15412         icall.
15413
15414 2005-11-17  Dick Porter  <dick@ximian.com>
15415
15416         * icall.c: 
15417         * process.h: 
15418         * process.c: Split the Process Start_internal icall into
15419         ShellExecuteEx_internal and CreateProcess_internal, which are
15420         called depending on whether UseShellExecute is true.  Fixes bug
15421         76670.
15422
15423         * appdomain.c (MONO_CORLIB_VERSION): Incremented
15424
15425 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15426
15427         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
15428         'msize' parameters, use the information in 'mspec' instead.
15429         (emit_object_to_ptr_conv): Ditto.
15430
15431         * marshal.c (emit_struct_conv): Handle explicit layout structs with
15432         fields out of order. Fixes #76733.
15433
15434 2005-11-17  Ankit Jain  <jankit@novell.com>
15435
15436         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15437
15438 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15439
15440         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15441           bug #76575.
15442
15443 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15444
15445         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15446         for types with non-auto layout. Fixes #76717.
15447
15448 2005-11-16  Ankit Jain  <jankit@novell.com>
15449
15450         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15451         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15452         if generic_context is null.
15453           (mono_metadata_generic_param_equal): param->owner can be null.
15454           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15455         null.
15456
15457 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15458
15459         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15460         the correct value.
15461
15462 2005-11-15  Martin Baulig  <martin@ximian.com>
15463
15464         * object.c (set_value): Use mono_class_from_mono_type() instead of
15465         the hack for generic instances; fixes #76136.
15466
15467 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15468
15469         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15470         fields.
15471
15472         * image.c (load_metadata_ptrs): Initialize the new fields.
15473
15474         * reflection.c (create_dynamic_mono_image): Ditto.
15475
15476         * reflection.c (build_compressed_metadata): Use the new fields.
15477
15478         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15479         icall.
15480
15481         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15482         icall.
15483         
15484 2005-11-15  Ankit Jain  <jankit@novell.com>
15485             Raja R Harinath  <harinath@gmail.com>
15486
15487         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15488         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15489         new per-generic_container cache if the cached MonoType's context matches
15490         the current context.
15491           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15492         to the expected context.
15493           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15494
15495 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15496
15497         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15498         we changed the signature of an icall.
15499         * icall.c: Modify to mono_double_ParseImpl return true/false 
15500         depending on the success, instead of throwing the exception. This will
15501         help us in Double.TryParse methods.
15502         
15503 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15504
15505         * marshal.c (emit_marshal_object): Throw an exception when
15506         marshalling 'object' instead of crashing. Fixes #76696.
15507
15508 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15509
15510         * class-internals.h: Add prototype for mono_type_get_full_name ().
15511
15512 2005-11-11  Dick Porter  <dick@ximian.com>
15513
15514         * threads.c (mono_thread_manage): Make sure the main thread has
15515         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15516
15517 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15518
15519         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15520         console about the missing type.
15521         (mono_loader_set_error_method_load): Ditto.
15522
15523 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15524
15525         * mono-config.c (mono_get_config_dir): Set the system defaults if
15526         none is specified.
15527
15528         * assembly.c (mono_set_dirs): New API entry point to set the
15529         assembly and the config directory in one call
15530
15531 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15534         the ftnptr was created from a delegate in a domain other than the
15535         current domain. Fixes #75377.
15536
15537         * exception.h exception.c: Add mono_get_exception_not_supported ().
15538
15539 2005-11-08  Martin Baulig  <martin@ximian.com>
15540
15541         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15542
15543 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15544
15545         * security-manager.h: Added definitions to deal with strongname key 
15546         pairs bigger (and smaller) than 1024 bits.
15547         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15548         adjust wrt the public key length being used.
15549
15550 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15551
15552         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15553           Windows build (r51396-51397).
15554
15555 2005-11-03  Martin Baulig  <martin@ximian.com>
15556
15557         * class.c (mono_class_setup_vtable_general): Also add generic
15558         methods to the vtable; fixes #76581.
15559
15560 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15561
15562         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15563         sure that we lookup GetString method from the System.Text.Encoding
15564         class, not the derived class or we get an empty method.
15565
15566         Fixed class #76612.
15567
15568 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15569
15570         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15571         if it has been previously set (embedders). 
15572
15573         Make mono_set_rootdir available also on Unix.
15574
15575 005-10-24  Robert Jordan  <robertj@gmx.net>
15576
15577         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15578
15579 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15580
15581         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15582         only calls which are made to native code use this flag.
15583
15584         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15585
15586 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15587
15588         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15589         Add support for FieldBuilders.
15590
15591 2005-10-29  Martin Baulig  <martin@ximian.com>
15592
15593         * mono-debug.c
15594         (mono_debug_using_mono_debugger): New public method; returns
15595         whether we're running inside the debugger.
15596
15597 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15598
15599         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15600         for Method/Constructor/FieldBuilders.
15601
15602 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15603
15604         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15605         and fields as well.
15606
15607 2005-10-26  Martin Baulig  <martin@ximian.com>
15608
15609         * mono-debug-debugger.c
15610         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15611
15612 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15613
15614         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15615         integer to isspace.
15616
15617 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15618
15619         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15620         when passing valuetypes byref. Fixes #76502.
15621
15622 2005-10-19  Jackson Harper  <jackson@ximian.com>
15623
15624         * profiler.c: Don't put a . in front of types that are not in a
15625         namespace.
15626
15627 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15628
15629         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15630
15631 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15632
15633         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15634         #76436.
15635         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15636
15637 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15638
15639         * assembly.c metadata-internals.h icall.c: Define an additional
15640         parameter for mono_assembly_name_parse_full, so we can avoid creating
15641         S.R.AssemblyName.Version when no version info wasn't passed.
15642         
15643 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15644
15645         * class.c (mono_type_get_full_name): Reimplement method that was
15646         removed. 
15647
15648         * image.c: Some docs
15649
15650 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15651
15652         * profiler.c (output_newobj_profile): Fix printing of Total memory
15653         on x86.
15654
15655 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15656
15657         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15658
15659 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15660
15661         * threads.c: remove debug output.
15662
15663 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15664
15665         * threads.c (mono_thread_manage): Fix crashes if more than 64
15666         threads need to be aborted. Hopefully fixes #75899.
15667
15668         * assembly.c (mono_stringify_assembly_name): New helper function.
15669
15670         * class.c: Use mono_stringify_assembly_name instead of the similar
15671         static function.
15672
15673         * assembly.h assembly.c: Add support for calling a postload search 
15674         hook if an assembly cannot be loaded.
15675
15676         * appdomain.c: Register new search hooks which call the AssemblyResolve
15677         events in AppDomain. Fixes #75231
15678
15679 2005-10-07  Martin Baulig  <martin@ximian.com>
15680
15681         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15682         methods without debug info.
15683
15684 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15687         wrappers.
15688
15689 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15690
15691         * file-io.c: now that we return symlinks, use lstat and, when the file
15692         is a symbolic link, stat, to get the file attributes. Also avoid the
15693         conversion to/from utf16/external.
15694
15695 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * class.c (mono_class_layout_fields): Compute klass->has_references
15698         correctly if an embedded valuetype is not yet initialized. Fixes
15699         #76331.
15700
15701 2005-10-04  Martin Baulig  <martin@ximian.com>
15702
15703         * metadata.c
15704         (mono_metadata_load_generic_param_constraints): New public
15705         function; splitted the constraints loading out from
15706         mono_metadata_load_generic_params().
15707
15708         * class.c (mono_class_create_from_typedef): Call
15709         mono_metadata_load_generic_param_constraints() after setting up
15710         the type and creating our parent; fixes #75329.
15711
15712 2005-10-04  Martin Baulig  <martin@ximian.com>
15713
15714         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15715         non-dynamic parent classes.
15716
15717 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15718
15719         * file-io.c : win32 build fix (ETXTBSY seems not found).
15720
15721 2005-10-04  Martin Baulig  <martin@ximian.com>
15722
15723         * reflection.c
15724         (mono_image_get_methodspec_token): Make the cache actually work;
15725         fixes #75974.
15726
15727 2005-10-04  Martin Baulig  <martin@ximian.com>
15728
15729         * class.c (mono_class_name_from_token): Removed the unneccessary
15730         `MonoGenericContext *' argument.
15731
15732 2005-10-04  Martin Baulig  <martin@ximian.com>
15733
15734         * loader.c
15735         (method_from_methodspec): Make the caching work again; fixes the
15736         performance regression from #76262.
15737
15738 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15739
15740         * file-io.c:
15741         * file-io.h:
15742         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15743         GetFileSystemEntries that performs the same work but without going
15744         into io-layer, locking, etc.
15745
15746 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15749         ThreadState_Stopped as well. Fixes #76047.
15750
15751 2005-09-29  Martin Baulig  <martin@ximian.com>
15752
15753         * class.c
15754         (inflate_generic_context): If the new context has a `gmethod', set
15755         its `container' that that gmethod's `container'.
15756
15757         * metadata.c
15758         (mono_metadata_parse_generic_param): Simplify things;
15759         `generic_container = generic_context->container;' is just fine.
15760
15761         * loader.c (method_from_methodspec): Code cleanups.
15762
15763 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15764
15765         * decimal.c: fix warning (and let gcc generate correct
15766         code on ARM with optimizations).
15767
15768 2005-09-28  Martin Baulig  <martin@ximian.com>
15769
15770         * loader.c
15771         (method_from_memberref): Added `MonoGenericContext *class_context'
15772         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15773         (method_from_methodspec): If we're a memberref, use the enclosing
15774         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15775
15776 2005-09-28  Martin Baulig  <martin@ximian.com>
15777
15778         * object.c (mono_runtime_invoke_array): Added support for
15779         MONO_TYPE_GENERICINST; fixes #75917.
15780
15781 2005-09-27  Martin Baulig  <martin@ximian.com>
15782
15783         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15784         `k->byval_arg.type' to determine the actual type.
15785
15786         * loader.c (method_from_methodspec): Removed some hacks.
15787
15788 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15789
15790         * class-internals.h (mono_field_is_deleted): Do the test for
15791         rtspecialname before we check the actual name of the field. This
15792         prevents us from dereferencing a pointer into the string table,
15793         saving us from accessing a few pages
15794
15795         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15796         macros. This will allow a deadlock debugger to easily be plugged
15797         in.
15798
15799 2005-09-27  Martin Baulig  <martin@ximian.com>
15800
15801         * loader.c (method_from_methodspec): Create a "signature"
15802         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15803
15804 2005-09-27  Martin Baulig  <martin@ximian.com>
15805
15806         * class.c
15807         (inflate_generic_class): Correctly set the new context's
15808         container.
15809
15810         * loader.c
15811         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15812         instead of a `MonoGenericContext *'.
15813         (mono_method_signature_full): Take a `MonoGenericContainer *'
15814         instead of a `MonoGenericContext *'.
15815
15816         * metadata.c
15817         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15818         instead of a `MonoGenericContext *'.
15819         (mono_metadata_parse_method_signature_full): Likewise.
15820
15821 2005-09-26  Martin Baulig  <martin@ximian.com>
15822
15823         * class.c
15824         (mono_class_from_generic_parameter): Set `klass->generic_container'
15825         (mono_class_from_generic_parameter): Likewise.
15826         (mono_bounded_array_class_get): We inherit the generic container
15827         from the element class.
15828
15829         * loader.c
15830         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15831         argument rather than computing it here.
15832         (method_from_memberref): Correctly set the generic context before
15833         parsing the signature.  Fixes #75681.
15834
15835 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * object.c (mono_class_has_special_static_fields): Fix warnings.
15838
15839 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15840
15841         * assembly.c: Add parse_public_key function, to
15842         par the public keys. Also added mono_assembly_name_parse_full,
15843         to define it the parsed key should be freed or not.
15844         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15845         to parse a long format assembly name.
15846         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15847         private, since calling it to preserve the key requires
15848         freeing it manually.
15849         
15850 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15851
15852         * locales.c : removed HAVE_ICU part.
15853
15854 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15855
15856         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15857         field_is_special_static if the klass has no special static fields.
15858
15859         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15860         (MonoCachedClassInfo): Likewise.
15861
15862         * object.c (mono_class_has_special_static_fields): New helper function.
15863
15864 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15865
15866         * class.c (mono_class_create_from_typedef): Don't call 
15867         interfaces_from_typedef_full for enums.
15868         (mono_class_create_from_typedef): Compute the base types of enums directly
15869         without calling mono_class_setup_fields ().
15870         (mono_class_find_enum_basetype): New helper function.
15871
15872         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15873         one place inside the string heap.
15874         
15875 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15876
15877         * class.c: locking fixes, code cleanups, some docs added.
15878         Allocate some data structures in the image mempool.
15879
15880 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15883         the example code.
15884         
15885 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15886
15887         * class-internals.h, class.c, reflection.c: reduce memory taken by
15888         MonoClass.
15889
15890 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15891
15892         * metadata.c, metadata.h, loader.h: documentation updates, code and
15893         API cleanups.
15894
15895 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15896
15897         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15898         the example code.
15899
15900         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15901         page faults caused by the runtime while reading metadata.
15902
15903 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15904
15905         * socket-io.c: the field names were changed 3 months ago and no one
15906         realized until bug #76077 got filed!
15907
15908 2005-09-20  Martin Baulig  <martin@ximian.com>
15909
15910         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15911
15912 2005-09-20  Martin Baulig  <martin@ximian.com>
15913
15914         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15915         write the rank into the class entry.
15916
15917 2005-09-20  Martin Baulig  <martin@ximian.com>
15918
15919         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15920
15921 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15922
15923         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15924
15925         * icall.c (custom_attrs_defined_internal): New icall.
15926
15927         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15928         function.
15929         (mono_custom_attrs_construct_by_type): New helper function.
15930
15931 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15932
15933         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15934         terminate the resulting string. Fixes #76123.
15935
15936 2005-09-16  Martin Baulig  <martin@ximian.com>
15937
15938         * mono-debug.c
15939         (mono_debug_add_method): Ignore inflated methods for the moment.
15940
15941 2005-09-14  Martin Baulig  <martin@ximian.com>
15942
15943         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15944
15945 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15946
15947         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15948         return a success/failure indication.
15949         (mono_metadata_interfaces_from_typedef_full): Ditto.
15950         (get_constraints): Ditto.
15951
15952 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15955         
15956         * marshal.c (emit_marshal_array): Add support for returning string
15957         arrays from delegates. Fixes #76063.
15958
15959         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15960
15961 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15962
15963         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15964         icall.
15965
15966 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * reflection.c icall.c: Fix after mono_get_exception_type_load
15969         signature change.
15970
15971         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15972         (mono_assembly_load_reference): Use the new helper.
15973
15974         * class-internals.h (MonoLoaderError): New structure containing 
15975         information about type loading errors.
15976
15977         * class-internals.h loader.c: Add APIs to store per-thread loader
15978         error information.
15979
15980         * loader.c class.c: Set the loader error if needed.
15981
15982         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15983
15984 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15985
15986         * decimal.c: fixed to handle the broken ARM fp format.
15987
15988 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15989
15990         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15991         broken.
15992
15993 2005-09-06  Martin Baulig  <martin@ximian.com>
15994
15995         * domain.c (supported_runtimes): Added v2.0.50727.
15996
15997 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15998
15999         * culture-info.h: reduce the size of some structures.
16000
16001 2005-09-05  Martin Baulig  <martin@ximian.com>
16002
16003         Reflect latest API changes in the August CTP.
16004
16005         * icall.c
16006         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
16007         ("MonoType.HasGenericArguments"): Removed.
16008         ("MonoMethod.BindGenericParameters"): Renamed to
16009         "MakeGenericMethod".
16010         ("MethodBuilder.BindGenericParameters"): Renamed to
16011         "MakeGenericMethod".    
16012
16013 2005-09-05  Martin Baulig  <martin@ximian.com>
16014
16015         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
16016
16017 2005-09-05  Martin Baulig  <martin@ximian.com>
16018
16019         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16020
16021         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
16022         generic_container is non-NULL.
16023
16024 2005-09-05  Martin Baulig  <martin@ximian.com>
16025
16026         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16027
16028         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
16029
16030 2005-08-29  Michal Moskal  <malekith@nemerle.org>
16031
16032         * reflection.c (encode_locals,
16033         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
16034         for large generic types.
16035
16036 2005-09-05  Martin Baulig  <martin@ximian.com>
16037
16038         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16039
16040         * class.c (mono_dup_array_type): New public method.
16041         (mono_metadata_signature_deep_dup): New public method.
16042         (dup_type): Correctly duplicate array and function types.
16043
16044 2005-09-05  Martin Baulig  <martin@ximian.com>
16045
16046         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16047
16048         * reflection.c (get_default_param_value_blobs): Handle generic types
16049         and generic methods.
16050
16051 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
16052
16053         * class.c: Fixed error reporting (method/class were inversed) for 
16054         inheritance demands.
16055         * security-manager.c|h: Added the AppDomain when calling the managed
16056         System.Security.SecurityManager.InheritanceDemand method.
16057
16058 2005-09-01  Raja R Harinath  <rharinath@novell.com>
16059
16060         * reflection.c (encode_marshal_blob): 'marshaltype' and
16061         'marshaltyperef' are alternate sources for the custom marshaler
16062         name.
16063
16064 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
16065
16066         * class.c: fix creation of array classes with rank == 1
16067         (patch by Ankit Jain <jankit@novell.com>).
16068
16069 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
16070
16071         * object.c: fix check for creating the bound data for arrays vs
16072         szarrays.
16073
16074 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16075
16076         * object.c: configuration file name is now based on the executable name,
16077         not the image name. Fixes bug #75931.
16078
16079 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16080
16081         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
16082         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
16083
16084 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16085
16086         * rand.c: Use wincrypt.h instead of WinCrypt.h.
16087
16088 2005-08-24  Ankit Jain  <jankit@novell.com>
16089             Raja R Harinath  <rharinath@novell.com>
16090
16091         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
16092           called by it recursively.
16093           (mono_class_init): Remove special case in pending_init handling, since it's
16094           superseded by the fix to mono_class_from_typeref.
16095
16096 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16097
16098         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
16099         BROKEN_THREAD_START stuff.
16100
16101 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16102
16103         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
16104         trampoline.
16105
16106         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
16107         
16108         * object.c (mono_delegate_ctor): Replace the original function address with
16109         a delegate trampoline.
16110
16111 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
16112
16113         * icall.c: add boolean argument to base64_to_byte_array and 
16114         InternalFromBase64String to control whether a whitespace-only string
16115         is allowed (or should casue a FormatException to be thrown). We need
16116         this as the behavior has changed between MS.NET 1.x and 2.0, and we
16117         to match the MS behaviour in both profiles.
16118         * appdomain.c: Bump corlib version.
16119
16120 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16121
16122         This patch implements a big portion of publisher policy
16123         support, used to bind assembly versions and redirect
16124         one assembly from version A to version B.
16125
16126         * assembly.c:
16127         New GSList loaded_assembly_bindings, for storing the cached
16128         assembly bindings.
16129         (assembly_binding_maps_name): New static function for checking if a 
16130         assembly binding information maps an assembly name.
16131         (mono_assembly_binding_info_free): New function for freeing
16132         assembly binding information resources.
16133         (get_publisher_policy_info): New static function for retrieving 
16134         assembly binding information from a MonoImage.
16135         (compare_versions): New static function for comparing an assembly
16136         binding information data and the version of an assembly name.
16137         (check_policy_versions): New static function for checking if an
16138         assembly binding info mapping an assembly name is valid for it.
16139         (mono_assembly_load_publisher_policy): New static function for
16140         loading the 'policy.major.minor.MyAssembly' image for an assembly
16141         with an assembly name 'aname'.
16142         (mono_assembly_bind_version): New static function for updating
16143         assembly redirection.
16144         (mono_assembly_apply_binding): New static function for applying
16145         assembly binding.
16146         (search_binding_loaded): New static function for searching 
16147         loaded assembly binding infos in the cache domain.
16148         (mono_assembly_load_full): Don't apply assembly binding for
16149         reflection only assemblies.
16150
16151         * metadata-internals.h: Add MonoAssemblyBindingInfo,
16152         which contains information about assembly binding. Also
16153         declare signature for mono_config_parse_publisher_policy ()
16154         function, used to retrieve pub policy info.
16155         
16156         * mono-config.c:
16157         (publisher_policy_start): New static function used to parse publisher 
16158         policy config files.
16159         (publisher_policy_parser): New static MonoParseHandler containing 
16160         the functions used when parsing config files.
16161         (mono_config_parse_publisher_policy): New function for parsing
16162         publisher policy files.
16163         
16164 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16165
16166         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
16167
16168         * marshal.c (mono_delegate_free_ftnptr): Ditto.
16169
16170         * object.c (mono_get_addr_from_ftnptr): New helper function.
16171
16172         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
16173
16174         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
16175
16176 2005-08-19  Dick Porter  <dick@ximian.com>
16177
16178         * threads.c, threads.h, appdomain.c, appdomain.h,
16179         profiler-private.h, monitor.c, object.c, object-internals.h,
16180         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
16181         store the thread ID, so it can hold a 64 bit value if needed.
16182
16183 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16184
16185         * reflection.c (mono_reflection_create_dynamic_method): Store the
16186         handle class into the method references as well so ldtoken works in
16187         dynamic methods.
16188
16189         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
16190         types.
16191
16192 2005-08-19  Ankit Jain <jankit@novell.com>
16193
16194         Fix #75847.
16195         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
16196           here rather than using the method signature of a arbitrary function
16197           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
16198           two arguments.
16199           Hack done with Harinath.
16200
16201 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16202
16203         * threadpool.c: disable printing stack traces when we get a exception
16204         in a threadpool thread. I need to do more testing to figure out which
16205         cases actually print this. Fixes bug #75828.
16206
16207 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16208
16209         * icall.c: there might be ignored whitespace after the last '='. This
16210         fixes length computation and bug #75840.
16211
16212 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
16213
16214         * assembly.c (mono_assembly_load_full): Consider .exe extension as
16215         well. Fixes #75809.
16216
16217         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
16218         #75784.
16219         
16220         * reflection.c (create_custom_attr_data): Ditto.
16221
16222 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
16223
16224         * locales.c, culture-info.h : removed RegionLCIDMap.
16225         * culture-info-tables.h : regenerated.
16226
16227 2005-08-16  Martin Baulig  <martin@ximian.com>
16228
16229         * class.c (mono_type_get_name_recurse): Small fix.
16230
16231 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
16232
16233         * locales.c : indentation fixie.
16234
16235 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
16236
16237         * object-internals.h,
16238           locales.h,
16239           locales.c,
16240           culture-info.h,
16241           icall.c : added RegionInfo table support.
16242         * culture-info-table.h : regenerated for region support.
16243
16244 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
16245
16246         * reflection.c (resolve_object): handle all kinds of MonoMethod
16247         including generic ones
16248
16249 2005-08-12  Ankit Jain <jankit@novell.com>
16250
16251         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
16252           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
16253
16254 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
16255
16256         * process.c: Don't close a thread handle when it's NULL. This is a
16257         workaround for bug #75733.
16258
16259 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16260
16261         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
16262
16263 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
16264
16265         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
16266
16267 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16268
16269         * threadpool.c: if a work item in the thread pool has a callback that
16270         catches a exception, don't propagate it after invoking the callback.
16271         Fixes bug #75336.
16272
16273 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16274
16275         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
16276
16277         * class-internals.h (MonoCachedClassInfo): Add some new fields.
16278
16279         * class.c (mono_class_init): Load field info lazily in the AOT case.    
16280
16281         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
16282
16283 2005-08-03  Ankit Jain  <jankit@novell.com>
16284
16285         Fix #75683.
16286         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
16287           PInvoke calling convention is 0.
16288
16289 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
16290
16291         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
16292         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
16293
16294 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
16295
16296         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
16297         to handle threads not started by the GC (patch by Michael Meeks
16298         <michael.meeks@novell.com>).
16299
16300 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
16301
16302         * reflection.c: Make buffer used in emitting types larger for some
16303         big generic types (patch by Michal Moskal).
16304
16305 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16306
16307         * mono-debug.c: Fix some (not all) alignment problems.
16308
16309 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16310
16311         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
16312         Invoke mono_image_load_from_data_full passing the refonly
16313         parameter.
16314
16315         * assembly.c
16316         (mono_assembly_open_from_bundle): Add the refonly argument, 
16317         in order to pass it to other methods it calls to.
16318         (do_mono_assembly_open): Add the refonly argument, in order 
16319         to pass it to other methods it calls to.
16320         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
16321         the refonly parameter to it.
16322
16323         * image.c: Add loaded_images_refonly_hash and
16324         loaded_images_refonly_guid_hash to cache the reflection
16325         only loaded images.
16326         (mono_images_init): Initialize the hash tables used for
16327         caching the reflection only images.
16328         (load_modules): Invoke mono_image_open_full passing the refonly
16329         parameter to load the modules the correct way.
16330         (build_guid_table): Add the refonly argument, to re-build the 
16331         correct hash table.
16332         (do_mono_image_open): Added the refonly argument, in order to
16333         define it for the loaded image.
16334         (mono_image_loaded_full): New function, which receives an
16335         additional parameter to look for the image in the refonly or
16336         non-refonly section.
16337         (mono_image_loaded): Updated, using mono_image_loaded_full.
16338         (mono_image_loaded_by_guid_full): The same case that happens
16339         with mono_image_loaded_full.
16340         (mono_image_loaded_by_guid): Likewise.
16341         (register_image): Use the ref_only variable inside MonoImage
16342         to decide in which hash table store the current image.
16343         (mono_image_open_from_data_full): Rename
16344         mono_image_open_from_data to mono_image_open_from_data_full,
16345         adding the refonly argument, to define the ref_only variable 
16346         inside MonoImage.
16347         (mono_image_open_from_data): Return 
16348         mono_image_open_from_data_full.
16349         (mono_image_open_full): Rename mono_image_open to
16350         mono_image_open_full, receiving the new refonly argument,
16351         to pass it to inner methods.
16352         (mono_pe_file_open): Update this function, to open
16353         a MonoImage as a non-refonly image.
16354         (mono_image_close): Use the refonly variable inside
16355         MonoImage to remove the image from the correct caches.
16356
16357         * image.h: Add the signatures of mono_image_open_full,
16358         mono_image_open_from_data_full, mono_image_loaded_full,
16359         mono_image_loaded_by_guid_full.
16360
16361         * metadata-internals.h: Add the ref_only field to 
16362         MonoImage.
16363         
16364 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16365
16366         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
16367         Fix the last behavior, which used to load the assemblies and
16368         extract MonoReflectionAssemblyName information, instead of
16369         extract it from the metadata tables. Needed for Reflection
16370         Only assemblies.
16371         
16372 2005-07-29  Martin Baulig  <martin@ximian.com>
16373
16374         * mono-debug-debugger.c
16375         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
16376         not initialized.
16377
16378         * mono-debug.c
16379         (mono_debug_address_from_il_offset): Check whether we have
16380         debugging support before attempting to take the lock.
16381         (mono_debug_source_location_from_address): Likewise.
16382         (mono_debug_source_location_from_il_offset): Likewise.
16383         (mono_debug_il_offset_from_address): Likewise.
16384         (mono_debug_address_from_il_offset): Likewise.
16385
16386 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
16387
16388         * class.c (mono_class_from_name_case): Add support for dynamic images.
16389         Fixes #75650.
16390
16391         * object.c (mono_class_compute_gc_descriptor): Add a workaround
16392         for #75479.
16393
16394 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16395         
16396         * reflection.c (mono_method_get_object): Fix warning.
16397
16398 2005-07-28  Martin Baulig  <martin@ximian.com>
16399
16400         * mono-debug.c
16401         (mono_debug_add_wrapper): Also write the wrapper type.
16402
16403 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16404
16405         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
16406         
16407         * class.c (mono_class_init): Avoid reading nested classes if the AOT
16408         data indicates the class has none.
16409
16410 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
16411
16412         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
16413         loader lock with the debugger lock. Prevents deadlocks for beagle.
16414
16415         Beagle can now run on an smp box for a weekend without any
16416         issues. Woohoo!
16417
16418 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
16419
16420         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
16421         in a module. Fixes #75629.
16422
16423 2005-07-26  Martin Baulig  <martin@ximian.com>
16424
16425         * mono-debug.c (mono_debug_add_wrapper): New static method.
16426         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
16427         interncall or a wrapper.
16428
16429         * mono-debug.h (MonoDebugWrapperData): New public typedef.
16430         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
16431         (MONO_DEBUGGER_VERSION): Bump to 51.
16432
16433         * mono-debug-debugger.c
16434         (mono_debugger_add_type): Removed this empty function.
16435         (mono_debugger_add_method): Likewise.
16436
16437 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16438
16439         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16440         before accessing method->slot.
16441
16442 2005-07-21  Jb Evain  <jbevain@gmail.com>
16443
16444         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16445         Fixes #75010.
16446
16447 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16448
16449         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16450         #75587.
16451
16452 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16453
16454         * image.h image.c: Add mono_image_get_guid () API function.
16455
16456 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16457
16458         There were issues when multiple threads tried to load
16459         assemblies. A deadlock was created between assemblies_mutex and
16460         mono_domain_assemblies_lock. This fixes the issue by making the
16461         assembly ref counting be lock free. See bug 75586.
16462         
16463         * image.c (mono_image_close): The add ref function here was using
16464         Interlocked operations while the unref was using a mutex and a
16465         --. I don't think this was ever a bug that would be exposed in a
16466         non-pendantic way (ie, by an embedder doing a ref on one thread
16467         and an unref on another), but for the sake of correctness, this is
16468         now Interlocked.
16469
16470         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16471         (mono_assembly_load_reference): Call mono_assembly_addref rather
16472         than touching the refcount ourselves.
16473         (mono_assembly_close): Use InterlockedDecrement to unref the
16474         assembly. Don't acquire the lock unless it is actually needed.
16475
16476 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16477
16478         * class.c (mono_class_layout_fields): Fix calculation of has_references
16479         for generic types.
16480
16481 2005-07-12  Martin Baulig  <martin@ximian.com>
16482
16483         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16484
16485         * metadata.c
16486         (mono_type_hash): Provide better hashing for generic instances.
16487         (mono_generic_inst_hash): Improve hashing.
16488         (mono_generic_class_hash): Likewise.
16489
16490         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16491         generic instances.
16492
16493 2005-07-12  Martin Baulig  <martin@ximian.com>
16494
16495         * reflection.c (mono_reflection_create_runtime_class): Remove the
16496         hack for generic type definitions and non-`Run' assemblies.
16497         (mono_reflection_bind_generic_parameters): Also use
16498         `klass->wastypebuilder' to check for TypeBuilders.
16499
16500 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16501
16502         * class.c (mono_class_layout_fields): Fix calculation of has_references
16503         for generic types.
16504
16505         * class.c (inflate_generic_class): Fix a leak.
16506         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16507         for generic types.
16508
16509 2005-07-11  Martin Baulig  <martin@ximian.com>
16510
16511         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16512         on error.
16513
16514 2005-07-11  Martin Baulig  <martin@ximian.com>
16515
16516         * loader.c (find_method): Also lookup in
16517         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16518
16519 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * appdomain.c (mono_domain_unload): Don't free the error message
16522         before passing it to mono_get_exception_...
16523
16524         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16525         
16526 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16527
16528         * threads.c: try to better guess an available RT signal (bug #75387).
16529
16530 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16531
16532         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16533         and CACHE_OBJECT.
16534
16535 2005-07-07  Martin Baulig  <martin@ximian.com>
16536
16537         * class.c (mono_type_get_name_full): Return NULL for
16538         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16539         fixes #75408.
16540
16541 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16544         exit the appdomain as well being aborted.
16545
16546         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16547         change back to the root domain after calling managed code. This enables
16548         appdomains using threadpools to be unloaded.
16549
16550 2005-07-07  Martin Baulig  <martin@ximian.com>
16551
16552         * class-internals.h
16553         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16554         into `MonoDynamicGenericClass' since we only need it for dynamic
16555         types.
16556
16557         * reflection.c (mono_class_bind_generic_parameters): We don't need
16558         to compute the `parent' here.
16559
16560 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16561
16562         * culture-info-table.h : regenerated.
16563
16564 2005-07-06  Martin Baulig  <martin@ximian.com>
16565
16566         * icall.c
16567         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16568
16569         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16570
16571 2005-07-06  Martin Baulig  <martin@ximian.com>
16572
16573         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16574         we're doing a signature-only comparision; fixes #74945.
16575
16576 2005-07-06  Martin Baulig  <martin@ximian.com>
16577
16578         * class-internals.h (MonoGenericClass): Moved some things out into
16579         a new `MonoInflatedGenericClass' type.  
16580         (MonoInflatedGenericClass): New type; the `klass' of a
16581         `MonoGenericClass' is now computed lazyly in
16582         mono_get_inflated_generic_class().      
16583
16584         * class.c (mono_get_inflated_generic_class): New public function.
16585         (mono_class_inflate_generic_method): Removed the unused
16586         `MonoClass *' argument.
16587         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16588         all the methods.
16589         (mono_class_create_generic): Make this static and merge it with
16590         mono_class_create_generic_2(); we're now called automatically from
16591         mono_get_inflated_generic_class().
16592
16593         * loader.c (mono_method_signature): Call
16594         mono_get_inflated_method() here.
16595
16596 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16597
16598         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16599         type of fields with RVA.
16600
16601         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16602         for this pseudo class.
16603         (my_mono_class_from_generic_parameter): Likewise.
16604         (mono_class_init): Allow interfaces to have cctors.
16605
16606 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16607
16608         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16609         lazily for AOT methods.
16610
16611 2005-07-05  Martin Baulig  <martin@ximian.com>
16612
16613         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16614         returns FALSE for a successful match, not TRUE.
16615
16616 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16617
16618         * loader.c (mono_method_get_index): Optimize this a bit.
16619
16620 2005-07-04  Martin Baulig  <martin@ximian.com>
16621
16622         * class.c
16623         (class_compute_field_layout): Move the check for generic type
16624         definitions into mono_class_layout_fields().  Fixes #74684.
16625         (mono_class_from_generic_parameter): Correctly compute
16626         `klass->parent'; fixes #75457.
16627
16628         * reflection.c (register_assembly, register_module): Make sure
16629         `domain->rejobject_hash' is already created.
16630
16631 2005-07-02  Martin Baulig  <martin@ximian.com>
16632
16633         * class-internals.h
16634         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16635         `MonoDynamicGenericClass'.      
16636
16637 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16638
16639         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16640         returned by a field getter is null, since null is a valid value.
16641
16642 2005-07-01  Martin Baulig  <martin@ximian.com>
16643
16644         * reflection.c (mono_reflection_generic_class_initialize): Update
16645         the `dgclass->fields [i].parent' to the correct class.
16646         (mono_image_get_fieldref_token): Use the declaring type, not the
16647         reflected type.
16648
16649 2005-07-01  Martin Baulig  <martin@ximian.com>
16650
16651         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16652
16653 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16654
16655         * threads.c (thread_cleanup): assert that thread != NULL
16656         (wait_for_tids_or_state_change): We were using the wrong variable
16657         when accessing wait->threads. `i' was always out of the bounds of
16658         the array.
16659
16660 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16661
16662         * loader.c: map user32 and kernel32 to libMonoSupportW
16663
16664 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16665
16666         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16667
16668 2005-06-28  Martin Baulig  <martin@ximian.com>
16669
16670         * loader.c (method_from_methodspec): Fix #75334.
16671
16672 2005-06-28  Martin Baulig  <martin@ximian.com>
16673
16674         Fix #74953 - Arrays now implement the generic IList<T> interface
16675         on the 2.0 platform.
16676
16677         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16678
16679         * reflection.c (mono_class_bind_generic_parameters): New public
16680         function; similar to mono_reflection_bind_generic_parameters(),
16681         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16682
16683         * domain.c (mono_init_internal): Try to initialize.
16684         `mono_defaults.generic_array_class' here; this'll only succeed if
16685         we're using the 2.0 corlib.
16686
16687         * icall.c
16688         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16689         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16690         (mono_lookup_internal_call): Added support for nested classes.
16691
16692         * loader.c
16693         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16694         we're an interncall and have generic arguments.
16695
16696         * class.c
16697         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16698         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16699         instance of System.Array.InternalArray<T> for arrays, so they
16700         implement the generic IList<T> interface.
16701
16702 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16703
16704         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16705         (chastamar@yahoo.com). Fixes #75374.    
16706
16707 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16708
16709         * culture-info-table.h: regenerated.
16710
16711 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16712
16713         * icall.c: handle spaces correctly for base64 strings.
16714
16715 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16716
16717         * *.c: Kill some warnings.
16718
16719 2005-06-23  Duncan Mak  <duncan@novell.com>
16720
16721         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16722         that this builds on Solaris 10 (x86).
16723
16724 2005-06-23  Martin Baulig  <martin@ximian.com>
16725
16726         * class.c
16727         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16728         generic type definitions.
16729
16730 2005-06-23  Martin Baulig  <martin@ximian.com>
16731
16732         Fix #75331.
16733
16734         * metadata.c (mono_class_get_overrides): Renamed to
16735         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16736         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16737         pass it to mono_get_method_full().
16738
16739 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16740
16741         * reflection.c (mono_reflection_create_runtime_class): take the
16742         mono_domain_lock in this method. Prevents deadlocks
16743
16744 2005-06-22  Martin Baulig  <martin@ximian.com>
16745
16746         * loader.c (method_from_methodspec): Fix #75330.
16747
16748 2005-06-22  Martin Baulig  <martin@ximian.com>
16749
16750         * reflection.c (type_get_qualified_name): Use
16751         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16752         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16753         argument; use it if we don't have an assembly name.
16754
16755 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16756
16757         * object.c: In mono_message_init, set "copy out" flag for in
16758         parameters with the [Out] flag.
16759
16760 2005-06-21  Martin Baulig  <martin@ximian.com>
16761
16762         * class.c
16763         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16764         and MONO_TYPE_PTR.
16765
16766 2005-06-21  Martin Baulig  <martin@ximian.com>
16767
16768         * class.c (mono_class_init): Don't initialize `class->fields' for
16769         generic instances since they're initialized again in
16770         compute_field_layout(). 
16771         (compute_field_layout): Set the field's `generic_info' here; fix
16772         #75320. 
16773
16774 2005-06-21  Martin Baulig  <martin@ximian.com>
16775
16776         * class-internals.h
16777         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16778
16779         * metadata.c (mono_metadata_generic_method_equal): Also
16780         distinguish the `generic_class'; fixes #75334.
16781
16782 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16783
16784         * domain.c:
16785         * appdomain.c:
16786         * domain-internals.h:
16787         * reflection.c: 'domain_assemblies' field is now protected by its own
16788         lock. Don't call into managed code to run the AssemblyLoad event if we
16789         now there are no registered delegates for it.
16790
16791 2005-06-20  Martin Baulig  <martin@ximian.com>
16792
16793         * class.c (mono_class_is_assignable_from): Use a custom version of
16794         mono_class_has_parent() to make things work for generic instances;
16795         fix #75300.
16796
16797 2005-06-20  Martin Baulig  <martin@ximian.com>
16798
16799         * loader.c (method_from_methodspec): Apply a patch from
16800         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16801
16802 2005-06-20  Martin Baulig  <martin@ximian.com>
16803
16804         * class.c (mono_class_init): Reverted Zoltan's last change; it
16805         breaks generics.
16806
16807 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16808
16809         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16810
16811 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16812
16813         * socket-io.c: fix the index in the socket array for writable/error
16814         sockets. Fixes bug #75306.
16815
16816 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16817
16818         * class.c (mono_class_init): Allow interfaces to have static ctors.
16819
16820 2005-06-17  Martin Baulig  <martin@ximian.com>
16821
16822         * loader.c (method_from_methodspec): Use `context->container' when
16823         parsing the `gmethod->inst'.
16824
16825 2005-06-17  Martin Baulig  <martin@ximian.com>
16826
16827         * class.c (mono_type_get_name_recurse): Don't add the assembly
16828         name for type arguments.
16829
16830 2005-06-15  Martin Baulig  <martin@ximian.com>
16831
16832         * reflection.c (mono_image_get_inflated_method_token): Encode
16833         correct klass; fixes #75260.
16834
16835 2005-06-13 Michal Moskal <malekith@nemerle.org>
16836
16837         * icall.c: Make GetCorrespondingMethod/Constructor take
16838         MonoReflectionMethod method not MonoMethod. Removed
16839         MonoType.GetCorrespondingField, and make
16840         MonoGenericType.GetCorrespondingField take name not
16841         MonoClassField.
16842
16843 2005-06-13  Michal Moskal <malekith@nemerle.org>
16844
16845         * reflection.c (field_encode_signature, encode_locals):
16846          Make sizes of buffers for types larger (for big generic types).
16847          (create_generic_typespec,
16848          mono_reflection_sighelper_get_signature_local,
16849          mono_reflection_sighelper_get_signature_field):
16850          Add asserts for too small buffers.
16851
16852 2005-06-15  Martin Baulig  <martin@ximian.com>
16853
16854         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16855         if our parent is not a dynamic type.
16856
16857 2005-06-15  Martin Baulig  <martin@ximian.com>
16858
16859         * class-internals.h (MonoTypeNameFormat): New enum.
16860
16861         * class.c
16862         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16863         (mono_type_get_full_name): Removed.
16864         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16865         argument instead of the boolean's.
16866
16867         * icall.c (ves_icall_System_MonoType_getFullName):
16868         Added `gboolean assembly_qualified'.    
16869
16870         * reflection.h
16871         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16872
16873         * reflection.c (mono_reflection_parse_type): Parse the new type
16874         name format.
16875
16876 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16877
16878         * icall.c: no need to convert from utf16 to utf8 and then back again
16879         after the call to GetLogicalDrives.
16880
16881 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16882
16883         * icall.c: frombase64. Fix problems exposed by new tests.
16884
16885 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16886
16887         * icall.c: added internal calls for converting char [] and strings in
16888         base64 into byte [].
16889
16890 2005-06-10  Martin Baulig  <martin@ximian.com>
16891
16892         * class.c (mono_class_create_generic_2): Read the nested classes
16893         from the metadata rather than from `gklass->nested_classes' since
16894         `gklass' might not be initialized yet.
16895
16896 2005-06-09  Duncan Mak  <duncan@novell.com>
16897
16898         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16899         all public headers. Fixes #74919.
16900
16901 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16902
16903         * domain.c: The key for proxy_vtable_hash is now a pointer
16904         array. Added new GHashFunc and GCompareFunc functions for this.
16905
16906         * class.h: The list of interfaces in MonoRemoteClass is known in
16907         advance and can't grow (we create a new MonoRemoteClass if needed),
16908         so now the interface array can be allocated together with
16909         MonoRemoteClass.
16910         
16911         * object.c: Added a new method create_remote_class_key.
16912         Fixed mono_remote_class so it does not depend on
16913         mono_upgrade_remote_class.
16914         Removed extend_interface_array.
16915         Added new method clone_remote_class(), which makes a copy of a remote
16916         class and adds a new interface or class to it.
16917         mono_upgrade_remote_class() now creates a new remote class (or gets
16918         it from the cache) if an vtable upgrade is needed. In this way
16919         we make sure that other objects sharing the same remote class
16920         don't get the new vtable with unwanted interfaces.
16921         
16922         * object-internals.h:
16923         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16924         
16925         * marshal.c: Track changes in mono_upgrade_remote_class().
16926
16927 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16928         * icall.c: Add runtime methods for obtaining members of inflated
16929         class, which were created from supplied non-inflated members. It
16930         is used in internal Get{Method,Constructor,Field} methods in
16931         System.Type
16932
16933 2005-06-09  Martin Baulig  <martin@ximian.com>
16934
16935         * reflection.c
16936         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16937
16938 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16939         * reflection.c (mono_image_basic_init): Define
16940         Version in MonoDynamicAssembly. 
16941         
16942 2005-06-08  Martin Baulig  <martin@ximian.com>
16943
16944         Fix #75136.
16945
16946         * loader.c
16947         (mono_method_signature_full): New public method; takes a
16948         `MonoGenericContext *'.
16949         (find_method): Use mono_method_signature_full() and pass the
16950         klass'es context to it.
16951
16952         * class.c (mono_class_is_inflated_method): Use
16953         mono_method_signature_full() and pass the context to it.
16954
16955 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16956
16957         * object.c: add proper locking in mono_remote_class_vtable(),
16958         fixes possible memory corruption.
16959
16960 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16961
16962         * marshal.c (mono_remoting_marshal_init): set
16963         initialized after initialization.
16964
16965 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16966
16967         * locales.c : hush.
16968
16969 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16970
16971         * object.c (extend_interface_array): fix really silly
16972         memory corrupting / comparison bug.
16973
16974 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16975
16976         * reflection.c: Functions added to support the creation
16977         of CustomAttributeData, which includes Attribute data
16978         used by ReflectionOnly methods.
16979
16980         * reflection.h:  mono_reflection_get_custom_attrs_data and
16981          mono_custom_attrs_data_construct added (functions exposed).
16982
16983          * icall.c: Added mono_reflection_get_custom_attrs_data
16984          as icall.
16985         
16986 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16987
16988         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16989         lupus's request.
16990
16991 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16992
16993         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16994
16995         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16996         dynamic DllImportAttribute.
16997
16998         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16999         dynamic DllImportAttribute.
17000
17001         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
17002         Fixes #75162.
17003
17004 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17005
17006         * threads.c: avoid segfault when an unstarted thread is aborted.
17007
17008 2005-06-05  KornĂ©l PĂ¡l <kornelpal@hotmail.com>
17009
17010         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
17011         Returns the name and version of the runtime for reporting.
17012
17013 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17014
17015         * appdomain.c: bump corlib version.
17016         * object-internals.h: new field in MonoReflectionAssembly.
17017
17018 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17019
17020         * object-internals.h: Carlos forgot to add this field.
17021
17022 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17023
17024         * icall.c: Added create_version to create instances
17025         of Version of MonoReflectionAssemblyName. This change helps
17026         the AssemblyName tests to keep running fine.
17027         
17028 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
17029   
17030         * object.c (mono_method_return_message_restore): A somehow less
17031         intrusive fix for #75138.
17032
17033 2005-06-03  Raja R Harinath  <rharinath@novell.com>
17034
17035         * object.c (mono_method_return_message_restore): Fix computation
17036         of expected number of out args.
17037
17038 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * reflection.c (mono_image_get_method_info): Fix the case when the
17041         charset is empty.
17042
17043 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
17044
17045         * object.c: Added missing null check in
17046           mono_method_return_message_restore.
17047
17048 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
17049
17050         * reflection.c (mono_image_get_method_info): Handle the case when
17051         dllentry is empty.
17052
17053 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
17054
17055         * object.c: When creating the vtable for a proxy, take into account
17056         all inherited interfaces, not only the ones registered in
17057         iclass->interfaces. This fixs bug #74996.
17058         Also, in mono_method_return_message_restore, verify that the array
17059         of out args has the expected lengh.
17060
17061 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17062
17063         * socket-io.c: update the timeout in Poll when the call is interrupte.
17064
17065 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17066
17067         * socket-io.c: support abort/suspend in Select_internal after last
17068         change.
17069
17070 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17071
17072         * threadpool.c: remove warning.
17073
17074 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17075
17076         * icall.c:
17077         * socket-io.[ch]: Select_internal uses poll() now when available, thus
17078         removing the 1024 limit from select(). Runtime part of the fix for
17079         bug #71203.
17080
17081 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17082
17083         * socket-io.c: when resolving the addresses for the same
17084         host returned by gethostname(), get the local IPs from the interface
17085         list. Loopback addresses are discarded if the are interfaces up with
17086         non-loopback ones. Fixes bug #63265.
17087
17088 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
17089
17090         * appdomain.c, verify.c, object-internals.h, reflection.c:
17091         bumped corlib number to 36, and added new extra_flags field
17092         to ReflectionMethodBuilder and friends.  Fixes #75060.
17093
17094 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
17095
17096         * gc.c: register a new weak link only if the object is non-null
17097         (fixes bug#75047).
17098
17099 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17100
17101         * culture-info.h : short time pattern too.
17102
17103 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17104
17105         * culture-info.h : expand long time pattern string length.
17106
17107 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17108
17109         * culture-info-table.h : update (more French date format; #72788).
17110
17111 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
17112
17113         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
17114         the method is static. Fixes #75029.
17115
17116 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
17117
17118         * reflection.c: Update the table_idx field of method builders after
17119         saving the module, since it can change. This is a workaround for
17120         bug #74914. 
17121
17122 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17123
17124         * culture-info-table.h : update (additional French date format).
17125
17126 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17127
17128         * icall.c (ves_icall_type_Equals): Revert last change.
17129         
17130         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
17131
17132         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
17133
17134 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
17135
17136         * class-internals.h: Added executioncontext_class field to 
17137         MonoDefaults structure.
17138         * domain.c: Cache System.Threading.ExecutionContext class in 
17139         mono_defaults.
17140         * object.c: Capture the ExecutionContext for asynchroneous calls in
17141          mono_async_result_new.
17142         * object-internals.h: Added execution_context and original_context 
17143         fields to MonoAsyncResult. Added execution_context to MonoThread.
17144         * security-manager.c|.h: Added mono_get_context_capture_method to 
17145         return the capture method (if required by the security manager or by
17146         the framework version used).
17147         * threadpool.c: Apply capture (if present) ExecutionContext in 
17148         mono_async_invoke and revert to original context after it completes.
17149
17150 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
17151
17152         * culture-info-table.h : updated (real hacky solution for zh-CHT).
17153
17154 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
17155
17156         * culture-info-table.h : zh-CHT related workaround.
17157
17158 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
17159
17160         * marshal.c (emit_marshal_custom): Add some error checking and call the
17161         methods in the ICustomMarshaler interface. Fixes #74875.
17162         
17163         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
17164         native->managed wrappers.
17165
17166 2005-05-12  Martin Baulig  <martin@ximian.com>
17167
17168         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
17169         here and use the loader lock.
17170
17171         * mono-debug.c: Properly lock when the debugger is not attached.
17172         (mono_debug_init): Release the initial lock if we're not running
17173         in the debugger.
17174
17175 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
17176
17177         * marshal.c (emit_marshal_custom): Pass through NULL values without
17178         calling the custom marshalling routines.
17179
17180         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
17181         conversion in structures. Fixes #74882.
17182
17183 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
17184
17185         * culture-info-table.h : zh-* cultures were missing.
17186
17187 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
17188
17189         * threads.c: Added a new event background_change_event which is signaled
17190         when a thread changes its background mode.
17191         Moved here several checks previously done in managed code. The checks
17192         require the thread lock, and using the thread lock in managed code
17193         can result in deadlocks.
17194         Merged Start_internal and Thread_internal into a single method. Now 
17195         Thread_internal does all work of creating and starting a thread.
17196         Added icalls for setting and getting the state of the object. Moved from
17197         managed code to avoid locking there.
17198         Added wait_for_tids_or_state_change() which is called instad of
17199         wait_for_tids when waiting for non-backround threads to end. This method
17200         will return if one of the threads ends or the background_change_event
17201         is signaled.
17202         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
17203         the background mode. This method signals the background_change_event
17204         event.
17205         * icall.c:
17206         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
17207         removed Start_internal.
17208         
17209 2005-05-11  Martin Baulig  <martin@ximian.com>
17210
17211         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
17212         to order of some fields to get proper alignment on 64-bit machines.
17213
17214 2005-05-11  Martin Baulig  <martin@ximian.com>
17215
17216         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
17217         changes as they're broken and completely fuck up the debugger.
17218
17219         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
17220
17221 2005-05-10  Martin Baulig  <martin@ximian.com>
17222
17223         * reflection.c (mono_reflection_generic_class_initialize): Don't
17224         call mono_class_setup_parent() here.
17225
17226 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17227
17228         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
17229         send/receive timeout use an integer in milliseconds. We were using a
17230         struct timeval.
17231
17232 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17233
17234         * locales.c:
17235         (internal_get_cultures): reserve the first slot of the array for the
17236         InvariantCulture, which will be filled in managed code.
17237
17238 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * reflection.c (mono_image_fill_module_table): Initialize the
17241         GENERATION field as well.
17242
17243 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17244
17245         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
17246         Monitor.Enter on the object.
17247
17248 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17249
17250         * threads.c: Enable the wait for running threads when exiting.
17251         * icall.c: Suspend all threads before exiting.
17252
17253 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17254
17255         * assembly.c (mono_assembly_load_reference): Fix warning.
17256
17257 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17258
17259         * threadpool.c: changed the default number of threads per cpu. From now
17260         on, the default will be 20 + (5 * number of cpus) instead of 50.
17261
17262 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
17263
17264         * loader.c (mono_method_get_signature_full): Add locking here.
17265
17266 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
17267
17268         * appdomain.c: Moved methods for parsing and freeing assembly
17269         names to assembly.c.
17270         * assembly.c, domain-internals.h: Created public methods for parsing
17271         assembly names. Fixed mono_assembly_load_with_partial_name:
17272         it now finds the best match, taking into account the version,
17273         token and culture specified in the partial name. Also return
17274         the latest version if no version information is specified.
17275
17276 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
17277
17278         * threadpool.c: replace check for SocketAsyncCall class.
17279
17280 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17281
17282         * threadpool-internals.h:
17283         * Makefile.am: added threadpool-internals.h
17284
17285         * threadpool.c: call mono_unhandled_exception on exceptions not handled
17286         that happen in threadpool threads (tested on MS).
17287         (mono_thread_pool_remove_socket): new function that dispatch any pending
17288         AIO call on a socket that is closing. By now only epoll really needs it,
17289         as select/poll wake up when the socket closes.
17290
17291
17292         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
17293
17294 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
17295
17296         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
17297
17298 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
17299
17300         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
17301
17302 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
17303
17304         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
17305         has an abort request, convert it into a suspend request.
17306
17307 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
17308
17309         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
17310         warning for the usage of `UnmanagedFunctionPointerAttribute' which
17311         is not supported yet.
17312
17313 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17314
17315         * image.c: register assemblies loaded from data (bundles) in the loaded
17316         assemblies hash. Fixes bug #74772.
17317
17318 2005-04-29  Martin Baulig  <martin@ximian.com>
17319
17320         * class.c (mono_type_get_name_recurse): Update to the new naming
17321         schema from the latest .NET 2.x beta2.
17322         (mono_class_setup_vtable_general): If we're a generic instance,
17323         copy the vtable from our generic type definition and inflate all
17324         the methods in it.
17325
17326         * loader.c (find_method): Update to the new naming schema from the
17327         latest .NET 2.x beta2.
17328
17329 2005-04-29  Raja R Harinath  <harinath@gmail.com>
17330
17331         * class.c (mono_class_init): Add a mono_loader_unlock to the
17332         #74734 fix.
17333
17334 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17335
17336         * icall.c (ves_icall_System_Environment_Exit): Remove the 
17337         suspend_all_other_threads () call for the time being, since it can hang.
17338
17339         * threads.c (mono_thread_manage): Similarly, disable the waiting for
17340         the background threads to exit, since it can also hang.
17341
17342         * class.c (mono_class_init): Applied patch from Ankit Jain 
17343         (radical@gmail.com). Avoid pending init errors when a field refers
17344         to a nested class using a typeref. Fixes #74734.
17345
17346         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
17347         this for dynamic modules.
17348
17349 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17350
17351         * threads.c: don't wait for threads that are in the process of aborting
17352         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
17353         and waiting for background threads to finish. This makes xsp and
17354         mod-mono-server exit without random length delays and/or hangs.
17355
17356 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17357
17358         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
17359
17360 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
17361
17362         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
17363         dynamic types to prevent infinite loops. Fixes #74727.
17364
17365         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
17366         ..._is_assignable_to.
17367
17368 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
17369
17370         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
17371
17372 2005-04-25  Martin Baulig  <martin@ximian.com>
17373
17374         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
17375
17376         * domain.c
17377         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
17378
17379         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
17380
17381         * reflection.c (build_compressed_metadata): Set metadata header
17382         version to 2.0.
17383
17384 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17385
17386         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
17387         number into an integral and a decimal part. Fixes #70473.
17388
17389         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
17390
17391 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
17392
17393         * culture-info-table.h : reflected the latest locale-builder output.
17394
17395 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17396
17397         * threadpool.c: check for SuspendRequested too when deciding if
17398         mono_thread_interruption_checkpoint should be called.
17399
17400 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17401
17402         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
17403         * threads.c: remove interruption_mutex and use Interlocked instead. When
17404         suspending all the threads, wait for all the suspended events at once.
17405         If we're shutting down and get an APC that is going to be queued,
17406         call mono_thread_execute_interruption immediately, as the thread might
17407         be sleeping on a pthread condition or mutex.
17408
17409         * icall.c: call mono_runtime_set_shutting_down before suspending the
17410         threads.
17411
17412         Fixes bug #74693. And now xsp is happier when exiting.
17413
17414 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17415
17416         * loader.c (mono_stack_walk): Fix #74690.
17417
17418 2005-04-22  Martin Baulig  <martin@ximian.com>
17419
17420         * mono-debug.h (MonoDebugMethodJitInfo): Added
17421         `MonoDebugMethodJitInfo *jit'.
17422
17423         * mono-debug.c (mono_debug_read_method): Cache the
17424         MonoDebugMethodJitInfo in `address->jit'.
17425         (mono_debug_free_method_jit_info): New public method.
17426
17427 2005-04-22  Martin Baulig  <martin@ximian.com>
17428
17429         * class.c (mono_class_is_assignable_from): Disallow
17430         type parameter -> interface.
17431
17432 2005-04-21  Dick Porter  <dick@ximian.com>
17433
17434         * threads.c (mono_thread_create): Turn an assertion into an error.
17435
17436 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17437
17438         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17439         
17440         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17441         Fix some gcc 4.0 warnings.
17442
17443 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17444
17445         * file-io.c: fix alt dir separator char on unix systems
17446         and cleanup (fixes bug #71214).
17447
17448 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17449
17450         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17451         a call to a remote domain, since the method may be an
17452         interface method in the client domain. This fixes bug #74192.
17453
17454 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17455
17456         * threadpool.c: recv/send are now performed before going back to managed
17457         code to save one transition.
17458
17459 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17460
17461         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17462
17463         * metadata/threadpool.c: removed hack to workaround the bug above.
17464
17465         Fixes bug #74618.
17466
17467 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17468
17469         * reflection.c reflection.h: Fix handling of parameter defaults in
17470         dynamic methods. Also fixes handling of parameter attributes.
17471         Fixes #74609.
17472
17473         * mono-debug.c (mono_debug_close_image): Fix warning.
17474
17475 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17476
17477         * socket-io.h: replaced old unused field with new 'blocking'.
17478         * threadpool.c: restore socket blocking state on windows(tm).
17479
17480 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17481
17482         * icall.c: don't return the codebase in the AssemblyName[] returned by
17483         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17484         * object-internals.h: Removed FIXME (fields were presents) and fixed
17485         versioncompat declaration.
17486
17487 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17488
17489         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17490         not closed, so don't cleanup when it happens.
17491
17492 2005-04-13  Chris Toshok  <toshok@ximian.com>
17493
17494         * mono-debug-debugger.h: change prototype for
17495         mono_debugger_lookup_type.
17496
17497         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17498         this function, although it should probably be named
17499         mono_debugger_init_type.
17500
17501 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17502
17503         * threadpool.c: fix non-AIO case.
17504
17505 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17506
17507         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17508         the built-in profiler to measure just JIT compilation times.
17509
17510 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17511
17512         * threadpool.c: the epollfd might be closed by another thread at
17513         any time, so ignore EBADF at treat it as a "we're closing" sign.
17514
17515 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17516
17517         * threadpool.c: release the semaphores with a count equals to the number
17518         of working threads in both IO and regular pools. Fixed typo that messed
17519         up the count of IO pool threads. Don't initialize the pipe handles if
17520         we're using epoll.
17521
17522 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17523
17524         * threadpool.c: some systems don't like a NULL when deleting the socket
17525         from epoll.
17526
17527 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17528
17529         * threadpool.c: fix semaphore allocation.
17530
17531 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17532
17533         * threadpool.c: added epoll() based implementation for asynchronous IO
17534         that is used instead of the default poll() when available.
17535         It can be disabled by setting MONO_DISABLE_AIO.
17536
17537 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17538
17539         * threadpool.c: windows needs 'closesocket' and instead of returning
17540         0 when the stream is closed while in select, it returns -1. Fixes bug
17541         #74573.
17542
17543 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17544
17545         * class.c (class_compute_field_layout): Fix the regression caused by
17546         the previous try.
17547
17548 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17549
17550         * threadpool.c: separate pool for socket async. IO.
17551         * threadpool.h: mono_max_worker_threads is not a global any more.
17552
17553 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17554
17555         * class.c (class_compute_field_layout): Fix #74549.
17556
17557 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17558
17559         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17560         use 2 connected sockets instead.
17561
17562 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17563
17564         * mono-config.c: Add new entry point for mkbundle
17565         mono_config_parse_memory. 
17566
17567 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17568
17569         * threadpool.c: removed another unused function.
17570
17571 2005-04-08  Ankit Jain  <radical@corewars.org>
17572
17573         * reflection.c (get_default_param_value_blobs): Add 'types'
17574         parameter to get the types encoded in the constant table.
17575         (mono_param_get_objects): Use the type from the constant table,
17576         not the type of the parameter, when creating default values.
17577         Handle null default values correctly.
17578
17579 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17580
17581         * file-io.c:
17582         * file-io.h:
17583         * threadpool.c:
17584         * threadpool.h:
17585         * icall.c:
17586         * socket-io.c: removed dead code for async IO.
17587
17588 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17589
17590         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17591
17592         * threadpool.c: intercept socket async. calls and pass them to a thread
17593         that is polling and dispatching the job items to the threadpool as
17594         socket become ready. Fixes bugs #71217, #71933.
17595
17596         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17597         between char and short/ushort arrays.
17598
17599         * socket-io.c: remove dead code.
17600
17601 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17602
17603         * locales.c,
17604           icall.c : removed InternalToUpper_Comp() and
17605           InternalToLower_Comp().
17606
17607 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17608
17609         * char-conversions.h : The tables were incorrectly generated. Should
17610           be generated against invariant culture.
17611
17612 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * object.c (mono_runtime_invoke_array): Fix return value when 
17615         passing pre-created valuetype objects to ctors.
17616
17617         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17618         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17619         Fixes #74338.
17620
17621 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17622
17623         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17624         only used with --security and hides the wrong corlib version error.
17625
17626 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17627
17628         * class.c: Changed mono_class_name_from_token so that types
17629         outside of a namespace don't have an initial period.  Improved
17630         the g_warning message used in _mono_class_get when loading
17631         fails.
17632         * assembly.c: In mono_assembly_load_reference, when an assembly
17633         can't be found, "No such file or directory" is misleading and
17634         unhelpful because a few paths were checked for the presence of
17635         the assembly.  When that happens (ENOENT), display a nicer
17636         message indicating the directories that were searched.  In all
17637         cases, the warning is made easier to read for non-hackers.
17638
17639 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17640
17641         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17642         project/solution.
17643         * appdomain.h|domain.c: Removed inline from functions.
17644         * appdomain.c: Reduced warnings when compiling on windows.
17645         * icall.c: Fixed output_debug declaration to gunichar2*.
17646         * mono-config.c: Reduced warnings when compiling on windows.
17647         * rand.c: Added missing "windows.h". Added missing return value.
17648         * rawbuffer.c: Added missing winsock2.h for windows.
17649         * sysmath.h: Added mono-compiler.h header to allow/ease 
17650         compilation with non-GCC compilers.
17651         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17652         Removed cast warnings.
17653
17654         Adapted from the work of J Lothian (for VC6).
17655
17656 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17659         from default_path.
17660
17661 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17664         the 2.0 profile.
17665
17666 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17667
17668         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17669         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17670         stuff, and it would probably use $(prefix)/share rather than
17671         $(prefix)/lib.
17672
17673 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17674
17675         * console-io.c: added 2 includes that might be missing.
17676
17677 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17678
17679         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17680         profile.
17681
17682         * reflection.c (create_custom_attr): Allocate the params array using
17683         alloca so it gets GC tracking.
17684
17685 2005-03-23  Chris Toshok  <toshok@ximian.com>
17686
17687         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17688         out some spew.
17689
17690 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17691
17692         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17693         changes to pick up any changes in prefix, etc.
17694
17695 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17696
17697         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17698         
17699         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17700         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17701
17702 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17703
17704         * class-internals.h object-internals.h class.c reflection.c: Extend the
17705         mono_lookup_dynamic_token () function to return the class of the
17706         token as well. 
17707
17708         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17709         well. Fixes #73848.
17710
17711 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17712
17713         * security-manager.c: Skip inheritance checks for intra-corlib
17714         class inheritance and method overrides. This skips a lot of checks
17715         and (anyway) permissions cannot work until corlib is loaded.
17716
17717 2005-03-23  Martin Baulig  <martin@ximian.com>
17718
17719         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17720         MONO_TYPE_GENERICINST.  
17721
17722 2005-03-23  Martin Baulig  <martin@ximian.com>
17723
17724         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17725
17726 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17727
17728         * class.c: added locking comments to some functions.
17729         Cache the interface offsets arrays (saves about 20 KB
17730         of runtime memory in a typical app).
17731         Reduce the time overhead in mono_class_setup_supertypes ().
17732
17733 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17734
17735         * icall.c: speedup and fix leaks in GetMethodsByName and
17736         GetPropertiesByName.
17737
17738 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17739
17740         * reflection.c: some locking fixes.
17741
17742 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17743
17744         * metadata.c: added missing break in case statement.
17745
17746 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17747
17748         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17749         typedbyref return values. Fixes #73941.
17750
17751 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17752
17753         * security-manager.c|h: Added demandunmanaged method and 
17754         suppressunmanagedcodesecurity class to MonoSecurityManager.
17755         Renamed aptc class to allowpartiallytrustedcallers.
17756
17757 2005-03-17  Martin Baulig  <martin@ximian.com>
17758
17759         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17760
17761 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17762
17763         * file-io.c: disabled file async. IO using aio_*. It uses the
17764         threadpool now. Workaround for bug #73718.
17765
17766 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17767
17768         * assembly.h, mono-config.c: added code to deal with bundled configs
17769         for bundled assemblies.
17770
17771 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17772
17773         * *.c, private.h: cleanup, removing old private.h header file.
17774
17775 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17776
17777         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17778         and throw_on_unmappable_char attributes.
17779
17780 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17781
17782         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17783         _ProcessName_internal.
17784
17785 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17788         #73631.
17789
17790         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17791         are no longer used.
17792
17793 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * object.c (compute_class_bitmap): Add support for generics. Fixes
17796         #73527.
17797
17798 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17801
17802 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17803
17804         * filewatcher.c: commented out the code for windows watcher, as we don't
17805         use it (we use the managed implementation instead).
17806
17807 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * object-internals.h (MonoThread): Remove 'unused1' field.
17810
17811         * appdomain.c: Bump corlib version.
17812
17813         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17814
17815         * reflection.c (mono_reflection_create_runtime_class): Remove the
17816         AssemblyBuilder.Save optimization since it causes too many problems.
17817
17818 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17819
17820         * exception.c|h: Added mono_get_exception_reflection_type_load to
17821         create a ReflectionTypeLoadException object.
17822         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17823         to return NULL is a InheritanceDemand fails during reflection. Updated
17824         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17825         ReflectionTypeLoadException if an InheritanceDemand fails during 
17826         reflection. Added icall mapping for GetLinkDemandSecurity.
17827         * security-manager.c|h: Added ves_icall_System_Security_
17828         SecurityManager_GetLinkDemandSecurity internal call to return the
17829         class and methods permissions set for a LinkDemand. Removed unused
17830         fields in MonoSecurityManager.
17831
17832 2005-03-10  Martin Baulig  <martin@ximian.com>
17833
17834         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17835         it's a generic instance.
17836
17837 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17838
17839         * reflection.c (mono_get_object_from_blob): Applied patch from
17840         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17841
17842         * class.c (mono_class_is_assignable_from): Another try at fixing 
17843         #73469 without breaking anything.
17844
17845 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17846
17847         * class.c: (mono_class_is_assignable_from): Revert the last changes
17848         since they don't work with generics.
17849         
17850         * class.c (mono_class_is_assignable_from): Fix build bustage.
17851
17852         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17853         the managed IsAssignableFrom method. Fixes #73469.
17854
17855         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17856         function.
17857
17858 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17859
17860         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17861         memory when the remoting callback does not sets the out arguments.
17862         Fixes #73007.
17863
17864         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17865         by mistake.
17866
17867         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17868
17869         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17870
17871         * appdomain.c: Bump corlib version.
17872
17873 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17876         function.
17877
17878         * threads.c (mono_thread_attach): Detect threads which are not started
17879         by the GC pthread wrappers.
17880
17881 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17882
17883         * icall.c: Added new icall for RNG.
17884         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17885         single handle on Linux to access /dev/urandom and fix #73183.
17886
17887 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17888
17889         * object.c: setting the new vtable in a transparent proxy object must
17890         not change the GC descriptor.
17891
17892 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17893
17894         * object.c: fixed compilation without GCJ support.
17895         * reflection.c: for runtime-created types ensure klass->has_references
17896         is correct (bug #73215).
17897
17898 2005-03-02  Martin Baulig  <martin@ximian.com>
17899
17900         * class.c (mono_class_is_assignable_from): Make this work if
17901         `oklass' is a generic instance; fixes #72831.
17902
17903 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17904
17905         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17906         with hasthis set.
17907         
17908         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17909
17910         * marshal.c: Reorganize native->managed marshalling code to also use
17911         the emit_marshal_... functions.
17912
17913 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17914
17915         * object.c: typed allocs have issues with bitmap sizes > 30,
17916         so check for max_set >= 30.
17917
17918 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17921         managed code. Fixes #73012.
17922
17923         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17924
17925         * metadata.c reflection.c: Load/Emit elem_mult as well.
17926         
17927         * metadata.h (MonoMarshalSpec): Add comment.
17928
17929         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17930
17931         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17932         num_elem to -1 if not given.
17933
17934         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17935
17936         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17937         given values.
17938
17939 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17940
17941         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17942
17943 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17946
17947         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17948
17949 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17950
17951         * object.c: generalized the reference bitmap creation
17952         and added hooks for the new GC.
17953         * class-internals.c: removed the gc_bitmap field from MonoClass.
17954
17955 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17956
17957         * domain.c: help the compiler to produce better code
17958         in mono_jit_info_table_find ().
17959
17960 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17961
17962         * object.c: make all allocations look typed.
17963
17964 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17965
17966         * socket-io.c: load Mono.Posix if it's not loaded already
17967         (fixes bug#73033).
17968
17969 2005-02-24  Martin Baulig  <martin@ximian.com>
17970
17971         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17972         * reflection.c (dup_type): Likewise.
17973
17974 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17975
17976         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17977         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17978
17979 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17980
17981         * domain.c, threads.c, object-internals.h: make the critical thread
17982         local vars use the fast access mode (even when we're compiled in
17983         a lib). Provide accessors to be used by the jit during codegen.
17984
17985 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17986
17987         * appdomain.c: Changed hook functios behavior to include
17988         support for the reflection only assemblies. Some icalls were changed
17989         to support the mentioned assemblies too. Signatures of static methods
17990         try_assembly_resolve and real_load now have an additional parameter:
17991         refonly.
17992
17993         * assembly.c: General changes to mono_assembly_ methods to support
17994         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17995         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17996         suffix, to support an additional gbool parameter to specify whether
17997         the assembli is reflection only or not. Created some new hook functions 
17998         to add support for reflection only assemblies. Signatures of static 
17999         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
18000         have now an additional parameter: refonly.
18001
18002         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
18003         indicating whether the assembly is reflection only or not.
18004
18005         * exception.c: Add mono_get_exception_invalid_operation.
18006
18007         * icall.c: Throw an InvalidOperationException when trying to invoke
18008         a property/method/event, or trying to set/get the value of a field.
18009         Also add an icall to retrieve the ref_only flag to the
18010         MonoReflectionAssembly.
18011
18012 2005-02-23  Chris Toshok  <toshok@ximian.com>
18013
18014         Part of fix for #72827.
18015         * mono-debug.c (mono_debug_add_method): add lexical block data to
18016         the info we write.  Kind of a hack at the moment - we copy the
18017         lexical block info from the MonoDebugMethodInfo to the
18018         MonoDebugMethodJitInfo here, before writing it.
18019         (mono_debug_read_method): read the lexical block info.
18020
18021         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
18022
18023         * debug-mono-symfile.h: add lexical block support.
18024
18025         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
18026         support.
18027
18028 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18029
18030         * loader.c (mono_lookup_pinvoke_call): Fix warning.
18031
18032         * object.c (mono_runtime_free_method): Call mono_free_method () and
18033         put the TODOs there.
18034
18035         * loader.c (mono_free_method): Free up most memory allocated for 
18036         dynamic methods.
18037
18038 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18039
18040         * reflection.c: properly flag a Type argument to a
18041         named custom attr value (bug #72248).
18042
18043 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18044
18045         * reflection.c: reduce code duplication in named custom
18046         attribute encoding.
18047
18048 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
18049
18050         * reflection.c: properly encode custom attrs of type object
18051         (bug #72649).
18052
18053 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18054
18055         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
18056
18057 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
18058
18059         * socket-io.c: load System.dll if it's not loaded already
18060         (bug #72850 and #70477).
18061
18062 2005-02-21  Martin Baulig  <martin@ximian.com>
18063
18064         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
18065         generic instances.
18066
18067 2005-02-21  Martin Baulig  <martin@ximian.com>
18068
18069         * reflection.c (mono_image_build_metadata): We also need to
18070         "fixup" the MethodImpl table after we computed the final method
18071         indices.  Call fixup_methodimpl() to do that.
18072         (fixup_methodimpl): New private method.
18073
18074 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
18075
18076         * assembly.c: special case mscorlib.dll (bug#72536),
18077         patch from Carlos Alberto Cortez.
18078
18079 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * threads-types.h threads.c: Fix build bustage.
18082
18083         * threads.c: Use a union for long<->double conversions.
18084
18085         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
18086         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
18087
18088         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
18089         containing the checkpoint call with NOT_TAKEN.
18090         
18091         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
18092         checkpoint before pushing the arguments, so they won't have to be
18093         spilled to stack.
18094
18095 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18096
18097         * domain.c, assembly.c, domain-internals.h: make some data
18098         const and relocation-free.
18099
18100 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18101
18102         * object.c, appdomain.c, class-internals.h: introduce the
18103         MonoClassRuntimeInfo structure to hold the info needed to
18104         use a class at runtime. Made mono_class_vtable() lock-free
18105         for all the appdomains.
18106
18107 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
18108
18109         * metadata-internals.h, image.c: introduce a per-image mempool to
18110         be used for memory that has the same lifetime as the image.
18111
18112 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
18113
18114         * domain.c: In mono_init_internal(), instead of selecting the first
18115         runtime version supported by an executable, get a list of all
18116         supported versions and select the one for which an mscorlib exists
18117         (since even if the runtime supports a given version, it doesn't mean
18118         that the framework for that version is installed).
18119         Modified get_runtimes_from_exe to support this behavior.
18120         In supported_runtimes, added information about additional system
18121         assembly versions.
18122         
18123         * assembly.c: Added support for more than one system assembly version
18124         per runtime version. Updated the assembly list.
18125         In mono_assembly_remap_version, removed the initial version check,
18126         since we don't know to which version we need to compare until we
18127         get the version set on which the assembly is based.
18128         Moved the code for loading corlib into the new method
18129         mono_assembly_load_corlib(), so it can be used by the initialization
18130         code.
18131         
18132         * domain-internals.h: Updated data structures and added declaration
18133         for mono_assembly_load_corlib.
18134
18135 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18136
18137         * reflection.c (resolve_object): Fix the creation of the signature in 
18138         the SignatureHelper case.
18139
18140         * assembly.c (mono_assembly_remap_version): Fix binary search.
18141         
18142 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
18143  
18144         * class.c: Added inheritance check when a method is overloaded (from a
18145         virtual method or when implementing an interface) and when a class is
18146         inherited. Added functions to set a failure for a class and to 
18147         retreive the exception from a failure.
18148         * class-internals.h: Added fields to MonoClass to keep the exception
18149         information status for inheritance (or other exceptions) to be thrown
18150         later (i.e. not at load time).
18151         * object.c: Throw the inheritance SecurityException when a type is to 
18152         be created with either class or method inheritance violations.
18153         * reflection.c|h: Fix when getting declsec from a class. Removed 
18154         unrequired code for class. Improved sanity in parameter naming.
18155         * security-manager.c|h: Added functions to check for class and method
18156         inheritance.
18157
18158 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18159
18160         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
18161         and has_finalize in dynamic types as well.
18162
18163 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
18164
18165         * culture-info-table.h : fixed currency format for en-GB (and so on).
18166
18167 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
18168
18169         * gc.c: ensure the GC handles never have 0 as a value.
18170
18171 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
18172
18173         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
18174         a pointer to a struct to unmanaged code. Fixes #72625.
18175
18176 2005-02-16  Martin Baulig  <martin@ximian.com>
18177
18178         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
18179
18180 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
18183
18184 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
18185
18186         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
18187
18188         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
18189         UnmanagedFunctionPointerAttribute, use it for determining calling convention
18190         etc. Fixes #71471.
18191
18192         * reflection.c (mono_custom_attrs_get_attr): New helper function.
18193
18194         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
18195
18196 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
18197
18198         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
18199         changes to make the current context a field in MonoThread.
18200
18201 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
18202
18203         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
18204         the last change.
18205         
18206         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
18207         extracted from mono_marshal_get_native_wrapper.
18208
18209         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
18210         to create wrappers around native functions.
18211
18212         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
18213         delegates for arbitrary function pointers. Fixes #71472.
18214
18215 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18216
18217         * threads.c: cleaned up the code a little.
18218
18219 2005-02-15  Martin Baulig  <martin@ximian.com>
18220
18221         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
18222         the data table.
18223
18224         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
18225         allocate larger chunks if needed.
18226
18227 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18228
18229         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
18230         in by mistake.
18231
18232 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
18233
18234         * domain.c: keep the domains in an array and ensure the domain ids
18235         are kept small, so they can be used as indexes to domain-specific data
18236         with a small memory overhead.
18237
18238 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * icall.c: Handle byref types in Type icalls. Fixes #72544.
18241
18242 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
18243
18244         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
18245
18246 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18247
18248         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
18249
18250         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
18251         values.
18252
18253         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
18254         
18255 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18256
18257         * domain-internals.h: add the hashtable here.
18258
18259         * class-internals.h: Remove `info' from MonoMethod
18260
18261         * domain.c: Add a new hashtable, jit_trampoline_hash
18262
18263 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18264
18265         * object.c: don't set the value of static fields
18266         (fixes bug#72494).
18267
18268 2005-02-11  Martin Baulig  <martin@ximian.com>
18269
18270         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
18271         (mono_debug_add_method): Silently ignore the method if it's too big.
18272         (mono_debug_add_type): Likewise.
18273
18274 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
18275
18276         * threads.c, appdomain.c: remove #ifdefs from the code.
18277
18278 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18279
18280         * metadata-internals.h: Added flags to MonoAssembly to cache the most
18281         common security informations. This allows us to stay in unmanaged code
18282         when doing LinkDemand and it's special cases (except for the first 
18283         time for initialization). The flags a very much used with --security.
18284         * reflection.c|h: Added code to get declarative security attributes 
18285         for LinkDemand and InheritanceDemand. This required to refactor the
18286         existing code for Demand.
18287         * security-manager.c|h: Added new method fields for the special cases
18288         of LinkDemand.
18289
18290 2005-02-10  Martin Baulig  <martin@ximian.com>
18291
18292         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
18293         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
18294
18295 2005-02-10  Martin Baulig  <martin@ximian.com>
18296
18297         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
18298         debugging code; this is almost a complete rewrite.
18299
18300         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
18301
18302 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18303
18304         * domain.c, object.h: expose mono_string_equal () and 
18305         mono_string_hash ().
18306         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
18307         it's implemented in managed code.
18308
18309 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18310
18311         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
18312         lo leak objects between appdomains.
18313
18314 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18315
18316         * assembly.c: old compilers compilation fix from 
18317         robertj@gmx.net (Robert Jordan).
18318
18319 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
18320
18321         * class-internals.h: Little reminder for the future.
18322
18323         * debug-helpers.c: Fix up wrapper_type_names
18324
18325 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18326
18327         * image.c, metadata-internals.h: when loading an image from a file,
18328         mmap all of it and use the same codepaths as when using a
18329         in-memory image: the code is simpler and we use less memory
18330         (both writable and readonly).
18331
18332 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18333
18334         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
18335         API to alloc runtime data structures that need to be tracked by the
18336         GC and contain pointers.
18337         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
18338         make the code more readable and eventually use a different GC.
18339
18340 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
18341
18342         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
18343         for out arguments.
18344         
18345 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
18346
18347         * object.c: In release_type_locks(), don't release the cctor lock
18348         if it has already been released. This fixes a crash in the
18349         thread5 test.
18350
18351 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18352
18353         * gc.c, marshal.c, icall.c: register a delegate for finalization
18354         only when the native function pointer has been allocated for it.
18355
18356 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18357
18358         * object.c: cleaned up some code, allocate objects that are
18359         pointer free with the atomic malloc variant. Allocate memory
18360         for static data from the mempool if it's pointer-free.
18361         Allocate the bounds array at the end of the array data, when needed.
18362         * object-internals.h, object.h: move a private function in a private
18363         header.
18364         * class.c: handle missing case in tracking references in fields.
18365
18366 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18367
18368         * class.c, class-internals.h: keep track if a type has
18369         reference fields in either the instance or static fields.
18370
18371 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
18372
18373         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
18374         and renamed to MonoRuntimeInfo. Added fields to store the expected
18375         framework assembly version. Changed mono_get_framework_version and
18376         mono_get_runtime_version for a single mono_get_runtime_info method.
18377         
18378         * assembly.c: Added method to remap system assembly versions to the
18379         current executing runtime version. Removed old mapping code.
18380         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
18381         
18382         * icall.c, reflection.c: Track api changes.
18383
18384 2005-02-06  Miguel de Icaza  <miguel@novell.com>
18385
18386         * loader.c (method_from_memberref): Improve error reporting,
18387         produce the class name instead of the typeref/typedef index. 
18388
18389 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
18392
18393 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18394
18395         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
18396         stdcall and charset name mangling.  Reorganize the code and add
18397         some tracing stuff.
18398
18399 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18400
18401         * monodiet.c: More iters!
18402
18403         * marshal.c: Iter usage.
18404
18405         * icall.c: Iter usage.
18406
18407         * object.c: Use iters.
18408
18409         * debug-helpers.c: More iters
18410
18411 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18412
18413         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
18414         under win32.
18415
18416 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18417
18418         * mono-debug-debugger.c: use iters
18419
18420         * class.c, class-internals.h: mono_class_setup_events is static
18421         now
18422
18423         * All callers: use iters
18424
18425 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
18428         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18429
18430 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18431
18432         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
18433
18434         * marshal.h: Add prototypes for ldfld/stfld_remote.
18435
18436         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18437         this is called during startup.
18438         
18439 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18440
18441         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18442         MonoThreadsSync struct private in monitor.c. Changed the way
18443         MonoThreadsSync is allocated so it's faster and there is no
18444         need to keep track of it with a finalizer and it uses less memory.
18445         This also finally allows us to allocate mono objects as ptrfree when
18446         there are no reference fields.
18447
18448 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18449
18450         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18451         disappearing link to the GC interface and use them to simplify
18452         the gchandles code.
18453
18454 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18455
18456         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18457         stfld_remote which call mono_load/store_field_new. This allows methods
18458         calling ldfld/stfld wrappers to be AOTed.
18459
18460         * console-io.c: Include sys/filio.h under solaris.
18461         
18462         * console-io.c: Include curses.h if needed correctly.
18463
18464 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18465         
18466         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18467         method->klass as well.
18468
18469         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18470
18471         * class.c (mono_class_init): Switch on lazy initialization of 
18472         methods.
18473
18474         * class.c (mono_class_get_finalizer): Handle the case when the 
18475         finalizer is inherited.
18476
18477 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18478
18479         * console-io.c: <curses.h> is needed by term.h on solaris.
18480
18481 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18482
18483         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18484         mono_class_setup_properties where possible. Remove this ftn from
18485         the header file, and make it static.
18486
18487 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * loader.c: Add missing setup_... call.
18490
18491         * class.c: Add missing setup_... calls.
18492
18493         * class.c (mono_class_init): Switch on lazy initialization of 
18494         the generic vtable.
18495         
18496         * class.c (mono_class_init): Fix generics broken by the recent changes.
18497
18498         * monodiet.c (handle_type): Add missing setup_... calls.
18499
18500         * class.c: Back out garbage in previous patch.
18501         
18502         * class.c: Add missing setup_... calls.
18503
18504         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18505         mono_class_setup_methods () if possible.
18506
18507         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18508
18509         * class-internals.h (MonoCachedClassInfo): New structure.
18510
18511         * class.c: Initialize properties and events fields of MonoClass lazily.
18512
18513         * class.c: Add infrastructure for lazily initializing the methods and
18514         vtable fields of MonoClass. Not yet used.
18515
18516         * class.c (mono_class_get_finalizer): New helper function.
18517
18518         * class.c: Add infrastructure for loading some class related data from
18519         an AOT file.
18520
18521         * object.c: Add infrastructure for initializing the vtable from data
18522         in the AOT file.
18523
18524         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18525
18526         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18527         appropriate initialization function before accessing parts of the
18528         MonoClass structure.
18529
18530         * marshal.c: Fix warnings.
18531         
18532         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18533
18534         * mono-debug-debugger.c (get_exception_message): Use 
18535         mono_class_get_method_from_name_flags ().
18536
18537 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18538
18539         * reflection.c, appdomain.c: Replace a few manual searches that
18540         Zoltan missed. (Paolo approved this part of my initial patch).
18541
18542 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18543
18544         * profiler.c: disable recording statistical events at report time.
18545
18546 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18547
18548         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18549         to byteswap arrays of enum values, too (bug #72080).
18550
18551 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * appdomain.c (set_domain_search_path): Allow this to be called if
18554         domain->setup is not yet set.
18555
18556         * loader.c (mono_method_get_index): New helper function.
18557
18558         * loader.c reflection.c: Use mono_method_get_index ().
18559
18560         * class.c (mono_class_get_method_from_name_flags): New helper method.
18561
18562         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18563         this.
18564
18565         * class.c (mono_class_get_cctor): New helper method.
18566
18567         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18568         mono_class_get_method () to look up methods.
18569
18570 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18571
18572         * console-io.c: Fix the build, this should work on Windows.
18573
18574 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18575
18576         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18577         be set to null to keep things valid
18578
18579 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18580
18581         * icall.c: added Console 2.0 icalls.
18582         * Makefile.am: added console-io.[ch]
18583         * console-io.[ch]: internal calls for Console 2.0 API.
18584
18585 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18586
18587         * class.c: make sure we consider all the interfaces
18588         when calculating max_interface_id (bug found by
18589         Jeroen Frijters running ikvm).
18590
18591 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18592
18593         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18594         valuetype fields to null.
18595
18596         * object.c (set_value): Ditto. Fixes #71669.    
18597
18598 2005-01-31  Martin Baulig  <martin@ximian.com>
18599
18600         * metadata.c (mono_metadata_has_generic_params): New public
18601         function; checks whether something is a generic method.
18602
18603 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18604
18605         * appdomain.c: fix infinite recursion when adding assemblies.
18606
18607 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18608
18609         * object.c: Fix small typo to return all items for Environment.
18610         GetCommandLineArgs.
18611
18612 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18613
18614         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18615         reflection.c: more domain and assembly-unload related fixes
18616         and memory leaks plugs.
18617
18618 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18619
18620         * 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.
18621
18622 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18623
18624         * loader.c (mono_method_signature): Make this method lazy
18625         (mono_get_method_from_token): Don't computate the signature here.
18626
18627         Doing this saves quite a bit of memory. I got 90 kb on starting up
18628         monodoc. It should also save some disk reads on startup.
18629
18630         * *: MonoMethod->signature might be NULL now. You *MUST* use
18631         mono_method_signature.
18632
18633 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18634
18635         * object.c (mono_runtime_get_main_args): Return an array from the
18636         current domain here. Fixes #71938.
18637
18638 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18639
18640         * monitor.c: formatting changes to comply with the
18641         mono coding style and remove #ifdefs from the code.
18642
18643 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18644
18645         * metadata.c, private.h: remove some unneeded data
18646         and use a more compact representation for table schemas.
18647
18648 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18649
18650         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18651         to get a better distribution in hash tables.
18652         * *.c: use mono_aligned_addr_hash() where appropriate.
18653         * assembly.c: make var static.
18654
18655 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * domain-internals.h: Put MonoJitInfo on a diet.
18658
18659         * domain.c: Fix a warning.
18660
18661 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18662
18663         * gc.c: rework the gc handles code to reuse handles
18664         when freed.
18665
18666 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18667
18668         * domain.c: fixed long standing bug in mono_string_equal() which
18669         was brought to light with the ldstr changes.
18670
18671 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18672
18673         * reflection.c: Remove warning by adding missing include for marshal.h
18674
18675 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18676
18677         * domain.c, object.c: change the ldstr_table to hold
18678         MonoString* as keys: makes the runtime isinterned lookup
18679         faster and simplifies memory management.
18680
18681 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18682  
18683         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18684         possible to add imperative security checks before calling the icall.
18685         * reflection.c: Return security attributes on the original MonoMethod
18686         (and not the wrapped one). This fix permissions on icalls.
18687
18688 2005-01-25  Dick Porter  <dick@ximian.com>
18689
18690         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18691         the check for mktime() support actually test the mktime() return
18692         value.  "Fixes" bug 71682, though the output is still different to
18693         MS.
18694
18695 2005-01-25  Martin Baulig  <martin@ximian.com>
18696
18697         * class.c (mono_class_is_assignable_from): Make this work for
18698         generic instances.
18699
18700 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18701
18702         * marshal.c (mono_string_utf8_to_builder)
18703         (mono_string_builder_to_utf16): We might not have ownership of the
18704         string. In thise case, we need to create a new buffer.
18705
18706         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18707         be null, in which case, use the default capacity.
18708
18709 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18710
18711         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18712         GC events to the profiler.
18713
18714 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18715
18716         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18717         if you don't want the GC to run.
18718
18719 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18720
18721         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18722         start providing a GC API and keeping different implementations in
18723         their own file.
18724         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18725
18726 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18727
18728         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18729         mmap rather than allocating a huge buffer.
18730         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18731         above.
18732
18733 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18734
18735         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18736         and CheckExecutionRights.
18737         * reflection.c|h: Keep the index of the declarative security to be 
18738         used, instead of the pointer, when AOT compiler is used. Also add 
18739         class initialization when requesting demands.
18740         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18741         CheckExecutionRights. Both properties are now FALSE by default, and
18742         unmodifiable, unless the --security option is used.
18743
18744 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18745
18746         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18747         reflection.c: properly refcount images and assemblies, many leaks fixed.
18748
18749 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18750
18751         * threadpool.c: increase the timeout for threads in the thread pool to
18752         10s.  Fixes bug #67159.
18753
18754 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18755
18756         * class-internals.h: Sun's compiler insists on explicit
18757         signed on bit fields to handle then correctly.
18758
18759 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18760
18761         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18762         Make the size of the array fit only the number of invalid path
18763         chars that we have.
18764
18765         * class.c (_mono_class_get): Improve the error reporting when a
18766         class referenced is not found, to assist debugging. 
18767
18768 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18769
18770         * threads.c: fix off-by-one error.
18771         * domain.c: free data allocated in the domain.
18772
18773 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * reflection.c (mono_method_body_get_object): Fill out exception info
18776         as well.
18777
18778         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18779         structure.
18780         
18781 2005-01-19  Martin Baulig  <martin@ximian.com>
18782
18783         * loader.c (mono_get_method_constrained): Make this work again.
18784
18785 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18788         guint16 to match the managed side.
18789
18790         * reflection.c (mono_reflection_body_get_object): Fill out local
18791         variables array.
18792
18793         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18794         as well.
18795
18796         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18797         'local_var_sig_token'.
18798
18799 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18802         System.Drawing.
18803
18804         * reflection.c (mono_method_body_get_object): Handle abstract and
18805         runtime methods.
18806
18807 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18808
18809         * marshal.c, loader.c, class-internals.h, reflection.c:
18810         store the emthod data for a wrapper in an array instead of a list.
18811
18812 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18813
18814         * marshal.c: change the code to allocate memory more
18815         conservatively for method wrappers.
18816
18817 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18818
18819         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18820         fields from MonoClass to the marshal info structure where they belong.
18821
18822 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18823
18824         * class.c, object.c, class-internals.h, marshal.c: rearrange
18825         some fields and tweak some types to lower memory usage.
18826
18827 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * threads.c (signal_thread_state_change): Handle the case when the
18830         target thread is the current thread.
18831
18832         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18833
18834         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18835         emit_ptr_to_object_conv. 
18836
18837         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18838         marshalling. Fixes #71352.
18839
18840 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18841
18842         * metadata.h, blob.h: move table enum to blob.h so it can be included
18843         in any header.
18844         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18845         cut the size of MonoImage/MonoDynamicImage.
18846
18847 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18850
18851 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18852
18853         * reflection.c, reflection.h, icall.c: add a function to check
18854         if an attribute type is defined for a metadata object.
18855
18856 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18857
18858         * object-internals.h: Added some needed fields from StringBuilder class.
18859         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18860
18861 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18862
18863         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18864         threads before shutting down the runtime.
18865
18866         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18867
18868 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18869
18870         * object-internal.h, threads.c: implement stacksize and 
18871         parameterized thread start functionality (requires
18872         matching corlib). Marked broken code for later removal.
18873
18874 2005-01-12  Martin Baulig  <martin@ximian.com>
18875
18876         * class-internals.h (MonoGenericClass): Moved the `initialized'
18877         flag to MonoDynamicGenericClass, removed `init_pending'.
18878         (MonoGenericInst): Added `is_reference' flag.
18879
18880 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18883         inside the MSDOS header. Fixes #71201.
18884
18885         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18886         gc thread.
18887         (mono_domain_finalize): Ditto.
18888
18889 2005-01-12  Martin Baulig  <martin@ximian.com>
18890
18891         * class.c (mono_get_shared_generic_class): Use the cache for
18892         non-dynamic generic classes.
18893
18894         * class-internals.h (mono_class_create_generic_2): Removed
18895         function prototype, this function is now static inside class.c.
18896
18897         * class.c (mono_class_create_generic_2): Made this static, only
18898         call it from mono_class_init() and mono_class_setup_parent().
18899         (collect_implemented_interfaces_aux): Call mono_class_init() on
18900         the interfaces we collect.
18901         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18902
18903 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18906         it a real thread handle.
18907
18908         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18909         MonoJitExceptionInfo, since each catch clause needs its own variable.
18910         
18911 2005-01-11  Dick Porter  <dick@ximian.com>
18912
18913         * image.c (mono_pe_file_open): New variant on mono_image_open()
18914         that does not set up the CLI metadata; used for FileVersionInfo so
18915         it can get the data for windows binaries too.
18916         
18917         * process.c (process_read_string_block): Don't read off the end of
18918         the StringTable block.
18919
18920         These both fix bug 70766.
18921
18922 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18923
18924         * gc.c: set some fields to NULL at GC cleanup time.
18925         * threads.c: if we quit the main thread, call exit ().
18926
18927 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18928
18929         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18930
18931 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18932
18933         * threads.h, threads.c, object.c: added accessor and settor for
18934         main_thread. Handle it specially when exiting from it: wait
18935         for other foreground threads to exit.
18936
18937 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18938
18939         * process.c, verify.c: remove some bloat.
18940
18941 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18944         the calling convention to cdecl under win32.
18945
18946 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18947
18948         * object.c (mono_object_get_size): New function to get the size of
18949         an object instance.
18950
18951         * profiler.c (simple_allocation): Use above.
18952
18953 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18954
18955         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18956         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18957         get an appdomain by it's id and we can't assume the root's id is 0).
18958         * domain-internals.h: Change the function prototype to match.
18959         * icall.c: Change the icall table for AppDomain.
18960
18961 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18962
18963         * locales.c (string_invariant_compare_char): Only compute
18964         GUnicodeTypes in the case where we need them.  Test for ordinality
18965         first and return if so.
18966
18967         From the commit:
18968
18969                 /*
18970                  * FIXME: here we must use the information from c1type and c2type
18971                  * to find out the proper collation, even on the InvariantCulture, the
18972                  * sorting is not done by computing the unicode values, but their
18973                  * actual sort order.
18974                  */
18975
18976 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18977
18978         * loader.c: for P/Invoke methods, allow the "Internal" shared
18979         library name to refer to the calling process symbol namespace.
18980
18981 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18982
18983         * Makefile.am: Add the security manager to the build.
18984         * security-manager.c|h: New. Initialization of the security manager.
18985
18986 2005-01-07  Dick Porter  <dick@ximian.com>
18987
18988         * threads.c: 
18989         * monitor.c: Update thread state during Monitor and WaitHandle
18990         waits.  Fixes bug 71031.
18991
18992 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18993
18994         * reflection.c (property_encode_signature): Correctly handle when the
18995         property has no methods.
18996
18997 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18998
18999         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
19000         
19001         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
19002         fields from mb, not rmb. Fixes #71017.
19003
19004         * marshal.c (emit_ptr_to_str_conv): Add support for 
19005         ByValTStr -> string conversion. Fixes #71015.
19006
19007         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
19008
19009         * mempool.c (mono_mempool_contains_addr): New helper function.
19010
19011 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19012
19013         * metadata.c (mono_metadata_compute_size): Fix size calculation of
19014         HasSematics encoded fields.
19015         
19016         * metadata.c (mono_type_to_unmanaged): Improve error message for 
19017         invalid string marshalling.
19018
19019         * metadata.c: Fix warnings.
19020         
19021 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19022
19023         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
19024         profiler support.
19025
19026 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
19027
19028         * domain.c object.c domain-internals.h: Revert part of r38077 since the
19029         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
19030         tests.
19031
19032 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
19033
19034         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
19035         so methods containing these can be AOTed.
19036
19037 2005-01-03  Martin Baulig  <martin@ximian.com>
19038
19039         * loader.c (find_method): Removed the hack for generic instances.
19040         (method_from_memberref): If our parent is a generic instance, pass
19041         its generic type definition to find_method() and then inflate the
19042         method.
19043         (mono_get_method_constrained): Pass the generic type definition to
19044         find_method() and inflate the method later.
19045
19046         * class-internals.h (MonoStats): Added `generic_class_count'.
19047
19048         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
19049         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
19050
19051         * reflection.c (mono_custom_attrs_from_params): Don't ignore
19052         generic type definitions.
19053
19054 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19055
19056         * loader.c icall.c: Fix warnings.
19057
19058 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
19059
19060         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
19061         blittable types. Fixes #70864.
19062
19063 2004-12-29  Martin Baulig  <martin@ximian.com>
19064
19065         * icall.c
19066         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
19067
19068         * reflection.c (mono_method_get_object): Create a
19069         "System.Reflection.MonoGenericMethod" for inflated methods; don't
19070         call mono_get_inflated_method().
19071
19072         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
19073
19074 2004-12-27  Martin Baulig  <martin@ximian.com>
19075
19076         * class-internals.h (MonoMethod): Added `is_inflated' flag.
19077         (MonoMethodInflated): Added `inflated' field.
19078
19079         * class.c (mono_class_inflate_generic_method): Don't really
19080         inflate the method here; just set the `is_inflated' flag in the
19081         MonoMethod.
19082         (mono_class_get_inflated_method): Actually inflate the method here
19083         if it's not already inflated; we use the MonoMethodInflated's new
19084         `inflated' field as a cache.
19085
19086 2004-12-26  Martin Baulig  <martin@ximian.com>
19087
19088         * class.c
19089         (inflate_generic_class): Moved some code out of inflate_generic_type().
19090         (mono_class_inflate_generic_method): If we're already inflated,
19091         inflate the context and use the declaring method; ie. make sure
19092         the declaring method of an inflated method is always the generic
19093         method definition.
19094         (mono_class_create_from_typedef): Create
19095         `class->generic_container->context->gclass'.
19096
19097 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19098
19099         * metadata-internals.h, marshal.c, reflection.c: More
19100         MonoGHashTable->GHashTable.
19101
19102         * domain-internals.h, class.c: Change MonoGHashTable's into
19103         GHashTables for some cases where no gc stuff is used
19104
19105         All users: update apis
19106
19107 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
19108
19109         * metadata.c (builtin_types): Make this `const'. Makes this get
19110         put into the shareable section.
19111         (mono_metadata_init): Casts to make gcc happy.
19112
19113 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
19116
19117 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
19118
19119         * icall.c: Added an internal call to retrieve the position and length
19120         of assembly-level declarative security attributes (RequestMinimum, 
19121         RequestOptional and RequestRefuse). This is used by the Assembly class
19122         to re-create the corresponding permission sets.
19123
19124 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19125
19126         * marshal.c: fix the stelemref wrapper to be type correct
19127         (and faster).
19128
19129 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19130
19131         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
19132         to do key & 0x7fffffff. Hashtable already does this. It just
19133         results in longer code.
19134
19135 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19136
19137         * appdomain.c: Bump corlib version.
19138         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
19139         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
19140         * reflection.c|h: Add functions to get declarative security infos
19141         (blob position and length) for assemblies, classes and methods.
19142
19143 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
19144
19145         * reflection.c: sort the constant table (bug #70693).
19146
19147 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
19148
19149         * object-internals.h, threads.c, domain.c: add accessors for
19150         the MonoThread and MonoDomain tls keys.
19151
19152 2004-12-18  Martin Baulig  <martin@ximian.com>
19153
19154         * class.c (inflate_generic_type): If we're inflating a generic
19155         instance, set `ngclass->context->container = context->container';
19156         ie. the container we inflated into.
19157
19158         * metadata.c (mono_metadata_parse_generic_param): Reflect above
19159         inflate_generic_type() changes.
19160
19161 2004-12-17  Martin Baulig  <martin@ximian.com>
19162
19163         * class-internals.h
19164         (MonoGenericClass): Replaced `MonoType *generic_type' with
19165         `MonoClass *generic_class'.  Removed `dynamic_info'; if
19166         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
19167         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
19168
19169 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19170
19171         * exception.c (mono_exception_from_token): New helper function.
19172
19173 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * assembly.c (mono_assembly_load_with_partial_name): Call 
19176         mono_assembly_loaded before invoking the preload hooks. Fixes
19177         #70564.
19178
19179         * object-internals.h (MonoThread): Change culture_info and 
19180         ui_culture_info into an array.
19181
19182         * threads.c: Cache culture info objects from more than one appdomain.
19183
19184         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
19185         current UI culture.
19186
19187 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * threads.h threads.c appdomain.c: Clear the culture_info field of
19190         all threads during unloading if they point to an object in the dying
19191         appdomain.
19192
19193 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
19194
19195         * culture-info.h (TextInfoEntry): New struct
19196         * object-internals.h: sync with managed
19197         * locales.c: fill the `text_info_data' field
19198         * culture-info-tables.h: update
19199
19200 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19201
19202         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
19203         collector.
19204
19205 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
19206
19207         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
19208         (ves_icall_ModuleBuilder_getMethodToken): Ditto
19209
19210 2004-12-12  Martin Baulig  <martin@ximian.com>
19211
19212         * mono-debug-debugger.c (write_type): If we're an enum and the
19213         builtin types have already been initialized, call mono_class_init().
19214
19215 2004-12-11  Martin Baulig  <martin@ximian.com>
19216
19217         * metadata.c (mono_metadata_load_generic_params): Added
19218         `MonoGenericContainer *parent_container' argument; automatically
19219         compute `container->is_method'; pass the correct owner to
19220         get_constraints().      
19221
19222         * reflection.c (compare_genericparam): Sort the GenericParam table
19223         according to increasing owners. 
19224
19225 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19226
19227         * profiler.c: allow disabling the default profiler.
19228
19229 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
19230
19231         * decimal.c, icall.c: allow disabling System.Decimal support.
19232
19233 2004-12-09  Marek Safar <marek.safar@seznam.cz>
19234
19235         * reflection.c: Add support for null attribute arguments.
19236
19237 2004-12-09  Martin Baulig  <martin@ximian.com>
19238
19239         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
19240         names to get rid of compiler warnings.
19241
19242 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19243
19244         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
19245         mono_marshal_load_type_info (). Fixes #69625.
19246         (mono_marshal_get_ptr_to_struct): Likewise.
19247
19248 2004-12-08  Martin Baulig  <martin@ximian.com>
19249
19250         * mono-debug.h: Bumped version number to 47.
19251
19252         * mono-debug-debugger.c
19253         (mono_debugger_event_handler, mono_debugger_event): Take two
19254         guint64 arguments insteed of a gpointer and a guint32.  
19255
19256 2004-12-08  Martin Baulig  <martin@ximian.com>
19257
19258         * debug-mono-symfile.h
19259         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
19260         `address' to `native_offset'.
19261
19262 2004-12-08  Martin Baulig  <martin@ximian.com>
19263
19264         * class.c (mono_class_create_from_typespec): Only inflate if we
19265         either have `context->gclass' or `context->gmethod'.
19266
19267 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19268
19269         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
19270
19271         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
19272
19273         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
19274
19275         * reflection.c (mono_assembly_get_object): Remove the workaround put
19276         in for the release.
19277         
19278         * appdomain.c: Use the corlib_internal field from MonoAssembly.
19279
19280         * appdomain.c: Bump corlib version.
19281
19282         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
19283         be visible in other appdomains.
19284
19285 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
19286
19287         * threads.c: Interlocked inc and dec for longs were messed up,
19288         use a KISS based impl for this. Fixes 70234
19289
19290 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19291
19292         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
19293
19294 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19295
19296         * icall.c: fix to follow policy not to allow struct
19297         arguments in icalls.
19298
19299 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19300
19301         * process.c: make the patch that handles spaces in file paths work
19302         on mono/windows too.
19303
19304 2004-12-06  Martin Baulig  <martin@ximian.com>
19305
19306         * class.c (mono_class_create_generic): Call
19307         mono_class_setup_supertypes() if we're dynamic.
19308         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
19309
19310 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19311
19312         * object-internals.h: Add new fields to MonoThread.
19313
19314         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19315
19316         * icall.c threads-types.h threads.c: Add new icalls.
19317
19318         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
19319
19320         * object-internals.h (MonoReflectionAssembly): Sync object layout with
19321         managed side.
19322
19323         * appdomain.c: Bump corlib version.
19324
19325         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
19326         internal assemblies. Fixes #69181.
19327
19328 2004-12-05  Martin Baulig  <martin@ximian.com>
19329
19330         * class.c (mono_class_inflate_generic_signature): Make this a
19331         no-op if `context' is NULL or we don't have any type parameters;
19332         also copy `sentinelpos'.        
19333
19334 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
19335
19336         * image.c: Add unbox_wrapper_cache.
19337
19338         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
19339
19340         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
19341         function generator.
19342         
19343         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
19344         Fixes #70173.
19345
19346         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
19347         
19348 2004-12-04  Martin Baulig  <martin@ximian.com>
19349
19350         * loader.c (mono_method_get_signature_full): New public function;
19351         like mono_method_get_signature(), but with an additional
19352         `MonoGenericContext *' argument.
19353
19354         * class.c (mono_class_inflate_generic_signature): Formerly known
19355         as inflate_generic_signature(); make this public.
19356
19357 2004-12-04  Martin Baulig  <martin@ximian.com>
19358
19359         * metadata.c
19360         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
19361         instead of a `MonoGenericContainer *'.  
19362         (mono_metadata_parse_array_full): Likewise.
19363         (mono_metadata_parse_signature_full): Likewise.
19364         (mono_metadata_parse_method_signature_full): Likewise.
19365         (mono_metadata_parse_generic_inst): Likewise.
19366         (mono_metadata_parse_generic_param): Likewise.
19367         (mono_metadata_parse_mh_full): Likewise.
19368         (mono_type_create_from_typespec_full): Likewise.
19369
19370 2004-12-03  Martin Baulig  <martin@ximian.com>
19371
19372         * class-internals.h (MonoGenericContainer): Replaced the
19373         `MonoGenericContext * pointer with a `MonoGenericContext'
19374         structure and made it the first element.
19375
19376 2004-12-03  Martin Baulig  <martin@ximian.com>
19377
19378         * class.c
19379         (inflate_generic_type): Set the `context->container' when creating
19380         a new MonoGenericContext.
19381         (mono_class_inflate_generic_method): Likewise.
19382         (mono_class_create_from_typespec): Just use `context->container'
19383         to get the container.
19384
19385         * loader.c (method_from_methodspec): Set `context->parent' from
19386         `context->container' - and if that's a method container, use its
19387         parent.  Also set the `context->container' when creating a new
19388         MonoGenericContext.
19389         (mono_get_method_from_token): Use just `context->container' to get
19390         the container.
19391
19392         * metadata.c (do_mono_metadata_parse_generic_class): Also set
19393         `gclass->context->container'.
19394
19395         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
19396         the `context->container' when creating a new MonoGenericContext.
19397
19398 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
19399
19400         * reflection.c (compare_genericparam): Sort params with identical
19401         owner by their number. Fixes gen-111 on sparc.
19402
19403 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
19406         around the domain changes.
19407
19408         * appdomain.c (mono_domain_unload): Handle the case when the thread
19409         calling Unload is itself being aborted during unloading. Fixes #70022.
19410
19411         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
19412
19413         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
19414         checkpoint_func as an icall so it gets a wrapper.
19415         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
19416         in the cross-appdomain wrappers too.
19417
19418         * threads.c (mono_thread_has_appdomain_ref): Make this public.
19419
19420         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
19421
19422         * reflection.c: Fix some memory leaks.
19423         
19424 2004-12-02  Martin Baulig  <martin@ximian.com>
19425
19426         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
19427
19428         * metadata.c (generic_class_cache): New static hashtable.
19429         (mono_metadata_lookup_generic_class): New public method.
19430
19431 2004-12-02  Martin Baulig  <martin@ximian.com>
19432
19433         * class.c (mono_class_create_from_typedef): Call
19434         mono_class_setup_parent() and mono_class_create_mono_type() before
19435         parsing the interfaces.
19436
19437 2004-12-02  Martin Baulig  <martin@ximian.com>
19438
19439         * metadata.c (generic_inst_cache): New static hashtable.
19440         (mono_metadata_lookup_generic_inst): New public function.
19441         (mono_metadata_inflate_generic_inst): New public function.
19442         (mono_metadata_parse_generic_inst): New public function.
19443         (do_mono_metadata_parse_generic_class): Use the new
19444         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19445         since this'll also use the cache.
19446
19447         * reflection.c (mono_reflection_bind_generic_method_parameters):
19448         Use mono_metadata_lookup_generic_inst() to use the new cache.
19449
19450         * class.c (inflate_mono_type): Use
19451         mono_metadata_inflate_generic_inst() to inflate a generic
19452         instance; this'll also use the new cache.
19453
19454         * loader.c (method_from_methodspec): Use
19455         mono_metadata_parse_generic_inst() and
19456         mono_metadata_inflate_generic_inst() rather than parsing it
19457         manually, so we can use the new cache.
19458
19459 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19460
19461         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19462         the wait times out.
19463
19464 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19465
19466         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19467         iter->args based on whether parameters are passed in registers (i.e.
19468         MONO_ARCH_REGPARMS is defined)
19469
19470 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19471
19472         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19473         the exception message. Fixes #70070.
19474         (method_from_methodspec): Fix warnings.
19475
19476 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19477
19478         * process.c: (complete_path) return the path quoted
19479
19480 2004-12-01  Martin Baulig  <martin@ximian.com>
19481
19482         * class-internals.h (MonoGenericInst): New structure.
19483         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19484         `is_open' with `MonoGenericInst *inst'.
19485         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19486         `is_open' with `MonoGenericInst *inst'.
19487
19488 2004-11-30  Martin Baulig  <martin@ximian.com>
19489
19490         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19491
19492         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19493         to `generic_class_cache'.
19494
19495         * metadata.c
19496         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19497         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19498         (mono_generic_inst_is_valuetype): Renamed to
19499         mono_generic_class_is_valuetype().
19500
19501         * class-internals.h
19502         (MonoGenericInst): Renamed to MonoGenericClass.
19503         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19504         (MonoClass): Renamed `generic_inst' to `generic_class'.
19505         (MonoGenericContext): Renamed `ginst' to `gclass'.
19506
19507         * object-internals.h
19508         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19509
19510         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19511         mono_reflection_generic_class_initialize().
19512
19513         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19514         now known as "System.Reflection.MonoGenericClass".
19515         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19516
19517 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19518
19519         * class-internals.h: Added a flag field to MonoClass to cache the
19520         declarative security attributes actions associated with the class.
19521         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19522         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19523         applicable to the JITted method.
19524         * reflection.c|h: Added functions to extract (as flags) which security
19525         actions are available (declaratively) for a method, class or assembly.
19526         * metadata.c|h: Added functions to search the declarative security
19527         table in the metadata.
19528         
19529 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19530
19531         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19532         EXPORTEDTYPES are already in the class name cache, so there is no
19533         need to add extra code here to look at them. Just removes a bit of
19534         cruft.
19535
19536         (ves_icall_System_Environment_get_TickCount): No need for #if
19537         WINDOWS. We already have the code in io-layer.
19538
19539 2004-11-28  Martin Baulig  <martin@ximian.com>
19540
19541         * loader.c
19542         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19543         Fixes gen-112.cs.
19544
19545 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19546
19547         * assembly.c (do_mono_assembly_open): Instead of having a
19548         conditional WITH_BUNDLE, incorporate support for bundles here, by
19549         having a global `bundles' variable holding a pointer to the actual
19550         bundles. 
19551
19552         (mono_register_bundled_assemblies): New API call used by the
19553         bundle code. 
19554
19555         See mkbundle.1 for details.
19556         
19557 2004-11-27  Martin Baulig  <martin@ximian.com>
19558
19559         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19560         the vtable for generic methods.
19561
19562 2004-11-26  Martin Baulig  <martin@ximian.com>
19563
19564         * metadata.c
19565         (mono_metadata_generic_method_hash): New public function.
19566         (mono_metadata_generic_method_equal): Likewise.
19567
19568         * class-internals.h
19569         (MonoGenericContainer): Added `GHashTable *method_hash'.
19570
19571         * reflection.c (ReflectionMethodBuilder): Added
19572         `MonoGenericContainer *generic_container'.
19573         (reflection_methodbuilder_to_mono_method): Don't create a new
19574         MonoGenericContainer each time we're called.
19575         (mono_reflection_bind_generic_method_parameters): Use
19576         `container->method_hash' to cache the results so we don't create a
19577         different method if we're called several times with the same
19578         arguments.
19579
19580         * loader.c (method_from_methodspec): Use the new
19581         `container->method_hash' here, too.
19582
19583 2004-11-26  Martin Baulig  <martin@ximian.com>
19584
19585         * class.c (inflate_generic_signature): Correctly compute
19586         `res->has_type_parameters'.
19587         (mono_class_vtable): Use the `has_type_parameters' flag to
19588         determine whether we're a generic method.
19589
19590         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19591
19592 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * object.c (mono_runtime_run_main): Fix a small memory leak.
19595
19596 2004-11-25  Martin Baulig  <martin@ximian.com>
19597
19598         * class.c (set_generic_param_owner): Fixed the loop.
19599
19600 2004-11-25  Martin Baulig  <martin@ximian.com>
19601
19602         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19603         generic methods.
19604
19605 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19606
19607         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19608         names. Fixes #69787.
19609
19610 2004-11-24  Martin Baulig  <martin@ximian.com>
19611
19612         * class.c (mono_class_create_generic_2): If we don't have a
19613         `ginst->parent', inflate `gklass->parent' to get our parent.
19614
19615 2004-11-24  Martin Baulig  <martin@ximian.com>
19616
19617         * reflection.c (compare_genericparam): Correctly sort the
19618         GenericParam table; fixes #69779.
19619
19620 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19621
19622         * reflection.c: When writing a PE file, don't create a huge
19623         buffer in memory. Just write the arrays we have to the file.
19624         This reduces memory usage.
19625
19626         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19627         globally.
19628
19629 2004-11-17  Martin Baulig  <martin@ximian.com>
19630
19631         * class.c (mono_class_init): Don't setup `class->parent' for
19632         dynamic instances; moved this to mono_class_generic_2().
19633         (mono_class_create_generic): Also set `klass->inited' for dynamic
19634         generic instances.
19635         (mono_class_create_generic_2): Don't do anything for dynamic
19636         generic instances.  Set `klass->parent' here and also call
19637         mono_class_setup_parent() here. 
19638
19639         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19640         `MonoType *parent' argument; set `ginst->parent' before calling
19641         mono_class_create_generic_2(), so we set the correct parent.
19642
19643 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19644
19645         * reflection.c: allow getting attributes from ModuleBuilder
19646         (used by ikvm).
19647
19648 2004-11-17  Martin Baulig  <martin@ximian.com>
19649
19650         * class.c (mono_class_create_from_typedef): If a type parameter is
19651         inherited from an outer class, set its owner to that class.
19652
19653 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19654
19655         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19656           for (int*) written size. This fixes bug #69592.
19657
19658 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19659
19660         * icall.c: Added IsAuthenticodePresnet internal call.
19661         * image.c|h: New function that check a MonoImage for an Authenticode
19662         signature in the certificate PE data directory.
19663         * security.c|h: New internal call to ask the runtime if an 
19664         Authenticode signature seems referenced in the PE header.
19665
19666 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19669
19670         * reflection.c (mono_image_create_pefile): Free the assembly streams
19671         after writing out the assembly file.
19672
19673         * object.c (mono_runtime_run_main): Fix small memory leak.
19674
19675         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19676         property access modifiers. Fixes #69389.
19677
19678 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19679
19680         * domain.c, object.c, object-internals.h, domain-internals.h,
19681         object.h, marshal.c: keep dynamic code info per domain.
19682
19683 2004-11-15  Martin Baulig  <martin@ximian.com>
19684
19685         * class.c (mono_type_get_name_recurse): Put type arguments in
19686         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19687         see bug #68387.
19688
19689 2004-11-15  Martin Baulig  <martin@ximian.com>
19690
19691         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19692         (mono_class_setup_vtable): When computing `the_cname' for a
19693         generic instance, don't include the namespace since we'd otherwise
19694         add it twice.
19695
19696 2004-11-15  Martin Baulig  <martin@ximian.com>
19697
19698         * class.c (mono_class_create_generic): Changed return type to void.
19699         (mono_class_create_generic_2): New public function; setup
19700         `class->method', `class->field' and `class->interfaces' here
19701         instead of in mono_class_init().
19702
19703         * class.h (mono_class_create_generic): Moved to class-internals.h.
19704
19705 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19706
19707         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19708         rather than writing to memory, write to this file. Right now,
19709         we are just writting into a buffer, and copying that. However
19710         we can avoid the buffer later.
19711
19712         (mono_dynamic_stream_reset): new function
19713
19714         * icall.c, object-internals.h: update for the above.
19715
19716 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19717
19718         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19719         have been using gc'd memory. First it is slower, unlikely
19720         the comment in the source code said, secondly, it increases
19721         our footprint to do it in the gc.
19722
19723         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19724         the method so that it does not have to copy to managed code.
19725
19726 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19727
19728         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19729
19730 2004-11-12  Martin Baulig  <martin@localhost>
19731
19732         * reflection.c (mono_image_create_token): Allow generic method
19733         definitions here, since they may appear in an `.override'; see
19734         gen-98/gen-99 for an example.
19735
19736 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19739         #69365.
19740
19741         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19742         descriptive.
19743
19744 2004-11-11  Martin Baulig  <martin@ximian.com>
19745
19746         * class.c (mono_class_setup_vtable): In an explicit interface
19747         implementation, the method name now includes the arity.
19748
19749 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19750
19751         * object.c (mono_array_full_copy): Fix warning.
19752
19753 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19754
19755         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19756         mono_class_get_method_from_name() instead.
19757         
19758         * class-internals.h: Added two new types of wrappers. 
19759         Added MonoRemotingTarget enum. Added new trampoline function type, which
19760         takes an additional MonoRemotingTarget value as parameter, so it is
19761         possible to request a trampoline for a specific target.
19762         
19763         * class.c: Added new mono_class_get_method_from_name() method.
19764         
19765         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19766         general remoting sinks and one specific for cross domain calls.
19767         
19768         * debug-helpers.c: Added new wrapper names.
19769         
19770         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19771         of a remote class.
19772         
19773         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19774         
19775         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19776         with several other methods (mono_marshal_get_xappdomain_dispatch,
19777         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19778         and others) can generate a fast remoting wrapper for cross domain calls.
19779         More information can be found in docs/remoting.
19780         Other changes: Removed mono_find_method_by_name, and used
19781         mono_class_get_method_from_name instead.
19782         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19783         is stored in the remoting invoke hashtable.
19784         
19785         * marshal.h: published the new method for getting the xdomain wrapper,
19786         and also added a method for getting the adequate wrapper for a given
19787         method and target.
19788         
19789         * object-internals.h, object.c: Added a couple of methods for capying and
19790         cloning arrays.
19791         Modified mono_install_remoting_trampoline, which takes the new remoting
19792         trampoline that has a remoting target as parameter.
19793         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19794         will return the most suitable vtable for the target.
19795         Added mono_remote_class_vtable, which returns the vtable of a remote class
19796         (which can be the normal remoting vtable or the xdomain vtable).
19797         
19798         * threads.c: the xdomain invoke and dispatch wrappers must also be
19799         protected against interruptions.
19800
19801 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19802
19803         * icall.c: use memmove in BlockCopyInternal when the source and
19804         destination arrays are the same.
19805
19806 2004-11-09  Martin Baulig  <martin@ximian.com>
19807
19808         * class-internals.h (MonoGenericContainer): Removed `method' and
19809         `signature', replaced them with `is_method' and `is_signature'
19810         flags.  Added `context'.
19811
19812         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19813         instead of a `MonoGenericContainer *'.
19814
19815         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19816         for dynamic type parameters.
19817         (mono_metadata_load_generic_params): Setup `container->context'.
19818
19819         * reflection.c (mono_reflection_setup_generic_class): Setup
19820         `tb->generic_container->context'.
19821         (do_mono_reflection_bind_generic_parameters): Use
19822         mono_class_inflate_generic_type() to correctly inflate types,
19823         rather than using our own hack just for MONO_TYPE_VAR.
19824
19825 2004-11-09  Martin Baulig  <martin@ximian.com>
19826
19827         * class.c (mono_class_inflate_generic_method): Small fix; don't
19828         crash here.
19829
19830         * icall.c
19831         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19832         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19833         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19834         (ves_icall_Type_BindGenericParameters): Likewise.
19835         (ves_icall_Type_get_IsGenericInstance): Likewise.
19836         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19837         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19838         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19839         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19840
19841 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19844         assembly versions and public key tokens. Fixes #69113.
19845
19846 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19847
19848         * metadata.c: fix bug introduced with the type cache changes
19849         on 2004-11-06.
19850
19851 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19852
19853         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19854         the MonoClass pointer instead of the token in exception clauses.
19855         * reflection.c: updates for the above and make the code not depend
19856         on the structure of MonoExceptionClause.
19857
19858 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19859
19860         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19861         Add support for dynamic assemblies. Fixes #69114.
19862
19863         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19864
19865 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19866
19867         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19868         since most only those methods use it. the code member of
19869         MonoMethodPInvoke was dead, so that can be removed too. Also,
19870         remove inline_count (again, not used), and move slot so that it
19871         can share bits with some other flags. This saves 8 bytes in the
19872         structure and gives us about 50 kb back for mcs helloworld.cs
19873
19874         * *.[ch]: Do naming changes for the above.
19875
19876         * loader.c (mono_method_get_header): Lazily init the header
19877         on first access.
19878         (mono_get_method_from_token): don't init the header here
19879         (mono_free_method): the header may never be allocated
19880
19881         Overall, this saves 150 kb of unmanaged allocations
19882         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19883         memory at runtime.
19884         
19885         * loader.c, loader.h (mono_method_get_header): new accessor.
19886
19887         * *.[ch]: use the above method. Prepares us to lazily load
19888         the header.
19889
19890         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19891         three warnings, which are actual bugs (see 69206).
19892
19893         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19894         unused. Saves a cool 4 bytes / method.
19895
19896 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19897
19898         * metadata.c (builtin_types): Add types for System.Object here.
19899         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19900         for a class or valuetype from klass->this_arg or klass->byval_arg.
19901
19902         On mcs for a hello world, this gets us down from 21836 MonoType's
19903         to 14560.
19904
19905         (mono_metadata_free_type): Account for the above change.
19906
19907 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19910         exception instead of asserting if name is null.
19911         (ves_icall_System_AppDomain_GetData): Ditto.
19912
19913 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19916         EnumBuilder.
19917
19918         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19919         Return NULL when the domain does not have entry_assembly set.
19920
19921         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19922         Add a 'resource_modules' argument.
19923         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19924
19925         * reflection.c (mono_reflection_create_runtime_class): Move setting
19926         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19927         for enums too.
19928
19929         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19930         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19931         Throw an ArgumentNullException if 'ptr' is null.
19932
19933         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19934         assemblies here. Fixes #69020.
19935
19936 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19937
19938         * reflection.c (build_compressed_metadata): Fix the previous patch for
19939         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19940         the stack.
19941
19942 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19943
19944         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19945         the cultures is false. Fixes #69090.
19946
19947         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19948         detected by valgrind.
19949         
19950         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19951         TypeResolve multiple times for the same type. Fixes #65577.
19952
19953 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19954
19955         * marshal.c: Avoid using ldftn to call managed functions. It is
19956         much slower than just a call.
19957
19958         * reflection.c (mono_module_get_object): free the basename we
19959         allocate here from glib.
19960         
19961         * reflection.c (ensure_runtime_vtable): make sure to free
19962         overrides.  Also, we were allocating an array of MonoMethod not an
19963         array of MonoMethod*.
19964
19965         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19966
19967         * image.c (mono_image_close): free image->guid here.
19968
19969 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * reflection.c: Fix some spec conformance issues with the PE file
19972         structures so mcs compiled apps run on the Net 2.0 beta.
19973
19974 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19977         Implement this. Fixes #67264.
19978
19979         * debug-helpers.h debug-helpers.c marshal.c: Move 
19980         mono_find_method_by_name to debug-helpers.c.
19981
19982 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19983
19984         * object.c (mono_release_type_locks): type_initialization_hash is
19985         a GHashTable.
19986
19987         * reflection.c object.c object-internals.h: Fix warnings.
19988
19989         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19990         without accessors. Fixes #61561.
19991
19992         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19993         application base from the root domain if not set. Fixes #65641.
19994         (mono_runtime_init): Fix warning.
19995
19996 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19997
19998         * appdomain.c: call mono_thread_pool_init.
19999         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
20000         of worker threads based on the number of CPUs and the environment
20001         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
20002         for non-windows (windows) systems.
20003
20004 2004-10-27  Chris Toshok  <toshok@ximian.com>
20005
20006         * mono-debug-debugger.c (write_class): don't call mono_class_init
20007         here, as even with the check for (!klass->init_pending), we get
20008         into a situation where we're hitting cycles in class
20009         initialization.  Fixes #68816.
20010
20011 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * image.c: Avoid overwriting values in the loaded_images_hash when an
20014         assembly is loaded multiple times. Fixes #61152.
20015
20016         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
20017         so multiple satellite assemblies for the same name can be loaded.
20018         Fixes #68259.
20019
20020         * mono_domain_assembly_preload: Actually return the loaded assembly, 
20021         not NULL.
20022
20023         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
20024         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
20025
20026         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
20027         pending finalizers are not invoked after the appdomain has been 
20028         unloaded. Fixes #67862.
20029
20030 2004-10-22  Martin Baulig  <martin@ximian.com>
20031
20032         * mono-debug-debugger.c
20033         (mono_debugger_runtime_invoke): Don't box valuetypes.
20034
20035 2004-10-22  Chris Toshok  <toshok@ximian.com>
20036
20037         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
20038         don't hide private methods.
20039
20040 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
20041
20042         * icall.c: Allows the runtime to "share" (when known) the public key
20043         token of an assembly. This avoid the need to recalculate the token 
20044         (from the public key) in managed code.
20045
20046 2004-10-21  Chris Toshok  <toshok@ximian.com>
20047
20048         * debug-helpers.c (append_class_name): argh, revert last patch.
20049         
20050 2004-10-21  Chris Toshok  <toshok@ximian.com>
20051
20052         * debug-helpers.c (append_class_name): use '+' as the delimiter,
20053         not '/', so that it matches what the debugger uses to look up
20054         methods.
20055
20056 2004-10-21  Martin Baulig  <martin@ximian.com>
20057
20058         * mono-debug-debugger.c (mono_debugger_throw_exception): New
20059         public method; this is called each time an exception is thrown and
20060         allows the debugger to use exception catch points.
20061
20062 2004-10-21  Martin Baulig  <martin@ximian.com>
20063
20064         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
20065         the stack pointer and the exception object in some struct and pass
20066         that to the debugger.
20067
20068 2004-10-21  Chris Toshok  <toshok@ximian.com>
20069
20070         * mono-debug-debugger.c (do_write_class): add instance/static
20071         event support.  We don't expose "raise" or "other" yet.
20072         (event_is_static): new method.
20073
20074 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
20075
20076         * mono-debug-debugger.c
20077         (mono_debugger_handle_exception): Remove
20078         bogus return value for fussy compilers.
20079
20080 2004-10-20  Martin Baulig  <martin@ximian.com>
20081
20082         * mono-debug-debugger.c
20083         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
20084         (mono_debugger_handled_exception): Likewise.
20085
20086 2004-10-20  Martin Baulig  <martin@ximian.com>
20087
20088         * mono-debug-debugger.h (MonoDebuggerEvent): Added
20089         MONO_DEBUGGER_EVENT_EXCEPTION.
20090
20091         * mono-debug-debugger.c (mono_debugger_handle_exception): New
20092         public function to send the debugger a notification for an
20093         exception and inform it about a catch/finally clause.
20094
20095 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
20098         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
20099         fix 2.95 build. 
20100
20101         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
20102
20103 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20104
20105         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
20106         marshalled as [In,Out]. Fixes #58325.
20107
20108 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * reflection.c (mono_method_body_get_object): Implement some fields.
20111
20112 2004-10-12  Martin Baulig  <martin@ximian.com>
20113
20114         * reflection.c (mono_reflection_bind_generic_parameters): Small
20115         fix, correctly retrieve our parent from a generic instance.
20116
20117 2004-10-12  Martin Baulig  <martin@ximian.com>
20118
20119         * metadata.c (mono_metadata_generic_param_equal): We always have
20120         an owner.
20121
20122         * class.c
20123         (mono_class_from_generic_parameter): We need to have an owner.
20124         (my_mono_class_from_generic_parameter): Likewise.
20125
20126         * reflection.c (mono_reflection_setup_generic_class): Renamed to
20127         mono_reflection_create_generic_class() and added a new
20128         mono_reflection_setup_generic_class().  
20129         (mono_reflection_initialize_generic_param): If we're a nested
20130         generic type and inherited from the containing class, set our
20131         owner to the outer class.
20132
20133 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
20136
20137         * reflection.c (mono_method_body_get_object): New function to create
20138         a MethodBody object.
20139
20140         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
20141
20142 2004-10-11  Martin Baulig  <martin@ximian.com>
20143
20144         * metadata.c (_mono_metadata_type_equal): Renamed to
20145         do_mono_metadata_type_equal() and made static.
20146
20147 2004-10-11  Martin Baulig  <martin@ximian.com>
20148
20149         * appdomain.c: Bump corlib version number to 28.
20150
20151 2004-10-10  Martin Baulig  <martin@ximian.com>
20152
20153         * class-internals.h
20154         (MonoGenericInst): Added `MonoGenericContainer *container'.
20155         (MonoGenericMethod): Likewise.
20156         (MonoGenericContext): Likewise.
20157         (MonoGenericParam): Added `MonoGenericContainer *owner'.
20158
20159         * metadata.c
20160         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
20161         (do_mono_metadata_parse_generic_inst): Likewise.
20162         (mono_metadata_parse_type_full): New public method.  This is the actual
20163         mono_metadata_parse_type() implementation - with an additional
20164         `MonoGenericContainer *' argument.
20165         (mono_metadata_parse_array_full): Likewise.
20166         (mono_metadata_parse_signature_full): Likewise.
20167         (mono_metadata_parse_method_signature_full): Likewise.
20168         (mono_metadata_parse_mh_full): Likewise.
20169         (mono_type_create_from_typespec): Likewise.
20170         (mono_metadata_interfaces_from_typedef_full): New public method;
20171         this is similar to the other _full() methods, but we take a
20172         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
20173         (mono_metadata_parse_generic_param): Take an additional
20174         `MonoGenericContainer *' argument and lookup the MonoGenericParam
20175         from that container.
20176         (mono_metadata_generic_param_equal): New static method to compare
20177         two type parameters.
20178         (_mono_metadata_type_equal): New static method; takes an
20179         additional `gboolean signature_only' argument - if true, we don't
20180         compare the owners of generic parameters.
20181         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
20182         with a TRUE argument - do a signature-only comparision.
20183
20184         * loader.c: Use the new _full() methods and pass the
20185         MonoGenericContainer to them.
20186
20187         * object-internals.h (MonoReflectionTypeBuilder): Added
20188         `MonoGenericContainer *generic_container' field.
20189         (MonoReflectionMethodBuilder): Likewise.
20190
20191 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
20194         case initial images of dynamic assemblies.
20195
20196         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
20197
20198         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
20199
20200         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
20201         length of event->other array.
20202         (typebuilder_setup_events): Ditto.
20203
20204         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
20205         'assembly_by_name' and add an 'assemblies' list.
20206
20207         * assembly.h assembly.c: Add a new search hook for determining whenever
20208         an assembly is already loaded. Use this instead of searching in the
20209         loaded_assemblies list.
20210
20211         * domain.c appdomain.c: Implement the new search hook so loaded 
20212         assemblies are now scoped by appdomain. Fixes #67727.
20213
20214 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * threads.c (mono_thread_attach): Initialize synch_lock field so
20217         mono_thread_detach works again.
20218
20219         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
20220         'lib' too. Fixes #63130.
20221
20222 2004-10-06  Jackson Harper  <jackson@ximian.com>
20223
20224         * culture-info-tables.h: regenerated.
20225
20226 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
20229         implemented by other interfaces in the result. Fixes #65764.
20230         
20231         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20232         Handle unloadable modules without crashing.
20233
20234         * image.c (load_modules): Revert the previous patch since modules must
20235         have a fixed index inside the array.
20236         
20237         * image.c (load_modules): Don't include native modules in the modules
20238         array.
20239
20240 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * reflection.h: Add param_defaults field.
20243
20244         * reflection.c: Add support for parameter defaults in dynamic methods.
20245         Fixes #64595.
20246
20247         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
20248         an empty string when a type has no namespace. Fixes #64230.
20249
20250 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
20251
20252         * tabledefs.h: Added "internal" security actions to support non-CAS
20253         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
20254         Note: they do not seems to be used anymore in 2.0 (new metadata format)
20255
20256 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
20257
20258         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
20259         constructor of abstract class. Fixes #61689.
20260
20261 2004-10-04  Martin Baulig  <martin@ximian.com>
20262
20263         * class-internals.h (MonoGenericContainer): New type.
20264         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
20265         `MonoGenericContainer *generic_container'.
20266         (MonoClass): Replaced `gen_params' and `num_gen_params' with
20267         `MonoGenericContainer *generic_container'.
20268
20269         * metadata.c (mono_metadata_load_generic_params): Return a
20270         `MonoGenericContainer *' instead of a `MonoGenericParam *';
20271         removed the `num' argument.
20272
20273 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20274
20275         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
20276         for dynamic images.
20277
20278         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
20279         machine fields.
20280
20281         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
20282
20283         * reflection.c: Save pe_kind and machine values into the generated
20284         image file.
20285
20286         * appdomain.c: Bump corlib version number.
20287
20288         * object-internals.h: Reorganize layout of LocalBuilder.
20289
20290         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
20291         New helper function.
20292
20293         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
20294         created MonoType for dynamic types. Fixes #66180.
20295
20296 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
20297
20298         * threadpool.c: the ares hashtable needs a critical section around it.
20299         this prevents some nasty segfaults
20300
20301 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20302
20303         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
20304         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
20305         bug 67324).
20306         
20307 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
20310         
20311 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20312
20313         * image.c: Always canonicalize image file names, to avoid loading
20314         the same assembly twice when referenced using a relative path.
20315
20316 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20317
20318         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
20319
20320         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
20321
20322         * marshal.c: Fix warnings.
20323
20324 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
20325
20326         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
20327         attempting to marshal the delegate_trampoline as the method_addr.
20328         This patch has a static hashtable of marshalled delegates so that 
20329         we can map delegate_trampoline addresses back to delegates.  This
20330         allows a delegate passed to managed code to be passed back into native
20331         code.  Fixes #67039
20332
20333 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
20336
20337         * reflection.c (method_encode_code): Align method headers properly.
20338         Fixes #66025.
20339
20340 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20341
20342         * marshal.c: In the runtime invoke wrapper, reset the abort
20343         exception if it is cached. This avoids the automatic rethrowal of 
20344         the exception after the catch of the wrapper. Also check for pending
20345         interruptions before calling the managed method. This is done using
20346         the new method emit_thread_force_interrupt_checkpoint, since the
20347         normal checkpoint method is ignored when running the invoke wrapper.
20348         * object.c: If the abort exception is rethrown, set the abort_exc
20349         field of the thread, so it will be rethrown aftere every catch.
20350         * threadpool.c: Only run an interruption checkpoint if what has been
20351         requested is a stop of the thread (aborts will be ignored).
20352         * threads.c: By default, a thread will now never be interrumped while
20353         running the runtime invoke wrapper (this ensures that runtime_invoke
20354         will always return to the caller if an exception pointer is provided).
20355         There is a new special method mono_thread_force_interruption_checkpoint()
20356         to force an interruption checkpoint even if running a protected
20357         wrapper, which is used by the same runtime invoke wrapper to do a check
20358         at a safe point.
20359
20360 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20361
20362         * object.c, object-internals.h: Implemented mono_release_type_locks,
20363         which releases the cctor locks held by a thread.
20364         * threads.c, threads.h: In thread_cleanup, release cctor locks held
20365         by a thread. Added mono_thread_exit() method to be used to safely stop
20366         a thread.
20367
20368 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20369
20370         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20371         Move null check before dereference.  Avoid indexing beyond the end
20372         of the 'modules' array.
20373
20374 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20375
20376         * metadata-internals.h (MonoImage): Add module_count field.
20377         * image.c (load_modules): Set image->module_count.
20378         (mono_image_load_file_for_image): Use image->module_count.
20379         * reflection.c (mono_image_load_module): Append to image->modules array 
20380         of dynamic assembly.
20381         (mono_module_get_object): Fix loop to actually increment index.
20382         Use image->module_count.
20383         * assembly.c (mono_assembly_load_references): Use image->module_count.
20384         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
20385         Likewise.
20386
20387 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
20390         Avoid assert on generic types.
20391
20392 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
20395
20396         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
20397
20398         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
20399         function to convert a MarshalSpec structure to its managed counterpart.
20400
20401         * reflection.c: Fix warnings.
20402         
20403         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
20404         field.
20405
20406         * icall.c (mono_create_icall_signature): Fix build.
20407
20408 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * icall.c: Add MakePointType icall.
20411
20412         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
20413         warnings.
20414
20415 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20416
20417         * threadpool.c: reuse allocated slots in the queue.
20418
20419 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
20422
20423         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
20424
20425         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
20426         previous change.
20427
20428         * tabledefs.h: Add constants for pinvoke attributes BestFit and
20429         ThrowOnUnmappableChar.
20430
20431         * icall.c (ves_icall_Type_GetPacking): New icall.
20432
20433 2004-09-24  Martin Baulig  <martin@ximian.com>
20434
20435         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20436
20437 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20438
20439         * appdomain.c:
20440         (mono_domain_set): allow setting a domain that is being unloaded.
20441         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20442         being unloaded.
20443
20444 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20447         the GetCustomAttributes icall.
20448
20449 2004-09-23  Martin Baulig  <martin@ximian.com>
20450
20451         * object-internals.h (MonoReflectionGenericParam): Replaced
20452         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20453         with `guint32 attrs'.
20454
20455 2004-09-23  Martin Baulig  <martin@ximian.com>
20456
20457         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20458
20459 2004-09-23  Martin Baulig  <martin@ximian.com>
20460
20461         * object-internals.h (GenericParameterAttributes): New enum.
20462
20463 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20464
20465         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20466         
20467         * class.c (init_events): Fill out event->other field.
20468
20469         * class.c: Fix warnings.
20470
20471         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20472
20473 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20474
20475         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20476         walk which doesn't supply the IL offset.
20477
20478 2004-09-22  Martin Baulig  <martin@ximian.com>
20479
20480         * reflection.c (mono_reflection_setup_internal_class): If we're
20481         System.ValueType, System.Object or System.Enum, set
20482         `klass->instance_size' and create the vtable.
20483         (mono_reflection_create_internal_class): If we're an enum type,
20484         get the base class from our current corlib.
20485
20486 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20487
20488         * reflection.h (MonoResolveTokenError): New type.
20489
20490         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20491         icall.
20492
20493         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20494
20495 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20496
20497         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20498         Support also calling constructors, but only for already allocated objects.
20499
20500 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20501
20502         * reflection.c (type_get_qualified_name): If the klass is null
20503         return the typename to avoid a NullRefEx.
20504         (encode_cattr_value): Get the qualified name of the boxed type,
20505         not the underlying enumtype.  Fixes #62984.
20506
20507 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20508
20509         * marshal.c: Fix problems with previous checkin.
20510
20511 2004-09-21    <vargaz@freemail.hu>
20512
20513         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20514         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20515
20516         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20517
20518 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20519
20520         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20521         should only return a type for pointers, arrays, and passbyref types.
20522         Fixes bug #63841.
20523
20524 2004-09-21  Martin Baulig  <martin@ximian.com>
20525
20526         * domain.c (mono_debugger_check_runtime_version): New public
20527         function.
20528
20529         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20530
20531 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20532
20533         * reflection.c: Added missing sort to the declarative security 
20534         attributes table. MS implementation stops seeing the attributes if the
20535         token number regress in the table (as shown by ildasm and permview).
20536
20537 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * object-internals.h (MonoReflectionModule): Add 'token' field.
20540         
20541         * reflection.c (mono_reflection_get_token): Add support for Module
20542         and Assembly.
20543         (mono_module_get_object): Set 'token' field.
20544         (mono_module_file_get_object): Set 'token' field.
20545
20546         * icall.c: Add new Assembly and Module icalls.
20547
20548         * appdomain.c: Bump corlib version.
20549
20550 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20551
20552         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20553         tokens of metadata objects.
20554
20555         * reflection.h reflection.c (mono_reflection_get_token): New function
20556         to obtain the token of a metadata object.
20557
20558         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20559
20560 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20561
20562         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20563         
20564         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20565
20566 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20567
20568         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20569         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20570         AssemblyBuilder to access the permissions set in the class lib.
20571         * reflection.c: Added security attributes encoding step in 
20572         mono_image_build_metadata.
20573         * tabledefs.h: Added new security actions defined in 2.0:
20574         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20575
20576 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20577
20578         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20579         macro parameter.
20580
20581 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20582  
20583         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20584           finalized. There where random SIGSEVs at program termination, when
20585           an object being finalized was trying to do a string comparison and
20586           the current culture was already finalized.
20587  
20588 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20589
20590         * threads.c: call thread_cleanup before finishing the thread if we get
20591         there.
20592
20593 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20594
20595         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20596         assemblies from the parent. Fixes #65665.
20597
20598 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20599
20600         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20601         modifiers.
20602
20603 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20604
20605         * reflection.h: add prototype for mono_get_dbnull_object
20606         * reflection.c: add prototypes for get_default_param_value_blobs 
20607         and mono_get_object_from_blob for fussier compilers
20608
20609 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20610  
20611         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20612         false deadlock checks in class initialization.
20613  
20614 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20615
20616         * image.c (mono_image_addref): Fix comment.
20617
20618         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20619         possible.
20620
20621 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20622
20623         * reflection.c (mono_param_get_objects): Modified to return
20624         ParameterInfo.DefaultValue object.
20625
20626         (get_default_param_value_blobs):
20627         (mono_get_object_from_blob):
20628         (mono_get_dbnull_object): New helper routines. 
20629
20630         * object.c (mono_get_constant_value_from_blob): New helper routine
20631         carved out from get_default_field_value ()
20632
20633         * object-internals.h (mono_get_constant_value_from_blob): Added
20634         function declaration.
20635
20636 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20637
20638         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20639         referenced assemblies. Fixes #62135.
20640
20641         * exception.h exception.c (mono_get_exception_file_not_found2): New
20642         helper function.
20643
20644 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * class.h class.c: Add mono_type_get_underlying_type ().
20647
20648 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20649
20650         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20651         Fix GetTypes() to support dynamically created assemblies.
20652
20653 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20654
20655         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20656         
20657         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20658         previous patch.
20659
20660         * reflection.h reflection.c loader.c: Allow dynamic construction of
20661         pinvoke methods. Fixes #65571.
20662         
20663         * reflection.c (mono_reflection_get_type): Revert previous change since
20664         it causes regressions.
20665
20666 2004-09-08  Martin Baulig  <martin@ximian.com>
20667
20668         * class.c (class_compute_field_layout): Don't call
20669         mono_class_layout_fields() for open generic instances.
20670
20671 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20672         * threads.c appdomain.c: fix typo in GC macro
20673
20674 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20675
20676         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20677         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20678
20679 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * image.c (mono_image_close): Applied patch from 
20682         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20683         assembly is loaded multiple times from data.
20684         
20685         * image.c (mono_image_open): Fix warning.
20686
20687 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20690         once. Fixes #58334.
20691         
20692         * reflection.c (mono_reflection_create_runtime_class): Initialize
20693         klass->nested_classes. Fixes #61224.
20694
20695 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20696
20697         * threads.c: sched_yield() on exit, to allow threads to quit.
20698
20699 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20700
20701         * object.c (mono_unhandled_exception): Remove leftover debug code.
20702
20703 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20704
20705         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20706
20707 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20710         
20711         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20712
20713 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20714
20715         * marshal.c (emit_marshal_array): Null terminate string arrays.
20716         
20717         * marshal.c (raise_auto_layout_exception): Fix warning.
20718
20719         * reflection.c (mono_param_get_objects): Initialize the default value
20720         with DBNull.Value, not null. Fixes #62123.
20721
20722 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20723
20724         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20725         throw an exception with a cute explanation.
20726
20727 2004-09-06  Dick Porter  <dick@ximian.com>
20728
20729         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20730         Close the new process's thread handle, as we don't use it.  The
20731         handle stays around forever otherwise.
20732
20733 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20734
20735         * object.c (arith_overflow): Fix warning.
20736
20737         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20738         calling conventions in method refs. Fixes #65352.
20739
20740         * reflection.c: Fix warnings.
20741
20742 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20743
20744         * icall.c: Add a new icall for Array.Clear
20745
20746 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20747
20748         * object.c: When allocating an array, we have to throw
20749         an overflow exception if any of the lengths are < 0.
20750
20751 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20752
20753         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20754         properly. Also move implementation of string array marshalling to 
20755         managed code. Fixes #42316.
20756
20757 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20758
20759         * assembly.c: provide more information when loading an assembly fails.
20760
20761 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20762
20763         * filewatcher.c: don't expect the development fam package to be
20764         installed.
20765
20766 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20767
20768         * marshal.c: Make a copy of the signature cookie since it will be
20769         freed by the caller.
20770         
20771         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20772
20773         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20774
20775         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20776         marshal specs.
20777
20778         * marshal.c: More refactoring.
20779         
20780         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20781         smaller functions.
20782
20783 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20784
20785         * object.c: In mono_message_invoke, fill the output parameter array after
20786           calling the managed method (it was done before the call). This fixes
20787           bug #59299.
20788
20789 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20790
20791         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20792         as well.
20793
20794 2004-09-02  Martin Baulig  <martin@ximian.com>
20795
20796         * class.c (mono_class_instance_size): Don't allow generic type
20797         definitions or open generic instances.
20798         (mono_class_array_element_size): If we're a value type, call
20799         mono_class_instance_size() on the original class.
20800
20801         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20802         handle generic instances.
20803
20804         * mono-debug-debugger.c (write_type): Handle generic instances
20805         like classes.
20806
20807 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20808
20809         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20810         the allocation request fails. Fixes #65089.
20811
20812         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20813         
20814         * object.c (mono_runtime_free_method): New function to free a dynamic
20815         method.
20816
20817         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20818         delegate trampoline.
20819
20820         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20821         with hasthis as dynamic,
20822
20823         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20824
20825         * domain.c (mono_jit_info_table_remove): New function to remove an
20826         entry from the jit info table.
20827
20828         * class-internals.h (MonoMethod): Add 'dynamic' field.
20829
20830         * loader.c: Fix warnings.
20831
20832 2004-09-01  Martin Baulig  <martin@ximian.com>
20833
20834         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20835         instead of mono_debugger_lock() because the latter one is a no-op
20836         unless running in the debugger.
20837
20838 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20839
20840         * class.c (class_compute_field_layout): Classes with auto-layout or
20841         reference fields are not blittable.
20842         
20843 2004-09-01  Dick Porter  <dick@ximian.com>
20844
20845         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20846         mono_image_get_filename() to get the assembly location.
20847
20848         * icall.c:
20849         * metadata.h: Fix compile warnings
20850
20851 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20852
20853         * class.c (class_compute_field_layout): System.Object is blittable.
20854
20855         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20856         as in/out. Fixes #59909.
20857
20858 2004-09-01  Martin Baulig  <martin@ximian.com>
20859
20860         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20861         mono_metadata_generic_inst_is_valuetype() if we're a generic
20862         instance to check whether our underlying type is a reference type.
20863
20864 2004-09-01  Martin Baulig  <martin@ximian.com>
20865
20866         * metadata.c (mono_type_size): If we're a generic instance, call
20867         mono_class_value_size() for value types.
20868
20869 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20870
20871         * marshal.c: Implement more custom marshalling functionality. Fixes
20872         #64915.
20873
20874 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20875
20876         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20877
20878 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20881
20882         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20883
20884         * icall.c: Fix some warnings.
20885
20886         * threads.c (abort_appdomain_thread): Fix unref errors.
20887         (mono_thread_current): Fix THREAD_DEBUG define.
20888
20889 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20892
20893         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20894
20895 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20898         string arrays.
20899
20900 2004-08-28  Martin Baulig  <martin@ximian.com>
20901
20902         * metadata.c
20903         (mono_metadata_generic_inst_is_valuetype): New public function.
20904
20905         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20906         mono_metadata_generic_inst_is_valuetype() if we're a generic
20907         instance to check whether our underlying type is a valuetype.
20908
20909 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20912         #63768.
20913
20914 2004-08-25  Martin Baulig  <martin@ximian.com>
20915
20916         * loader.c (mono_get_method_from_token): Abstract methods can also
20917         be generic and thus have type parameters.
20918
20919         * metadata-internals.h
20920         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20921
20922         * reflection.c (mono_image_get_generic_param_info): Don't create a
20923         metadata row, just add an entry to the `gen_params' array.
20924         (build_compressed_metadata): Sort the `gen_params' array and then
20925         actually create the metadata.
20926
20927 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20928
20929         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20930
20931 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20932
20933         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20934
20935 2004-08-24  Martin Baulig  <martin@ximian.com>
20936
20937         * class.cs (mono_class_is_subclass_of): Like an interface, a
20938         generic instance also derives from System.Object.
20939
20940 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20941
20942         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20943         custom modifiers to be in any order. Fixes #61990.
20944
20945 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * object.c: Register mono_object_new_fast icall.
20948         
20949         * object.c (mono_class_get_allocation_ftn): Return to calling
20950         mono_object_new_fast, since it seems faster to compute the object 
20951         size in unmanaged code than passing it as a parameter.
20952
20953         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20954
20955         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20956         this function with Boehm as the oom handler, so we don't have to check
20957         the result of GC_malloc.
20958
20959         * object.c: Remove checks for oom.
20960
20961         * object.h object.c (mono_class_get_allocation_ftn): New function to
20962         return the icall which can be used to allocate an instance of a given
20963         class. 
20964
20965         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20966
20967         * class-internals.h: Add 'enabled' field.
20968
20969 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20970
20971         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20972
20973 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20974         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20975         value 0x0010.
20976
20977 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20978
20979         * appdomain.c: use the Tls function for appdomain too,
20980         at Zoltan's request. Actually return in mono_context_get
20981
20982         * appdomain.c, profiler.c, threads.c: use __thread
20983
20984 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * appdomain.c threads.c: Call GC_CreateThread on windows.
20987
20988         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20989         multiple libraries since this don't work on windows.
20990
20991 2004-08-18  Martin Baulig  <martin@ximian.com>
20992
20993         * class-internals.h
20994         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20995         MonoMethodHeader.
20996
20997         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20998         MonoMethodNormal since we also need it for abstract and interface
20999         methods.
21000
21001         * reflection.c
21002         (build_compressed_metadata): Sort the GenericParam table.
21003         (mono_image_create_token): Added `gboolean create_methodspec'
21004         argument; this is false when generating a MethodImpl token.
21005         (reflection_methodbuilder_to_mono_method): Abstract and interface
21006         methods may also have generic parameters.
21007
21008 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21009
21010         * appdomain.c: thread local alloc
21011
21012 2004-08-17  Martin Baulig  <martin@ximian.com>
21013
21014         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
21015
21016         * icall.c
21017         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
21018         argument.
21019
21020         * class.c (mono_type_get_full_name): New public function.
21021         (mono_type_get_name): Don't include the type arguments.
21022
21023 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * Makefile.am: Build static versions of libmetadata and libmonoruntime
21026         for inclusion into the mono executable.
21027
21028 2004-08-16  Martin Baulig  <martin@ximian.com>
21029
21030         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
21031         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
21032
21033 2004-08-14  Martin Baulig  <martin@ximian.com>
21034
21035         * class.c (dup_type): Also copy the `byref' field.
21036
21037 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21038
21039         * reflection.c (create_dynamic_mono_image): Revert the last change 
21040         since it breaks bootstrap.
21041
21042 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
21045
21046         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
21047         not free them with g_free.
21048
21049 2004-08-11  Martin Baulig  <martin@ximian.com>
21050
21051         * reflection.c (mono_reflection_setup_internal_class): Also call
21052         mono_class_setup_mono_type() if we already have a `tb->type.type'.
21053
21054 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
21055
21056         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
21057         called during default (first) AppDomain creation. Keep track of
21058         Evidence when loading assemblies.
21059
21060 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21061
21062         * opcodes.c, opcodes.h: reduce runtime relocations.
21063
21064 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
21065
21066         * culture-info.h, locales.c: fixes and chages to sue the new
21067         optimized format of the locale data.
21068         * culture-info-tables.h: regenerated.
21069
21070 2004-08-06  Geoff Norton <gnorton@customerdna.com>
21071         
21072         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
21073
21074 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
21075
21076         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
21077         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
21078         * domain-internals.h: icall declaration.
21079         * icall.c: icall registration.
21080         * object-internals.h: New fields in MonoAssembly for CAS.
21081
21082 2004-08-05  Duncan Mak  <duncan@ximian.com>
21083
21084         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21085         CEE_LDELEM_ANY.
21086
21087 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21088
21089         * reflection.c: fix to deal with object[] arrays in custom ctors
21090         (bug #62550).
21091
21092 2004-08-05  Martin Baulig  <martin@ximian.com>
21093
21094         * class.c (mono_class_array_element_size): Added support for
21095         generic instances and correctly handle "recursive" types.
21096
21097 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21098
21099         * assembly.c: Fix warnings.
21100
21101 2004-08-04  Martin Baulig  <martin@ximian.com>
21102
21103         * class.c
21104         (mono_type_get_name_recurse): Added `gboolean include_arity'
21105         argument specifying whether or not we should include the generic
21106         arity in the type name.
21107         (_mono_type_get_name): New static function.
21108         (mono_class_setup_vtable): If we're a generic instance, don't
21109         include the generic arity in the names of explicit method
21110         implementations.        
21111
21112 2004-08-03  Martin Baulig  <martin@ximian.com>
21113
21114         * class.c (mono_type_get_name_recurse): Enclose the generic type
21115         arguments in `<', '>'.
21116
21117 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21118
21119         * gc.c: make GC warning messages use the trace API, they are just
21120         noise to most of the users.
21121
21122 2004-08-03  Martin Baulig  <martin@ximian.com>
21123
21124         * debug-mono-symfile.c (read_string): Correctly read the string.
21125
21126 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
21129         
21130         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
21131         icalls.
21132         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
21133
21134 2004-07-30  Martin Baulig  <martin@ximian.com>
21135
21136         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
21137         Reflect latest symbol writer changes.   
21138
21139 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
21140
21141         * object.c: always create an object if null is passed
21142         to Invoke() where a valuetype is expected.
21143
21144 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21145
21146         * marshal.c (mono_marshal_init): make managed
21147         signatures match native ones better for 64bits.
21148
21149 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21150
21151         * appdomain.c: hack to build correctly the private bin path on windows.
21152         Fixes bug #61991.
21153
21154 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21155
21156         * assembly.c: Load mscorlib from the correct framework directory
21157           (mono/<version>/mscorlib.dll).
21158         * appdomain.h: Added prototypes for new functions.
21159         * internals.h: Added some prototypes.
21160         * domain.c: When initializing the runtime, get from the executable and
21161           the configuration files the runtime version that the app supports.
21162           Added support methods for reading app.exe.config. Added list of versions
21163           supported by the JIT. Added two new methods: mono_init_from_assembly,
21164           which initializes the runtime and determines the required version from
21165           the provided exe file, and mono_init_version, which initializes
21166           the runtime using the provided version.
21167         * icall.c: Get machine.config from version-specific directory.
21168         * reflection.c: When generating an image, embed the version number
21169           of the current runtime.
21170
21171 2004-07-28  Dick Porter  <dick@ximian.com>
21172
21173         * socket-io.c
21174         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
21175         returned sockaddr size before creating the remote address object.
21176         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
21177         61608.
21178
21179 2004-07-28  Dick Porter  <dick@ximian.com>
21180
21181         * locales.c (string_invariant_compare_char): Fix invariant char
21182         compares between upper and lower cases.  Fixes bug 61458.
21183
21184 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
21185         
21186         * marshal.c: actually cache stelem.ref wrappers.
21187         
21188 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21189
21190         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
21191         sections and remove the mono_cli_rva_map () function.
21192
21193 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21194
21195         * debug-mono-symfile.c: fix one more endianess issue, from a patch
21196         by Geoff Norton (<gnorton@customerdna.com>).
21197
21198 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21199
21200         * class.c: fix class loads for pointer types (typeof(int) !=
21201         typeof(int*)).
21202
21203 2004-07-27  Martin Baulig  <martin@ximian.com>
21204
21205         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
21206         reading the debugging information from an external ".mdb" file.
21207
21208 2004-07-24  Martin Baulig  <martin@ximian.com>
21209
21210         * reflection.c (mono_image_get_type_info): Only write a class
21211         layout entry if we actually have a size or a packing size.
21212
21213 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21214
21215         * reflection.c (type_get_fully_qualified_name): 
21216         insert cast to get type checking of ?: with non-gcc compilers
21217
21218 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21219
21220         * rand.c: use g_getenv for both lookups of
21221         MONO_EGD_SOCKET
21222
21223 2004-07-17  Martin Baulig  <martin@ximian.com>
21224
21225         * reflection.c (mono_reflection_bind_generic_method_parameters):
21226         Set `gmethod->reflection_info'.
21227
21228 2004-07-17  Martin Baulig  <martin@ximian.com>
21229
21230         * class.c (mono_class_create_from_typedef): Insert the newly
21231         created class into the hash table before computing the interfaces
21232         since we could be called recursively.
21233
21234 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21235
21236         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
21237         function to implement stelem.ref in managed code
21238         * class-internals.h, debug-helpers.c: a new wrapper type
21239         for the above.
21240
21241 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
21242
21243         * gc.c: allow GC handles to work even when no GC is compiled in.
21244         Fix part of bug #61134 (GetAddrOfPinnedObject).
21245
21246 2004-07-13  Peter Williams  <peter@newton.cx>
21247  
21248         * process.c (complete_path): Make sure we don't attempt to execute
21249         directories.
21250  
21251 2004-07-12  Geoff Norton <gnorton@customerdna.com>
21252
21253         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
21254           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
21255           and will add/subtract the hour if needed
21256
21257 2004-07-12  Martin Baulig  <martin@ximian.com>
21258
21259         * reflection.c (mono_field_get_object): If we have
21260         `field->generic_info', take the attributes from
21261         `field->generic_info->generic_type'.    
21262
21263 2004-07-12  Martin Baulig  <martin@ximian.com>
21264
21265         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
21266         This function must be called before initializing the runtime.
21267         (mono_debug_init_1): New function; call this after initializing
21268         the runtime, but before loading the assembly.  It tells the
21269         debugger to load corlib and the builtin types.
21270
21271         * mono-debug-debugger.c: Did some larger changes in the debugging
21272         code; support recursive class declarations, make sure we actually
21273         add all classes.
21274
21275 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21276
21277         * debug-helpers.c: undo my previous patch and fixed the real issue in
21278         ../mini/exceptions-x86.c
21279
21280 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21281
21282         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
21283         when no HOME env. variable was set and a NullRef was thrown in a .cctor
21284         called from other .cctors.
21285
21286 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
21287
21288         * loader.c: Removed the mono_loader_wine_init hack now that we are
21289         doing a managed version of Windows.Forms.
21290
21291 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21292
21293         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
21294         threadpool.c, threads.c: remove static data from rootset.
21295
21296 2004-07-09  Dick Porter  <dick@ximian.com>
21297
21298         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
21299         Don't do any more processing if the matched length was 0.  It was
21300         increasing the size of the string before.  Fixes bug 61167.
21301
21302 2004-07-09  Dick Porter  <dick@ximian.com>
21303
21304         * socket-io.h:
21305         * socket-io.c
21306         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21307         Add support for SO_PEERCRED if its available.
21308
21309 2004-07-09  Peter Bartok <pbartok@novell.com>
21310         * loader.c: winelib.exe.so error message is now only displayed if
21311         MONO_DEBUG is set. To help us avoid questions when people are trying
21312         out the new Managed.Windows.Forms.
21313
21314 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21315
21316         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
21317         for isinst and castclass wrappers.
21318
21319         * class-internals.h icall.c: Move registration and lookup of JIT icalls
21320         to libmetadata from the JIT, so they could be used by the marshalling
21321         code and the interpreter.
21322
21323         * marshal.c: Register marshalling related JIT icalls here instead of
21324         in mini.c. Use CEE_MONO_ICALL instead of the family of 
21325         CEE_MONO_PROC<x> opcodes to call marshalling functions.
21326
21327         * metadata.h: Remove unneeded marshalling conversions.
21328
21329         * opcodes.c: Update for new opcodes.
21330         
21331 2004-07-08  Martin Baulig  <martin@ximian.com>
21332
21333         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
21334         (mono_debug_get_domain_data): Make this function static.
21335
21336 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21337
21338         * gc.c, object.h: add nice GC handle API for embedders.
21339
21340 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21341
21342         * reflection.c: more changes for the new api
21343
21344         * object.c: When we reflect on a field w/ a constant value, it
21345         will not have a memory location, so we must access metadata. Also,
21346         allow easier reading of strings so that we can read them from
21347         the constant data.
21348
21349         * class.c (mono_class_layout_fields): no need for literal fields here.
21350
21351         * class-internals.h: api changes for const fields
21352
21353         * icall.c (ves_icall_get_enum_info): use new apis for const fields
21354
21355 2004-07-06  Martin Baulig  <martin@ximian.com>
21356
21357         * mono-debug.h: Increment version number to 44.
21358
21359         * mono-debug.c (mono_debug_add_wrapper): The second argument is
21360         now a gpointer, rewrote this whole method.
21361
21362         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
21363         function.  Add information about the wrapper in a new "misc table".
21364
21365         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
21366         for the new misc table.
21367
21368 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21369
21370         * metadata-internals.h image.c: Add a cache for helper signatures.
21371
21372         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
21373
21374 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
21377         delegates from a delegate. Fixes #61033.
21378         
21379         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
21380         marshalling of stringbuilder arrays. Fixes #59900.
21381
21382 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21383
21384         * icall.c: Add EnumBuilder:setup_enum_type icall.
21385
21386 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21387
21388         * icall.c: Added a new icall for the property version of
21389         OffsetOfStringData.
21390
21391 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21392
21393         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
21394         it has a constant size across platforms.
21395
21396         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
21397         stack trace.
21398
21399 2004-06-29  Martin Baulig  <martin@ximian.com>
21400
21401         * mono-debug.c (mono_debug_add_method): Protect the whole function
21402         in mono_debugger_lock(), not just parts of it.
21403
21404 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21405
21406         * reflection.c: make sure padding bytes in heaps are zeroed.
21407
21408 2004-06-24  David Waite  <mass@akuma.org>
21409
21410         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
21411         image.c, loader.c, locales.c, marshal.c, metadata.c,
21412         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
21413         string-icalls.c, threads.c: change to C90-style comments from C99 /
21414         C++ -style
21415
21416 2004-06-24  Dick Porter  <dick@ximian.com>
21417
21418         * threads.c
21419         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
21420         return createdNew.  Fixes bug 60412.
21421
21422         * threads-types.h: 
21423         * icall.c: Add createdNew parameter to CreateMutex icall
21424
21425 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21426
21427         * reflection.c, object-internals.h: save default value in params.
21428
21429 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21430
21431         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
21432         no need to build a new path combining that with the application base.
21433         Fixes bug #60442.
21434
21435 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21436
21437         * reflection.c: fixed minor standard compliance issues.
21438
21439 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21440
21441         * reflection.c: fixed issue with encoding some custom attributes
21442         (arrays in properties and fields, bug #60411).
21443
21444 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21445
21446         * reflection.c: fix start address when copying the public key token.
21447
21448 2004-06-23  Martin Baulig  <martin@ximian.com>
21449
21450         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21451         the `exc' object in a static object to put it into the GC's root set.
21452
21453 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21454
21455         * reflection.c: make mono_reflection_setup_internal_class ()
21456         callable a second time to setup a new parent class.
21457
21458 2004-06-23  Dick Porter  <dick@ximian.com>
21459
21460         * threads.c: Check for WAIT_IO_COMPLETION return values.
21461
21462 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21463
21464         * appdomain.c: Removed the g_free on the public key token. Now copy 
21465         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21466         * assembly.c: Added public key token string value when loading 
21467         assemblies. Fix bug #60439.
21468         * icall.c: Added missing informations (like public key) in 
21469         GetReferencedAssemblies. Fix #60519.
21470         * image.h: Changed definition for public key token from const char*
21471         public_tok_value to guchar public_key_token [17];
21472         * reflection.c: Updated for changes to public key token.
21473
21474 2004-06-22  Lluis Sanchez Gual
21475
21476         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21477         for the field in base classes.
21478
21479 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21480
21481         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21482         mark headers as not supported, they are installed only for use by the
21483         debugger.
21484
21485 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21486
21487         * *.c, *.h: avoid namespace pollution in public headers.
21488
21489 2004-06-21  Martin Baulig  <martin@ximian.com>
21490
21491         * exception.c (mono_get_exception_security): It's in
21492         "System.Security", not in "System".
21493
21494         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21495         the exception classes.
21496
21497 2004-06-21  Martin Baulig  <martin@ximian.com>
21498
21499         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21500         Protect the exception object from being finalized.
21501
21502 2004-06-21  Martin Baulig  <martin@ximian.com>
21503
21504         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21505         public function.
21506
21507 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21508
21509         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21510         if it was not loaded before. Fix parts of #60439.
21511
21512 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21513
21514         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21515         code that was broken since Ben's change: wrappers are now
21516         dependent on the method signature only again.
21517
21518 2004-06-21  Martin Baulig  <martin@ximian.com>
21519
21520         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21521         added interface support.
21522
21523 2004-06-21  Martin Baulig  <martin@ximian.com>
21524
21525         * class.c (mono_vtable_get_static_field_data): New public method.
21526
21527 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21528
21529         * filewatcher.c : Windows build fix to be compliant with API changes.
21530
21531 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21532
21533         * class.h, class.c: more accessors.
21534         * metadata.h, metadata.c: prepare for hiding MonoType and
21535         MonoMethodSignature: people should use the accessors from now on
21536         outside of the tree.
21537
21538 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21539
21540         * *.c, *.h: more API cleanups.
21541
21542 2004-06-18  Jackson Harper  <jackson@ximian.com>
21543
21544         * assembly.c: Trace loading assemblies.
21545         * loader.c: Trace loading native libraries.
21546         * mono-config.c: Trace loading config files.
21547         
21548 2004-06-18  Dick Porter  <dick@ximian.com>
21549
21550         * locales.c: Tell ICU the lengths of strings, it can cope with
21551         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21552
21553 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21554
21555         * image.c: swapped name/filename;
21556
21557 2004-06-18  Martin Baulig  <martin@ximian.com>
21558
21559         * mono-debug-debugger.c (write_class): Write the parent class at
21560         the end of the header.
21561
21562 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21563
21564         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21565
21566 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21567
21568         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21569         (bundle_obj): New conditional define.
21570         (BUILT_SOURCES): Remove.
21571         ($(bundle_srcs)): Make parallel-make safe.
21572         (libmonoruntime_la_LIBADD): Make unconditional.
21573         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21574         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21575
21576 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21577
21578         * culture-info-tables.h: It was inconsistent with the latest
21579           supp info files.
21580
21581 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21582
21583         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21584         be loaded.
21585
21586         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21587         with gcc 2.95.
21588
21589 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21590
21591         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21592         cleaned up public header threads.h.
21593
21594 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21595
21596         * Makefile.am, *.c, *.h: more API cleanups.
21597
21598 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21599
21600         * Makefile.am: removed monosn from compilation.
21601         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21602         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21603         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21604         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21605         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21606         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21607
21608 2004-06-15  Jackson Harper  <jackson@ximian.com>
21609
21610         * assembly.c: Make locales lower case when searching the GAC for
21611         assemblies. gacutil will always make locales lowercase when
21612         installing so this effectively makes them case insensitive.
21613         
21614 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21615
21616         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21617         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21618           parameter which allows to choose whether the wait can be interrupted or 
21619           not. Also added the method mono_monitor_enter(), which locks the monitor
21620           using an infinite wait and without allowing interruption.
21621           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21622           interrupted.
21623         * object.h: Added new fields in MonoThread. suspend_event holds the event
21624           used to susped/resume the thread. synch_lock is the lock object to use for
21625           modifying the thread state.
21626         * threads.c: Use the new synch_lock object for locking, instead of "this",
21627           which can generate deadlocks.
21628           Moved thread state change in Thread.Sleep and Thread.Join from managed
21629           to unmanaged code. This avoids a deadlock when the thread was suspended
21630           just after acquiring the thread lock.
21631           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21632           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21633           which is not fully implemented in the io-layer.
21634         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21635
21636 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21637
21638         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21639         threads-types.h: more API cleanups.
21640
21641 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21642
21643         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21644         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21645         threadpool.c, threads.c: first pass at the exported API cleanup.
21646
21647 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21648
21649         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21650
21651 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21652
21653         * icall.c: added internalGetHome.
21654
21655 2004-06-14  Dick Porter  <dick@ximian.com>
21656
21657         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21658         possible to return successfully when '.' or '..' were the only
21659         entries in a directory, but were skipped.  The MonoIOStat was not
21660         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21661         Fixes bug 59574.
21662
21663 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21664
21665         * reflection.c: make binaries run on .Net 1.1 by default.
21666
21667 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21668
21669         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21670
21671 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21672
21673         * marshal.c: keep track of struct size with explicit layout
21674         (bug #59979).
21675
21676 2004-06-12  Martin Baulig  <martin@ximian.com>
21677
21678         * mono-debug-debugger.c: Comment out a debugging g_message().
21679
21680 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21681
21682         * reflection.c, reflection.h: do not free custom attrs that are cached.
21683         * icall.c: use braces to make code clearer.
21684
21685 2004-06-11  Martin Baulig  <martin@ximian.com>
21686
21687         * class.h (MonoInflatedField): New type.
21688         (MonoClassField): Replaced `MonoType *generic_type' with
21689         `MonoInflatedField *generic_info'.
21690
21691         * icall.c
21692         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21693
21694 2004-06-11  Martin Baulig  <martin@ximian.com>
21695
21696         * reflection.c (mono_image_create_method_token): Correctly encode
21697         varargs methods.
21698
21699 2004-06-11  Martin Baulig  <martin@ximian.com>
21700
21701         * metadata.c (mono_metadata_parse_method_signature): When parsing
21702         a MethodDef which has VarArgs, also set sentinelpos if we don't
21703         have any parameters.
21704
21705 2004-06-11  Martin Baulig  <martin@ximian.com>
21706
21707         * verify.c (mono_method_verify): In CEE_CALL, use
21708         mono_method_get_signature() to get the method's signature, unless
21709         we're a PInvoke method.
21710
21711 2004-06-10  Jackson Harper  <jackson@ximian.com>
21712
21713         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21714         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21715         logical name as the supplied path is just a prefix to the gac not
21716         the direct path to it.
21717         
21718 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21719
21720         * reflection.c: make the token for a created method match
21721         the token of the MethodBuilder it was created from
21722         (IKVM requires this behaviour now).
21723
21724 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21725
21726         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21727         reflection.c, socket-io.c: leak fixes.
21728
21729 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21730
21731         * icall.c: handle sentinel pos in vararg methods in position different
21732         from 0.
21733
21734 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21735
21736         * culture-info-tables.h: freshly generated.
21737
21738 2004-06-09  Martin Baulig  <martin@ximian.com>
21739
21740         * loader.c (mono_get_method_constrained): Call `mono_class_init
21741         (constrained_class)'.   
21742
21743 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21744
21745         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21746         any methods. Fixes #59629.
21747
21748 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21749
21750         * culture-info-tables.h: reflecting locale-builder updates.
21751
21752 2004-06-08  Dick Porter  <dick@ximian.com>
21753
21754         * object.h:
21755         * locales.c: Fixed compile warnings, including a real bug in
21756         CompareInfo_internal_compare.
21757         
21758 2004-06-08  Dick Porter  <dick@ximian.com>
21759
21760         * locales.c
21761         (ves_icall_System_Globalization_CompareInfo_internal_index):
21762         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21763         Double-check the resuls of usearches, because ICU currently
21764         ignores most of the collator settings here.  Fixes bug 59720.
21765         
21766 2004-06-08  Dick Porter  <dick@ximian.com>
21767
21768         * locales.c
21769         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21770         Fix memory leak and segfault-causing typo.  No idea how this one
21771         lasted so long without being noticed.
21772
21773 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21776         any methods. Fixes #59629.
21777
21778 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21779
21780         * assembly.c:
21781         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21782         own the critical section before). Removed dead code (that's done
21783         in the preload hook).
21784
21785         (mono_assembly_load_with_partial_name): call the preload hook.
21786
21787 2004-06-08  Martin Baulig  <martin@ximian.com>
21788
21789         * metadata.c (mono_metadata_signature_alloc): Default
21790         `sentinelpos' to -1.
21791
21792         * reflection.c (mono_image_get_array_token): Likewise.
21793
21794 2004-06-08  Martin Baulig  <martin@ximian.com>
21795
21796         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21797
21798         * metadata.c (mono_metadata_parse_method_signature): When parsing
21799         a MethodDef which has VarArgs, set sentinelpos.
21800
21801         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21802         `gint16' since we're using -1 for non-varargs methods.
21803
21804         * reflection.c
21805         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21806         (method_encode_signature): Added varargs support.
21807         (method_builder_encode_signature): Likewise.
21808         (mono_image_get_varargs_method_token): New static method.
21809         (mono_image_create_method_token): New public method; this is
21810         called via an icall instead of mono_image_create_token() when
21811         calling a varargs method.       
21812
21813 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21814
21815         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21816
21817 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21818
21819         * culture-info-tables.h : Reflecting the latest locale-builder that
21820           fixed empty array representation ({} to {0}).
21821
21822 2004-06-07  Jackson Harper  <jackson@ximian.com>
21823
21824         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21825         looking up extra gac paths. This allows MONO_GAC_PATH to act
21826         exactly like a prefix.
21827         
21828 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21829
21830         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21831         type name before modifying it. Fixes #59405.
21832
21833 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21834
21835         * culture-info.h: added fields for "all datetime patterns".
21836         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21837           _construct_datetime_format ()): fill xxx_patterns fields.
21838         * object.h: added fields for "all datetime patterns" to
21839           MonoDateTimeFormatInfo.
21840         * culture-info-tables.h: reflecting locale-builder updates.
21841
21842 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21845         the event has no add and remove methods. Fixes #59629.
21846
21847 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21848
21849         * object.c: Fixed possible integer overflow when allocating large
21850         strings.
21851
21852 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21853
21854         * culture-info-tables.h: reflecting locale-builder updates.
21855
21856 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21857
21858         * culture-info-tables.h: reflecting locale-builder updates.
21859
21860 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21861
21862         * culture-info-tables.h: reflecting locale-builder updates.
21863
21864 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21865
21866         * threads.c: Made Thread.Sleep abortable.
21867
21868 2004-06-02  Martin Baulig  <martin@ximian.com>
21869
21870         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21871
21872         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21873
21874 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21877
21878 2004-05-30  Jackson Harper  <jackson@ximian.com>
21879
21880         * reflection.c: Do not hardcode assembly versions or public key
21881         tokens anymore. All of this except the corlib section was dead
21882         code anyways.
21883         
21884 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21885
21886         * object.c (mono_runtime_invoke_array): Automatically create boxed
21887         objects for byref valuetypes if needed. Fixes #59300.
21888         
21889         * object.c (mono_method_return_message_restore): Handle 
21890         MONO_TYPE_OBJECT as well.
21891
21892 2004-05-28  Jackson Harper  <jackson@ximian.com>
21893
21894         * reflection.c: The modified type encoding was causing build
21895         problems. Reverted for now.
21896         
21897 2004-05-28  Jackson Harper  <jackson@ximian.com>
21898
21899         * reflection.c/h: Take an assembly ref so that we dont create
21900         fully qualified names when encoding types in the same assembly as
21901         the custom attribute being emitted.
21902         * appdomain.c: Increment version number.
21903         
21904 2004-05-26  Duncan Mak  <duncan@ximian.com>
21905
21906         * icall.c
21907         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21908         Set the full version number (major, minor, build, revision).
21909
21910 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21911
21912         * marshal.c (emit_struct_conv): increment src/dst after blit
21913         (mono_marshal_get_managed_wrapper,
21914         mono_marshal_get_native_wrapper): make sure we have marshalling
21915         info before marshalling params (info computation affects
21916         blittable)
21917
21918         * class.c (class_compute_field_layout): correctly deal with
21919         blittable
21920         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21921         value types (as per what windows dows by default)
21922         (mono_class_setup_mono_type): System.ValueType is blittable
21923         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21924         blittable
21925
21926         * marshal.c (mono_marshal_load_type_info): flag types  as
21927         non-blittable if the native layout doesn't match the managed
21928         layout
21929
21930 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21931
21932         * appdomain.c: don't add stuff in the private search path that is
21933         above the application base. If application base is not set, there's
21934         no private search path.
21935
21936 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21937
21938         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21939         byref struct arguments in native->managed marshalling.
21940
21941 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21942
21943         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21944         cache methods using signature (special case for methods
21945         that are value type or string class)
21946         
21947         * image.c (mono_image_close): clean up allocated GSList's
21948         in runtime_invoke_cache.
21949
21950 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21951
21952         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21953         there's no MONO_CFG_DIR environment variable defined.
21954
21955 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21956
21957         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21958
21959 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21960
21961         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21962           is interrumped.
21963         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21964           before waiting for it, and call CloseHandle after the wait to unref it.
21965           This will make sure that handles are not disposed too early.
21966
21967 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21968
21969         * appdomain.c:
21970         * appdomain.h:
21971         * icall.c: removed
21972         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21973         needed now.
21974
21975         * object.c: se the application_base only for the domain that runs
21976         Main. Fixes bug #59216,
21977
21978 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21979
21980         * appdomain.c:
21981         * object.c: only the domain in which Main is run have
21982         SetupInformation.ConfigurationFile set, so moved a few lines from
21983         appdomain.c to object.c.
21984
21985 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21986
21987         * appdomain.c: we tried to load [name].(dll|exe), but according
21988         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21989         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21990         There's a test case attached to bug #58922.
21991
21992 2004-05-27  Dick Porter  <dick@ximian.com>
21993
21994         * icall.c:
21995         * file-io.c: Implemented icalls for locking and unlocking regions
21996         in a file.
21997         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21998         FALSE on error (fixes both compiler warning and real bug.)
21999
22000 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
22001
22002         * culture-info-tables.h: reflecting locale-builder updates.
22003
22004           (Added missing ChangeLog entry for 05/26)
22005
22006 2004-05-27  Jackson Harper  <jackson@ximian.com>
22007
22008         * locales.c: Fix some cut and paste errors.
22009         
22010 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22011
22012         * mono-config.c: set the correct path for config. directory on windows.
22013
22014 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22015
22016         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
22017           on win32.
22018
22019 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
22022         from pinvoke functions.
22023         
22024         * marshal.c (mono_ftnptr_to_delegate): Implement this.
22025
22026 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
22027
22028         * culture-info-tables.h: reflecting locale-builder updates.
22029
22030 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22031
22032         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
22033         #59086.
22034
22035 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
22036
22037         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
22038         * icall.c: Modified icalls for RNG.
22039         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
22040         Windows (CryptoAPI).
22041
22042 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22043
22044         * locales.c: Fix build.
22045
22046 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
22047
22048         * culture-info-tables.h: reflecting locale-builder updates.
22049
22050 2004-05-25  Jackson Harper  <jackson@ximian.com>
22051
22052         * locales.c: When creating the current culture use the $LANGs
22053         specific culture. So DateTimeFormat and NumberFormat entries are created.
22054         
22055 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22056
22057         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
22058         a char array as parameter.
22059
22060 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
22061
22062         * image.c: In mono_image_open(), always use an absolute path name to
22063           look for already loaded images.
22064
22065 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
22066
22067         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
22068         missing in the windows build (like older cygwin include files).
22069
22070 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
22071
22072         * icall.c: Fixed check for possible integer overflow in Buffer_
22073         BlockCopy icall. Replaced comments style // by /* */.
22074
22075 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22076
22077         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
22078         
22079         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
22080         check after MONO_VTADDR. Fixes pinvoke2.exe.
22081
22082         * marshal.h marshal.c metadata.h: Add beginnings of support for
22083         ftnptr -> delegate marshalling.
22084
22085 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
22088         * threads.c: Fix warnings.
22089
22090 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22091
22092         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
22093         * icall.c: Registered icalls for Suspend and Resume.
22094         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
22095           Thread.Abort.
22096         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
22097         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
22098         * process.c: Use WaitForSingleObjectEx.
22099         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
22100           checkpoints.
22101         * threads.c, threads.h: Make use of new Ex wait methods. Improved
22102           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
22103           for Suspend and Resume. Added new mono_thread_stop, used for stoping
22104           background threads. Added basic support for Abort in Windows.
22105           Start new threads using a managed delegate invoke wrapper. This wrapper
22106           has an interruption checkpoint that is needed since an interruption
22107           can be requested before the thread leaves the unmanaged code that starts 
22108           the thread.
22109         * marshal.c: Added interruption checkpoint after every native call, and
22110           also before managed calls for wrappers called from unmanaged code to
22111           go into managed code.
22112         * object.h: Added new field in MonoThread to keep track of interruption
22113           requests.
22114
22115 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22116
22117         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
22118         calls.
22119
22120 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22121
22122         * appdomain.c:
22123         * assembly.c:
22124         * gc.c:
22125         * locales.c:
22126         * mono-config.c:
22127         * rand.c: getenv -> g_getenv (windows!)
22128
22129         * process.c: complete_path is also used on non-windows platforms.
22130
22131 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22132
22133         * icall.c: new signature for Process_Start.
22134
22135         * process.[ch]: new signature for Process_Start. If we're on windows
22136         and UseShellExecute is false, we have to search for the program by
22137         ourselves if we don't get a full path.
22138
22139 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22140
22141         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
22142         marshalling and call CleanUpNativeData if needed. Fixes #58646.
22143
22144 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22145
22146         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
22147         Fixes bug #58373.
22148
22149 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22150
22151         * process.c: use double quotes to quote program name and arguments on
22152         windows. Fixes bug #58575.
22153
22154 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22155
22156         * file-io.c: don't return "." and ".." when using windows Find*File.
22157
22158 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
22159
22160         * marshal.c: Don't pass wrappers to message init because method 
22161         addressed used to lookup metadata. part of remoting[2|3] fix.
22162
22163 2004-05-15  Jackson Harper  <jackson@ximian.com>
22164
22165         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
22166         path is essentially the same as MONO_PATH except that it points to
22167         GACs instead of lib directories.
22168         * loader.h: The user gac is gone so we dont need function to
22169         enable/disable it.
22170         * mono-config.c: user gac option is now gone.
22171         
22172 2004-05-15  Jackson Harper  <jackson@ximian.com>
22173
22174         * culture-info.h: Make defines more consistent, add calendar data
22175         to the culture info table.
22176         * culture-info-tables.h: Add basic calendar data. Basically
22177         everyone gets default gregorian until all the data is
22178         updated.
22179         * locales.c: Use the new consistent defines. Set calendar data for
22180         culture info objects.
22181         * object.h: add a field for calendar data to CultureInfo
22182         
22183 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22184
22185         * image.c: image->runtime_invoke_cache is keyed on signatures now.
22186         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
22187         a signature.
22188         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
22189         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
22190         an extra param that is the pointer of the method to invoke. The IL for
22191         the invoke method is no longer specific to the method, but to the
22192         signature of the method. Thus, we can share the same code for multiple
22193         methods. This reduces the number of methods that have to be compiled.
22194
22195 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22196
22197         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
22198
22199         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22200
22201         * icall.c: Optimize Buffer.BlockCopy.
22202
22203 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22204
22205         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
22206         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
22207         quote). Changed them to "MMMM yyyy".
22208
22209 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
22210
22211         * rand.c
22212         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
22213
22214 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * reflection.h: Updated after changes to managed structures.
22217
22218         * appdomain.c: Bump corlib version.
22219
22220 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22221
22222         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
22223         windows.
22224
22225 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22226
22227         * Makefile.am: link to ../os/libmonoos.la on windows.
22228
22229         * assembly.c:
22230                 -If MONO_DEBUG, warn about non-existing directories in
22231                 MONO_PATH.
22232                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
22233                 compile time variable.
22234                 -Removed init_default_path and call mono_set_rootdir from
22235                 libmonoos.a instead (windows only).
22236
22237         * assembly.h: declare mono_assembly_getrootdir().
22238
22239         * domain.c:
22240         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
22241
22242         * loader.c: s/getenv/g_getenv/
22243
22244 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22245
22246         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
22247
22248         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
22249
22250         * metadata.h: Add new marshalling conversions.
22251
22252         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
22253         function.
22254
22255         * reflection.c (mono_reflection_get_type): Lookup the type in all
22256         modules of a multi-module assembly. Fixes #58291.
22257
22258 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22259
22260         * threads.c: Before aborting a background, set the StopRequested
22261         state.  This avoids throwing the Abort exception.
22262         In mono_thread_manage, don't continue with the shutdown until all
22263         aborted threads have actually stopped.
22264
22265 2004-05-10  Jackson Harper  <jackson@ximian.com>
22266
22267         * locales.c: Remove the modifier from culture names.
22268         
22269 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22270
22271         * Makefile.am: monosn is not installed any more. It has been deprecated
22272         in favor of sn.
22273
22274 2004-05-07  Jackson Harper  <jackson@ximian.com>
22275
22276         * locales.c
22277         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
22278         Fix array construction, add bailout if the length is 0.
22279
22280 2004-05-07  Dick Porter  <dick@ximian.com>
22281
22282         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
22283         machine doesn't have a DNS entry.  Patch by Urs Muff
22284         (umuff@quark.com), fixes bug 57928.
22285
22286 2004-05-06  Jackson Harper  <jackson@ximian.com>
22287
22288         * reflection.c: Handle null PublicTokens properly. alloc mem for
22289         assembly names culture so we dont crash when freeing it.
22290         
22291 2004-05-06  Jackson Harper  <jackson@ximian.com>
22292
22293         * assembly.c: Check the usergac when loading with partial names.
22294         
22295 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22296
22297         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
22298         does nothing for now (not required for Linux/Windows) but the class
22299         library can call it (and a newer or modified runtime could need it).
22300         * icall.c: Registred icall.
22301
22302 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22303
22304         * loader.c: prints a message on module loading error we set MONO_DEBUG
22305         environment variable.
22306
22307 2004-05-05  Jackson Harper  <jackson@ximian.com>
22308
22309         * appdomain.c: Handle PublicKeyToken=null properly.
22310         
22311 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22312
22313         * environment.c|h: Added icall ves_icall_System_Environment_
22314         GetOSVersionString to get the current OS version as a string.
22315         * icall.c: Registred icall.
22316
22317 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
22318
22319         * object.c: in mono_object_get_virtual_method(), take into account that
22320         non-virtual methods don't have a slot in the vtable. Check needed when
22321         the object is a proxy.
22322
22323 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22324
22325         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
22326         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
22327
22328         * object.c (mono_class_compute_gc_descriptor): Fix warning.
22329
22330         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
22331         passed when a valuetype is expected.
22332
22333         * object.c (mono_unhandled_exception): Only set the exit code if the
22334         exception happens in the main thread. Fixes thread5.exe.
22335
22336         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
22337         invalid names. Fixes #58047.
22338
22339 2004-05-03  Jackson Harper  <jackson@ximian.com>
22340
22341         * assembly.c: This line was committed accidently and is unneeded.
22342         
22343 2004-05-03  Jackson Harper  <jackson@ximian.com>
22344
22345         * icall.c: Add new icall for Assembly::LoadWithPartialName
22346         * assembly.c/.h: new function that probes the GAC to load partial
22347         assembly names by Paolo Molaro.
22348         
22349 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22350
22351         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
22352         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
22353         (type_get_fully_qualified_name): Added PublicKeyToken when building a
22354         full type name.
22355
22356 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22357
22358         * appdomain.c: fixed check for 'neutral' culture and removed warning.
22359         * reflection.c: fix bug when parsing a full type name and Version is not
22360         the last thing in the string.
22361
22362 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
22363
22364         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
22365         crashes when it is freed.
22366
22367 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22368
22369         * assembly.c: print the compat warning to stderr.
22370
22371 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
22372
22373         * assembly.c (mono_assembly_load_references): Add a compatibility
22374         hack to run old applications that might be still referencing the
22375         3300-based assemblies, only do this for System.xxx.
22376
22377 2004-05-01  Jackson Harper  <jackson@ximian.com>
22378
22379         * appdomain.c: If the culture is neutral we set it to "".
22380         
22381 2004-04-29  Jackson Harper  <jackson@ximian.com>
22382
22383         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
22384
22385 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
22386  
22387         * string-icalls.c: added low overhead function for copying chars
22388         * icall.c: added needed icall for the above function
22389  
22390 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22391
22392         * icall.c: fix return value of get_global_assembly_cache.  Implemented
22393         Environment.GetLogicalDrives.
22394
22395 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
22396
22397         * rand.c: try and talk to egd or prngd
22398         for random bytes if opening devices fail.
22399
22400 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22401
22402         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
22403         alignment for the type using the native alignment of its members 
22404         instead of using klass->min_align.
22405
22406         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
22407
22408 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22409
22410         * file-io.c:
22411         * socket-io.c: added check for sys/aio.h.
22412
22413 2004-04-28  Dick Porter  <dick@ximian.com>
22414
22415         * threads.c: Don't abort a thread thats already aborting, when
22416         terminating everything.
22417
22418 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22419
22420         * icall.c: added 2 new async calls for Socket.
22421
22422         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
22423         IO on *nix systems.
22424
22425         * threadpool.c: removed unused variable.
22426
22427 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
22428
22429         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
22430
22431 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22432
22433         * locales.c: put back string_invariant_tolower () and
22434         string_invariant_toupper ().
22435
22436 2004-04-26 David Waite <mass@akuma.org>
22437
22438         * file-io.h:
22439         * socket-io.h:
22440         * threads.h:
22441         * unicode.h: remove comma from end of enumeration declarations
22442
22443 2004-04-26 David Waite <mass@akuma.org>
22444
22445         * debug-mono-symfile.h:
22446         * decimal.c:
22447         * mono_debug.h:
22448         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22449
22450
22451 2004-04-26  Jackson Harper  <jackson@ximian.com>
22452
22453         * appdomain.c: Increment version number.
22454         
22455 2004-04-26  Jackson Harper  <jackson@ximian.com>
22456
22457         * appdomain.c: Set assembly references public token value when
22458         PublicKeyToken is specified, not the hash_value. Free public token
22459         values when free assembly name data. Previously the public key
22460         token was hex decoded, however we are using hex encoded public key
22461         tokens, so this is not neccasary.
22462         * assembly.c: Lookup assemblies in the gac if their public token
22463         value is set. Add function to allow enabling user gac
22464         lookups. Specify whether or not the assembly was loaded from the
22465         GAC. Compare full assembly names when checking the cache for
22466         assemblies (Temporarily disabled see comment in code). Remove
22467         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22468         specifies trace-loader they get extra info to stdout on the
22469         loading of assemblies.
22470         * image.h: Add a field for an assembly references public token
22471         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22472         whether an assembly has been loaded from the GAC.
22473         * image.c: Remove a corlib -> mscorlib name mapping.
22474         * loader.h: Add function to enable/disable the user gac.
22475         * mono-config.c: Check if the usergac is enabled in the config
22476         file.
22477         * icall.c: New icall to determine whether or not an assembly has
22478         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22479         * tabldefs.h: Add constant for assemblyref flag that specifies a
22480         full public key is used instead of a public token.
22481         * reflection.c: Remove mscorlib -> corlib mappings. Set
22482         PublicTokenValue instead of hash value. This value is a hex
22483         string so it does not need to be expanded.
22484
22485 2004-04-26  Martin Baulig  <martin@ximian.com>
22486
22487         * mono-debug-debugger.c (mono_debugger_initialize): Set
22488         `mono_debugger_initialized' before calling mono_debug_lock().
22489
22490 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22491
22492         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22493           InternalToUpper/InternalToLower.
22494         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22495           removed invariant culture shortcut.  This is now done in managed code.
22496         * locales.c: (string_invariant_toupper/tolower) removed.
22497
22498 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22499
22500         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22501         Added Poll internal call.
22502
22503         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22504         call for Poll. Select was too heavy for polling a single socket.
22505
22506         * threadpool.[ch]: added mono_threadpool_cleanup.
22507         * threads.c: use it. Don't use Thread_Abort on windows.
22508
22509 2004-04-23  Martin Baulig  <martin@ximian.com>
22510
22511         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22512
22513 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22514
22515         * icall.c: Registred new icalls for key pair protection and added an
22516         icall for Environment.GetFolderPath on Windows.
22517         * security.c|h: Added new icalls for key pair protection.
22518
22519 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22520
22521         * socket-io.c: don't display the non-supported family warning for known
22522         families. Now this is not displayed on windows when checking support
22523         for IPv4/IPv6.
22524
22525 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * class.c: don't display the layout warning for static fields.
22528
22529 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22530
22531         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22532         * locales.c, locales.h: Added new icalls for culture-specific
22533         Char.ToLower and Char.ToUpper.
22534
22535 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22536
22537         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22538         by David Waite.
22539
22540 2004-04-20  Martin Baulig  <martin@ximian.com>
22541
22542         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22543         of the type name before passing it to mono_reflection_type_from_name().
22544
22545 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22546
22547         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22548         encodings here. Fixes #56965.
22549
22550 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22551
22552         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22553         fix test on strstr result not that I can see anything that
22554         relies on the result.
22555
22556 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22559         Fixes #57081.
22560
22561         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22562
22563         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22564         function to determine which marshalling to use for strings. Fixes
22565         #56965.
22566
22567         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22568
22569         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22570
22571 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22572
22573         * icall.c: #include mono-config.h
22574
22575 2004-04-15  Jackson Harper  <jackson@ximian.com>
22576
22577         * culture-info-tables.h: Fix date formats for en-US culture.
22578         
22579 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22580
22581         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22582         ThreadPool.SetMinThreads.
22583         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22584         ThreadPool.SetMinThreads.
22585
22586 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22587
22588         * mono-config.c: also load the .config file in the directory
22589         where the assembly was found.
22590
22591 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22592
22593         * assembly.c: load per-assembly config files.
22594         * icall.c: decrapified code to get the config dir and moved to
22595         mono-config.c.
22596         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22597         per-assembly config files. When doing a dll map lookup give precedence
22598         to the per-assembly data.
22599
22600 2004-04-14  Martin Baulig  <martin@ximian.com>
22601
22602         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22603         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22604         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22605
22606         * mono-debugger-debugger.c: While the debugger is locked, remember
22607         whether the symbol tables have changes and send one single
22608         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22609
22610 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22613
22614         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22615         function.
22616
22617         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22618         account when marshalling string arrays. Fixes #56965.
22619
22620 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22621
22622         * icall.c: Add new icalls mapping for security.
22623         * security.c|h: Add internal calls for WindowsIdentity,
22624         WindowsImpersonationContext and WindowsPrincipal.
22625
22626 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22627
22628         * class.c: Added comment to ensure the System.MonoDummy class
22629         is removed when no longer necessary
22630
22631 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22632
22633         * appdomain.c: Pass arguments to the bootstraping exceptions to
22634         minimize JITed methods at boot
22635
22636         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22637         second string to be null.
22638
22639         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22640         Change the protocol to minimize the JIT methods at startup.  Now
22641         it Returns the internal codepage, if the value of "int_code_page"
22642         is 1 at entry, and we can not compute a suitable code page
22643         number, returns the code page as a string.
22644
22645 2004-04-13  Jackson Harper  <jackson@ximian.com>
22646
22647         * culture-info-tables.h: Fix number of decimal digits for all
22648         english locales.
22649
22650 2004-04-13  Jackson Harper  <jackson@ximian.com>
22651
22652         * icall.c: Clairfy out of sync error message. It is not always
22653         your corlib that is out of sync.
22654
22655 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22656
22657         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22658         properties when only the set accessor is overriden. Fixes #55874.
22659
22660 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22661
22662         * assembly.c (mono_assembly_load_references): Make this thread safe.
22663         Fixes #56327.
22664
22665 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22666
22667         * monosn.c: Add missing initialization calls.
22668
22669 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22670
22671         * locales.c:
22672         ves_icall_System_Globalization_CultureInfo_construct_number_format
22673         Fix g_assert so it compiles on fussier compilers re int/ptr
22674         mismatch
22675
22676 2004-04-08  Dick Porter  <dick@ximian.com>
22677
22678         * socket-io.h:
22679         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22680         53992.  Also rearrange the code so that the internal calls return
22681         an error value and exceptions are thrown from managed code.
22682
22683         * icall.c: Add type info to the socket icalls.
22684
22685 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22686
22687         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22688         owes me a beer.
22689
22690 2004-04-07  Martin Baulig  <martin@ximian.com>
22691
22692         * class.c (mono_class_from_generic_parameter): Don't default
22693         `klass->parent' to `mono_defaults.object_type'.
22694
22695 2004-04-07  Martin Baulig  <martin@ximian.com>
22696
22697         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22698         `param->pklass->reflection_info'.       
22699
22700 2004-04-07  Jackson Harper  <jackson@ximian.com>
22701
22702         * culture-info-tables.h: Fix date separator symbol.
22703         
22704 2004-04-07  Martin Baulig  <martin@ximian.com>
22705
22706         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22707         from System.Type to System.MonoType.
22708
22709 2004-04-07  Martin Baulig  <martin@ximian.com>
22710
22711         * reflection.h
22712         (MonoReflectionGenericParam): Added `has_reference_type' and
22713         `has_value_type' fields.
22714
22715         * reflection.c (mono_image_get_generic_param_info): Encode the
22716         correct flags if we have the `class' or `struct' constraint.
22717
22718 2004-04-07  Martin Baulig  <martin@ximian.com>
22719
22720         * reflection.h
22721         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22722
22723 2004-04-07  Jackson Harper  <jackson@ximian.com>
22724
22725         * appdomain.c: Revert extra patches, just wanted to bump the
22726         version number.
22727         
22728 2004-04-07  Jackson Harper  <jackson@ximian.com>
22729
22730         * Makefile.am: Add culture-info private headers.
22731         * icall.c: Add new icalls for contructing locales.
22732         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22733         * locales.h: Declare new culture info construction methods.
22734         * object.h: Add new fields used to avoid the CultureMap to
22735         MonoCultureInfo.
22736         * culture-info.h: Definition of structs used in the culture info
22737         tables.
22738         * culture-info-tables.h: Autogenerated tables that contain culture
22739         info data. This file was generated with the locale-builder tool.
22740         * appdomain.c: Incement corlib version number.
22741         
22742 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22743
22744         * appdomain.c: (mono_runtime_init) move mono_thread_init
22745         to before mono_object_new calls so critical sections
22746         are initialized before use.
22747
22748 2004-04-07  Martin Baulig  <martin@ximian.com>
22749
22750         * icall.c
22751         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22752         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22753         (ves_icall_MonoGenericParam_initialize): Removed.
22754         (monogenericparam_icalls): Removed.
22755         (generictypeparambuilder_icalls): Added new table for
22756         System.Reflection.Emit.GenericTypeParameterBuilder.
22757
22758         * reflection.c
22759         (mono_reflection_define_generic_parameter): Removed.
22760         (mono_reflection_initialize_generic_parameter): This is now called
22761         from GenericTypeParameterBuilder's .ctor.
22762
22763 2004-04-06  Martin Baulig  <martin@ximian.com>
22764
22765         * class.c (mono_class_init): Don't inflate nested classes in a
22766         generic instance.
22767         (mono_type_get_name_recurse): Include the generic arguments for
22768         generic instances and generic type declarations.
22769         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22770         (_mono_class_get_instantiation_name): Removed.
22771         (mono_class_create_generic): Always use `gklass->name' as our name.
22772
22773         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22774
22775         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22776         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22777         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22778         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22779         closed generic methods here.
22780
22781         * reflection.c
22782         (mono_reflection_generic_inst_get_nested_types): Removed.
22783         (inflate_mono_method): Copy the generic parameters from the
22784         MonoMethodHeader into out MonoGenericMethod.
22785
22786 2004-04-06  Martin Baulig  <martin@ximian.com>
22787
22788         * row-indexes.h
22789         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22790
22791         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22792
22793         * reflection.c (build_compressed_metadata): If we have any entries
22794         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22795         set the header version to 1.1.
22796
22797 2004-04-06  Martin Baulig  <martin@ximian.com>
22798
22799         * class.c (mono_class_init): If we're a generic instance,
22800         initialize our nested classes, too.
22801         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22802         suffix. 
22803
22804 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22805
22806         * process.c: quote the argument passed to the shell on windows.
22807
22808 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22809
22810         * threads.c (mono_alloc_special_static_data): Allow this to be
22811         called during startup.
22812
22813 2004-04-02  Martin Baulig  <martin@ximian.com>
22814
22815         * icall.c
22816         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22817
22818 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22819
22820         * icall.c: Fix build.
22821
22822 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22823
22824         * Makefile.am: Added security.c|h.
22825         * icall.c: Added icall for get_UserName;
22826         * security.c: New file for security related icalls. Added function
22827         get_UserName for System.Environment (fix #56144).
22828         * security.h: New. Header file for security.c
22829
22830 2004-04-02  Dick Porter  <dick@ximian.com>
22831
22832         * icall.c: Deleted the icalls that were obsoleted some time ago
22833         by the ICU string code, and which were mixed into the icall
22834         rearranging.  Fixes bug 55969.
22835
22836         * string-icalls.h: 
22837         * string-icalls.c: Deleted the code that those icalls reference.
22838
22839 2004-04-01  Martin Baulig  <martin@ximian.com>
22840
22841         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22842
22843         * class.c (mono_class_from_generic_parameter): Don't set 
22844         TYPE_ATTRIBUTE_INTERFACE.
22845         (my_mono_class_from_generic_parameter): Likewise.
22846
22847 2004-04-01  Martin Baulig  <martin@ximian.com>
22848
22849         * loader.c (find_method): Added an optional `MonoClass *ic'
22850         argument to search in a specific interface.
22851         (mono_get_method_constrained): New public function.
22852
22853 2004-04-01  Martin Baulig  <martin@ximian.com>
22854
22855         * reflection.c (mono_image_get_generic_field_token): Use the
22856         `handleref' cache here.
22857
22858 2004-04-01  Martin Baulig  <martin@ximian.com>
22859
22860         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22861
22862         * reflection.c (create_generic_typespec): Use the `typespec' hash
22863         here, not the `typeref' one.    
22864
22865 2004-04-01  Martin Baulig  <martin@ximian.com>
22866
22867         * class.c (mono_class_inflate_generic_type): Moved the
22868         functionality into a new static inflate_generic_type() which
22869         returns NULL if it didn't do anything.  Only increment the
22870         `mono_stats.inflated_type_count' if we actually inflated
22871         something.
22872         (mono_class_get_full): Check the classes type to see whether we
22873         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22874
22875 2004-04-01  Jackson Harper  <jackson@ximian.com>
22876
22877         * reflection.c: Set culture for assembly references.
22878         
22879 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22880
22881         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22882
22883 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22884
22885         * assembly.c:
22886         (do_mono_assembly_open): the critical section also covers
22887         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22888
22889 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22890
22891         * threads.c:
22892         (mono_manage_threads): abort the background threads when finishing.
22893         Fixes bug #47232.
22894
22895 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22896
22897         * gc.c: only close the done_event handle if there was no timeout.
22898         C-ified comments.
22899
22900 2004-03-30  Martin Baulig  <martin@ximian.com>
22901
22902         * icall.c (icall_entries): It's called "System.Activator", not
22903         "System.Activation".    
22904
22905 2004-03-30  Martin Baulig  <martin@ximian.com>
22906
22907         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22908         (mono_class_create_from_typespec): Likewise.
22909
22910 2004-03-30  Martin Baulig  <martin@ximian.com>
22911
22912         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22913         `has_ctor_constraint' and `initialized'.
22914
22915 2004-03-30  Martin Baulig  <martin@ximian.com>
22916
22917         * reflection.c (encode_new_constraint): New static function to add
22918         the constructor constraint attribute to a type parameter.
22919         (encode_constraints): Call encode_new_constraint() if necessary.
22920
22921         * reflection.h
22922         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22923
22924         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22925         
22926 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22927
22928         * reflection.c, icall.c: add support for pinning variables. 
22929
22930 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22931
22932         * marshal.c (mono_marshal_get_managed_wrapper):
22933         init bool local with zero rather than null.
22934
22935 2004-03-29  Martin Baulig  <martin@ximian.com>
22936
22937         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22938         the "official" behavior here.
22939         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22940
22941 2004-03-29  Martin Baulig  <martin@ximian.com>
22942
22943         * icall.c: Reflect latest API changes.
22944
22945 2004-03-29  Martin Baulig  <martin@ximian.com>
22946
22947         * loader.c (mono_get_method_from_token): Also call
22948         mono_metadata_load_generic_params () for abstract and interface
22949         methods; replace the type arguments in the method signature with
22950         the ones which are loaded from the metadata.
22951
22952 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22953
22954         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22955         of the lock is not the current thread. MS.NET don't do it, in spite of
22956         what the documentation says. See bug #56157.
22957
22958 2004-03-28  Martin Baulig  <martin@ximian.com>
22959
22960         * class.c (mono_class_init): Don't call init_properties() and
22961         init_events() for generic instances; set `prop->parent' when
22962         inflating properties.
22963
22964         * reflection.c (mono_generic_inst_get_object): Call
22965         `mono_class_init (ginst->klass)'.
22966         (mono_type_get_object): Only create a MonoGenericInst if your
22967         generic type is a TypeBuilder.
22968         (do_mono_reflection_bind_generic_parameters): Only set
22969         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22970
22971 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22972
22973         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22974         Fixes #56091.
22975
22976 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22977
22978         * icall.c: added Kill_internal icall.
22979         * process.[ch]: added Kill_internal icall.
22980
22981 2004-03-25  Martin Baulig  <martin@ximian.com>
22982
22983         * class.h (MonoStats): Added `generic_instance_count',
22984         `inflated_method_count', `inflated_type_count' and
22985         `generics_metadata_size'.       
22986
22987 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22988
22989         * reflection.c: no warnings now.
22990
22991 2004-03-25  Martin Baulig  <martin@ximian.com>
22992
22993         * class.c (mono_class_get_full): New public function; does a
22994         mono_class_get(), but also takes a `MonoGenericContext *'.
22995
22996         * loader.c (mono_field_from_memberref): Renamed to
22997         `field_from_memberref', made static and added `MonoGenericContext *'
22998         argument.
22999         (mono_field_from_token): Added `MonoGenericInst *' argument.
23000         (method_from_memberef): Likewise.
23001         (mono_get_method_from_token): Likewise.
23002         (mono_get_method_full): New public function; does a
23003         mono_get_method(), but also takes a `MonoGenericContext *'.
23004
23005         * verify.c (mono_method_verify): Get the method's generic context
23006         and pass it to mono_field_from_token(), mono_get_method_full() and
23007         mono_class_get_full().
23008
23009 2004-03-25  Martin Baulig  <martin@ximian.com>
23010
23011         * class.c (mono_class_inflate_generic_type): Take a
23012         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
23013         `MonoGenericMethod *'.
23014
23015 2004-03-25  Martin Baulig  <martin@ximian.com>
23016
23017         * loader.h (MonoMethodInflated): Store the MonoGenericContext
23018         instead of the MonoGenericMethod here.
23019
23020 2004-03-25  Martin Baulig  <martin@ximian.com>
23021
23022         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
23023         each time we create a new MonoGenericInst, we also create a new
23024         context which points back to us.
23025
23026         * class.c (inflate_method): Use `ginst->context' instead of
23027         creating a new context.
23028
23029         * loader.c (method_from_memberref): Use
23030         `klass->generic_inst->context' instead of creating a new context.
23031
23032 2004-03-25  Martin Baulig  <martin@ximian.com>
23033
23034         * class.h (MonoGenericContext): New struct.
23035         (MonoGenericMethod): Removed `generic_inst'.
23036
23037         * class.c (mono_class_inflate_generic_method): Take a
23038         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
23039
23040 2004-03-25  Martin Baulig  <martin@ximian.com>
23041
23042         * loader.h (MonoMethodInflated): New typedef.
23043
23044         * metadata.h (MonoMethodSignature): Removed `gen_method', make
23045         `generic_param_count' consume just 30 bits, added `is_inflated'
23046         and `has_type_parameters' flags (one bit each).
23047
23048         * class.c (mono_class_inflate_generic_method): Create a
23049         MonoMethodInflated instead of a MonoMethodNormal and set
23050         `is_inflated' in the method signature.
23051
23052         * class.h (MonoGenericMethod): Removed `generic_method'.
23053
23054 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
23055
23056         * image.c: Make sure the name of a MonoImage is always an absolute path.
23057           This fixes bug #54415.
23058
23059 2004-03-24  Martin Baulig  <martin@ximian.com>
23060
23061         * class.c (mono_class_setup_vtable): If we're a generic instance,
23062         use our generic type's vtable size.
23063
23064 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23065
23066         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
23067         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
23068         problems.
23069
23070 2004-03-23  Martin Baulig  <martin@ximian.com>
23071
23072         * class.h (MonoDynamicGenericInst): Added `int count_events' and
23073         `MonoEvent *events'.
23074
23075         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
23076         (typebuilder_icalls): Added "get_event_info"; calls
23077         mono_reflection_event_builder_get_event_info(). 
23078
23079         * reflection.c (mono_reflection_generic_inst_initialize): Added
23080         `MonoArray *events'.
23081         (mono_reflection_event_builder_get_event_info): New function.
23082
23083 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
23084
23085         * object.h: add mono_type_initialization_init
23086
23087         * object.c (mono_runtime_class_init): 
23088         implement class constructor synchronization rules
23089         to cope with threading issues.  
23090         add mono_type_initialization_init
23091
23092         * appdomain.c (mono_runtime_init): call 
23093         mono_type_initialization_init
23094
23095         * class.h: removing initializing field from MonoVTable
23096
23097 2004-03-23  Martin Baulig  <martin@ximian.com>
23098
23099         * class.c (my_mono_class_from_generic_parameter): Use
23100         `param->name' if it's not NULL. 
23101
23102 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
23103
23104         * class.c: do not insert non-virtual methods in the vtable.
23105         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
23106         that means the method is non-virtual. This never would have
23107         happened before.
23108
23109 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23110
23111         * profiler.c: Added lock for accessing coverage_hash.
23112
23113 2004-03-22  Martin Baulig  <martin@ximian.com>
23114
23115         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
23116         `method->method->signature->generic_param_count != 0' to make it
23117         work for interface methods.
23118
23119 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23120
23121         * process.c: quote the string passed to the shell using g_shell_quote.
23122
23123 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23124
23125         * threads.c:
23126         (mono_threads_manage): don't remove the finalizer thread and self
23127         from the threads hash table so that mono_thread_manage can be called
23128         more than once.
23129
23130 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23131
23132         * process.c: quote the arguments when UseShellExecute is true. Fixes
23133         bug #55790.
23134
23135 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23136
23137         * threads.c: set mono_thread_detach as a cleanup routine for every
23138         thread. This way it's always executed upon thread termination, either
23139         aborted or finished normally. No more xsp hangs!
23140
23141 2004-03-17  Martin Baulig  <martin@ximian.com>
23142
23143         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
23144         `int count_nested' and a `MonoType **nested'.
23145
23146         * reflection.c (mono_reflection_bind_generic_parameters): Moved
23147         most of the functionality into a new static
23148         do_mono_reflection_bind_generic_parameters() and don't take a
23149         `MonoType *nested_in' argument any more.  Don't compute nested
23150         types here.
23151         (mono_reflection_generic_inst_get_nested_types): New public method
23152         to get nested types.
23153
23154         * class.c (mono_class_create_generic): Set `klass->nested_in' if
23155         we're a nested class.
23156
23157         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
23158         mono_reflection_generic_inst_get_nested_types() to compute the
23159         nested types.
23160
23161 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
23164         descriptive error message under windows.
23165         
23166 2004-03-17  Martin Baulig  <martin@ximian.com>
23167
23168         * class.c (dup_type): Added `const MonoType *original' argument;
23169         copy the attrs from the original type.
23170
23171 2004-03-17  Martin Baulig  <martin@ximian.com>
23172
23173         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
23174         `m->generic_inst_cache' here.
23175
23176 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23177
23178         * exception.h exception.c: Add stack_overflow_exception.
23179
23180 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23181
23182         * threadpool.c:
23183         (overlapped_callback): call SetEvent *after* invoking the callback.
23184         No need to call CloseHandle.
23185
23186 2004-03-16  Martin Baulig  <martin@ximian.com>
23187
23188         * reflection.c (mono_image_get_fieldref_token): Take a
23189         `MonoReflectionField *' instead of a `MonoClassField *' and a
23190         `MonoClass *'; store the `MonoReflectionField *' in the hash.
23191
23192 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23193
23194         * appdomain.c: don't add the culture to the filename we're looking for
23195         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
23196
23197 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23198
23199         * locales.c: don't ignore symbols when doing case insensitive compares.
23200         Thanks Dick! Fixes bug #54046.
23201
23202         * threads.c: surround 'threads' usage with enter/leave in
23203         mono_thread_manage.
23204
23205 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
23208         implicitly marshalled as [Out]. Fixes #55450.
23209
23210         (mono_marshal_get_runtime_invoke): Zero out the result if there is
23211         an exception.
23212
23213 2004-03-16  Martin Baulig  <martin@ximian.com>
23214
23215         * class.c (mono_class_from_generic_parameter): Use the actual
23216         parameter name. 
23217
23218 2004-03-16  Martin Baulig  <martin@ximian.com>
23219
23220         * reflection.c (type_get_signature_size): New static function.
23221         Compues the size of the type in a method signature.
23222         (method_get_signature_size): New static function; calls
23223         type_get_signature_size() to compute the actual size of the
23224         method's signature.
23225         (method_encode_signature): Use method_get_signature_size() to get
23226         the signature's size rather than using `nparams * 10'.
23227
23228 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23229
23230         * file-io.h: define here WapiOverlapped on windows. I don't want the
23231         regular OVERLAPPED one.
23232
23233         * file-io.c:
23234         * threadpool.c: somehow, BindIoCompletionCallback is not found.
23235         Disabling AIO on windows.
23236
23237 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23238
23239         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
23240         bug #55385.
23241
23242 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23243
23244         * appdomain.c: upgraded corlib version.
23245
23246         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
23247         and BeginWrite. Allow opening files for asynchrnous operations.
23248
23249         * file-io.h: new struct that maps FileStreamAsyncResult.
23250         * icall.c: added new icalls.
23251         * process.[ch]: support setting child process environment variables
23252         and use the SHELL or COMSPEC when UseShellExecute is true.
23253
23254         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
23255         callback for async. IO is here and also BindHandle.
23256
23257         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
23258         from here.
23259
23260 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23261
23262         * reflection.c (create_custom_attr): Allow len == 0.
23263
23264         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
23265         computation on big-endian machines.
23266
23267 2004-03-13  Martin Baulig  <martin@ximian.com>
23268
23269         * class.h (MonoGenericInst): Added `int count_ifaces'.
23270
23271         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
23272         `ginst->count_ifaces' instead `klass->interface_count' since we
23273         may get called before the vtable is created.
23274
23275         * loader.c (mono_method_get_param_names): If we're a generic
23276         instance, return and don't initialize the class.
23277
23278         * reflection.c (mono_reflection_setup_generic_class): Don't call
23279         ensure_runtime_vtable().
23280         (mono_reflection_bind_generic_parameters): Set
23281         `ginst->count_ifaces'.
23282
23283 2004-03-11  Jackson Harper <jackson@ximian.com>
23284
23285         * icall.c:
23286         * unicode.c:
23287         * unicode.h: Remove unused System.Char icalls.
23288         
23289 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
23290
23291         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
23292         code when we P/Invoke the first library in Windows.Forms, instead
23293         of when we first open the assembly.
23294
23295         * assembly.c: Drop the lookup from here.
23296
23297 2004-03-10  Martin Baulig  <martin@ximian.com>
23298
23299         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
23300         class for properties, fields and events.  Finally fixes #54945.
23301
23302 2004-03-10  Martin Baulig  <martin@ximian.com>
23303
23304         * metadata.c (mono_metadata_class_equal): New static function;
23305         checks whether two generic instances or two generic parameters are
23306         equal.
23307         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
23308         compare classes.        
23309
23310 2004-03-10  Martin Baulig  <martin@ximian.com>
23311
23312         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
23313
23314         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
23315         argument and write it into the `reflection_info' field.
23316
23317         * icall.c
23318         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
23319         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
23320
23321 2004-03-09  Jackson Harper  <jackson@ximian.com>
23322
23323         * char-conversions.h: use 8 bits for numeric data its all we need
23324         * icall.c: numeric data is only 8 bits now.
23325
23326 2004-03-09  Martin Baulig  <martin@ximian.com>
23327
23328         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
23329
23330         * class.c (init_properties, init_events): Initialize the new
23331         `parent' field.
23332
23333         * reflection.c (typebuilder_setup_properties): Likewise.
23334         (typebuilder_setup_events): Likewise.
23335
23336         * reflection.h (MonoEventInfo): Replaced `parent with
23337         `declaring_type' and `reflected_type'.
23338
23339         * icall.c (ves_icall_get_property_info): Distinguish between
23340         declaring and reflected type.
23341         (ves_icall_get_event_info): Likewise.
23342
23343 2004-03-09  Martin Baulig  <martin@ximian.com>
23344
23345         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
23346         (ves_icall_Type_GetField): Correctly set field->klass.
23347
23348 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23349
23350         * loader.h: Fix warning.
23351
23352 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
23353
23354         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
23355         library routine if present.  Notice that it will still continue
23356         executing even if its missing, for those working on the Gtk#
23357         edition of Windows.Forms.
23358
23359         * assembly.c (do_mono_assembly_open): If loading the
23360         System.Windows.Forms call mono_loader_wini_init.
23361
23362 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23363
23364         * class.h: Added MonoRemoteClass struct.
23365         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
23366         function for MonoStrings.
23367         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
23368         Added internal call for getting the proxy type.
23369         * marshal.c: Get the type of transparent proxies from its remote_class.
23370         Added methods that generate the IL for type checks and casts:
23371         mono_marshal_get_isinst, mono_marshal_get_castclass, 
23372         mono_marshal_get_proxy_cancast.
23373         * marshal.h: Declaration of the previous new methods.
23374         * object.c: Added new moethods for creating and updating MonoRemoteClass
23375         instances: mono_remote_class, mono_upgrade_remote_class, 
23376         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
23377         * verify.c: FIx transparent_proxy_fields layout.
23378         * appdomain.c: Bump corlib version.
23379
23380 2004-03-04  Jackson Harper  <jackson@ximian.com>
23381
23382         * icall.c: Add icall to access char conversion tables.
23383         * char-conversions.h: Character conversion tables.
23384         * Makefile.am: Add char-conversions.h private header file.
23385         
23386 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
23387
23388         * appdomain.c (unload_thread_main): Increase unloading timeout to
23389         10 sec as a temporary workaround for Nant problems.
23390
23391 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
23392
23393         * gc.c: Add checks for GC_enable and GC_disable.
23394
23395         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
23396         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
23397         (bug #54988).
23398         
23399 2004-02-27  Martin Baulig  <martin@ximian.com>
23400
23401         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23402         `MonoReflectionType *' instead of a `MonoType *'.
23403
23404 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23405
23406         * gc.c (run_finalize): Avoid finalizing the object representing the
23407         finalizer thread.
23408         (finalizer_thread): Fix warning.
23409
23410 2004-02-25  Martin Baulig  <martin@ximian.com>
23411
23412         * class.c (_mono_class_get_instantiation_name): Added `int offset'
23413         argument for nested types.
23414         (mono_class_create_generic): Added support for nested generictypes.
23415
23416         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
23417         `GList *nested'.
23418
23419         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
23420
23421         * reflection.c (method_encode_signature): Increase the minimum
23422         value of `size' from 10 to 11.
23423         (mono_reflection_bind_generic_parameters): Take `int type_argc'
23424         and `MonoType **types' arguments instead of the `MonoArray
23425         *types'; added `MonoType *nested_in'.  Recursively instantiate
23426         nested classes. 
23427
23428 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23429
23430         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
23431         stack_overflow_ex members which are used by exception handling.
23432
23433         * appdomain.c (mono_runtime_init): Initialize the new members.
23434
23435         * gc.c (mono_gc_enable): New helper function.
23436         * gc.c (mono_gc_disable): New helper function.
23437
23438 2004-02-23  Martin Baulig  <martin@ximian.com>
23439
23440         * icall.c: I must have been really stupid - make it actually work
23441         this time ;-)
23442
23443 2004-02-23  Martin Baulig  <martin@ximian.com>
23444
23445         * loader.c (method_from_memberref): Only inflate the method if
23446         it's in another klass.
23447
23448 2004-02-23  Martin Baulig  <martin@ximian.com>
23449
23450         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23451         (mono_class_init): If we're a generic instance and an interface,
23452         compute `class->interface_id'; also create `class->interfaces'
23453         here and inflate them.
23454
23455         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23456         `ginst->is_open'.
23457         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23458
23459         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23460
23461 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23462
23463         * reflection.c (method_encode_code): Improved the error message
23464         generated by the exception.
23465
23466 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23467
23468         * icall.c: Martin did not do what he said in the ChangeLog for
23469         2004-02-18, but put back the changes for properties and events.
23470         Commenting those changes out again and adding comment to bug #54518.
23471         
23472         * process.c: removed warning.
23473
23474 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23475
23476         * marshal.c (emit_struct_conv): Print an error message instead of
23477         asserting when a type does not have the StructLayout attribute.
23478
23479 2004-02-20  Martin Baulig  <martin@ximian.com>
23480
23481         * reflection.c (mono_type_get_object): Also use the cache for
23482         generic instances.
23483         (mono_reflection_bind_generic_parameters): Always compute
23484         `ginst->ifaces'.        
23485
23486 2004-02-20  Martin Baulig  <martin@ximian.com>
23487
23488         * class.h (MonoGenericMethod): Removed `klass'.
23489
23490         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23491         *klass' argument.
23492
23493 2004-02-20  Martin Baulig  <martin@ximian.com>
23494
23495         * reflection.c (method_encode_methodspec): Actually use the
23496         uninflated signature for the memberref.
23497
23498 2004-02-20  Martin Baulig  <martin@ximian.com>
23499
23500         * class.h (MonoGenericMethod): Removed `declaring'.
23501
23502         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23503         is NULL, compute it here.
23504
23505 2004-02-20  Martin Baulig  <martin@ximian.com>
23506
23507         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23508
23509         * metadata.c (mono_metadata_generic_inst_hash): New method.
23510         (mono_metadata_generic_inst_equal): New method.
23511
23512         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23513         `klass->image->generic_inst_cache' cache to avoid creating
23514         duplicate MonoGenericInst's.
23515
23516         * class.c (mono_class_inflate_generic_type): Use the cache.
23517
23518 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23519
23520         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23521
23522 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23523
23524         * icall.c: added Socket.WSAIoctl icall.
23525
23526         * socket-io.[ch]: implemented
23527         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23528
23529 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23530
23531         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23532
23533 2004-02-18  Urs C Muff  <umuff@quark.com>
23534
23535         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23536         this work on PPC and other big-endian architectures.
23537
23538         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23539         fields with an underscore to make sure they're only accessed by
23540         the read32() macro.
23541
23542 2004-02-18  Martin Baulig  <martin@ximian.com>
23543
23544         * icall.c: Put the klass->refclass changes back for methods and
23545         fields, but not for properties and events.  We're currently not
23546         distinguishing between DeclaringType and ReflectedType for
23547         properties and events, that's what caused the regressions.
23548
23549 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23550
23551         * object.c:
23552         (mono_async_result_new): the handle can be NULL.
23553
23554         * threadpool.c: Use an event instead of a semaphore, don't initialize
23555         it until needed. This saves quite a few semaphores from being created
23556         when using the threadpool.
23557
23558 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23559
23560         * object.c (mono_string_is_interned_lookup): Fix interning of long
23561         strings. Fixes #54473.
23562
23563         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23564
23565         * icall.c: Revert the klass->refclass changes since they introduce
23566         regressions (bug #54518).
23567
23568 2004-02-18  Martin Baulig  <martin@ximian.com>
23569
23570         * class.c (mono_class_init): If we're a generic instance and don't
23571         come from a TypeBuilder, inflate our members here.
23572         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23573         (mono_class_create_generic): New public method.
23574         (mono_class_initialize_generic): Removed.
23575         (get_instantiation_name): Renamed to
23576         _mono_class_get_instantiation_name() and made it public.
23577
23578 2004-02-18  Martin Baulig  <martin@ximian.com>
23579
23580         * class.c (mono_class_inflate_generic_type): Clear the new
23581         instance's `nginst->klass' when inflating a generic instance.
23582         (mono_class_is_subclass_of): Added (basic) support for generic
23583         instances.
23584
23585 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23586
23587         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23588         MonoMempool to hold compiled native code.
23589
23590 2004-02-17  Martin Baulig  <martin@ximian.com>
23591
23592         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23593         `properties'.
23594
23595         * reflection.c (mono_reflection_generic_inst_initialize): Added
23596         `MonoArray *properties' argument.
23597
23598         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23599
23600 2004-02-17  Martin Baulig  <martin@ximian.com>
23601
23602         * icall.c (ves_icall_Type_GetFields): Renamed to
23603         ves_icall_Type_GetFields_internal() and added a
23604         `MonoReflectionType *rtype' argument; pass it to
23605         mono_field_get_object() to set the field's "reflected" type.
23606         (ves_icall_Type_GetConstructors): Likewise.
23607         (ves_icall_Type_GetEvents): Likewise.
23608         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23609         argument; pass it to mono_method_get_object() to set the method's
23610         "reflected" type.       
23611
23612 2004-02-17  Martin Baulig  <martin@ximian.com>
23613
23614         * class.h (MonoDynamicGenericInst): New type.
23615         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23616
23617         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23618         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23619         (ves_icall_MonoGenericInst_GetFields): New interncall.
23620
23621         * class.c (mono_class_from_generic): Don't call
23622         mono_class_initialize_generic() if this is a dynamic instance;
23623         ie. it's being created from a TypeBuilder.
23624         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23625         `class->byval_arg.type'.
23626
23627         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23628         to `inflate_method' and made static.
23629         (mono_reflection_inflate_field): Removed.
23630         (mono_reflection_generic_inst_initialize): New public method.
23631
23632         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23633         `ctors' and `fields'; added `initialized'.
23634
23635 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23636
23637         * debug-helpers.c (mono_method_full_name): Fix output for empty
23638         namespaces.
23639
23640 2004-02-12  Martin Baulig  <martin@ximian.com>
23641
23642         * class.h (MonoClassField): Added `MonoType *generic_type'.
23643
23644         * reflection.c (mono_image_get_fieldref_token): Added support for
23645         instantiated generic types.
23646         (field_encode_inflated_field): Removed.
23647         (mono_image_get_inflated_field_token): Removed.
23648         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23649
23650         * reflection.h (MonoReflectionInflatedField): Removed.
23651
23652 2004-02-12  Martin Baulig  <martin@ximian.com>
23653
23654         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23655         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23656
23657         * reflection.c (mono_image_get_methodspec_token): Take a
23658         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23659         (mono_image_create_token): Check whether we have a
23660         `method->signature->gen_method' and call
23661         mono_image_get_methodspec_token() if appropriate.
23662         (inflated_method_get_object): Removed.
23663         (mono_reflection_bind_generic_method_parameters): Return a
23664         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23665         (mono_reflection_inflate_method_or_ctor): Likewise.
23666
23667         * reflection.h (MonoReflectionInflatedMethod): Removed.
23668
23669 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23670
23671         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23672         for custom valuetype marshalling.
23673
23674         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23675
23676 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23677
23678         * icall.c: fixed WSAGetLastError_internal name.
23679
23680 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23681
23682         * threads.c (mono_thread_attach): Allow this to be called multiple
23683         times for a thread.
23684         
23685         * threads.c (build_wait_tids): Do not wait for ourselves.
23686
23687         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23688         appdomain list is empty.
23689
23690         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23691         memory returned by mono_string_builder_to_utf16, since it points into
23692         managed memory. Thanks to Bernie Solomon for noticing this.
23693
23694         * icall.c: Add AppDomainSetup icalls.
23695
23696         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23697
23698         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23699         types.
23700
23701         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23702         custom attributes to the method_aux struct. Also fix array indexes etc.
23703
23704         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23705         
23706 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23707
23708         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23709         (both static and runtime) and reduce startup time.
23710
23711 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23712
23713         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23714         AsAny marshalling conversion instead of crashing.
23715
23716         * marshal.c: Fix warnings.
23717
23718 2004-02-09  Martin Baulig  <martin@ximian.com>
23719
23720         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23721
23722         * reflection.h (MonoReflectionInflatedMethod): Removed the
23723         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23724
23725         * reflection.c (method_encode_methodspec): Removed the `method'
23726         argument; we get it from `gmethod->declaring'.
23727         (inflated_method_get_object): Removed the `declaring' argument.
23728
23729 2004-02-09  Martin Baulig  <martin@ximian.com>
23730
23731         * class.h (MonoGenericMethod): New type.
23732         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23733         `generic_method'.
23734
23735         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23736         a `MonoGenericMethod *gen_method' one.
23737
23738         * class.c (mono_class_inflate_generic_type): Take an additional
23739         `MonoGenericMethod * argument.  This is only non-NULL if we're
23740         inflating types for a generic method.   
23741         (mono_class_inflate_generic_signature): Renamed to
23742         inflate_generic_signature() and made static; take a
23743         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23744         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23745         instead of a `MonoGenericInst *' one.
23746         (mono_class_inflate_generic_method): Likewise.
23747
23748         * reflection.c (encode_generic_method_sig): Take a
23749         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23750         (method_encode_methodspec): Likewise.
23751         (inflated_method_get_object): Likewise. 
23752
23753         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23754         field with a `MonoGenericMethod *gmethod' one.  
23755
23756 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23757
23758         * class.h (mono_class_has_parent): add parens to expansion
23759         so you can ! this.
23760
23761 2004-02-08  Martin Baulig  <martin@ximian.com>
23762
23763         * image.h (MonoImage): Removed `generics_cache'.
23764
23765         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23766         instead of a `MonoType *' argument; removed the `inflate_methods'
23767         argument.  Don't inflate methods here.
23768
23769         * loader.c (find_method): If it's a generic instance, call
23770         mono_class_init() on the `sclass->generic_inst->generic_type'.
23771
23772         * metadata.c (mono_type_size): Make this work on uninitialized
23773         generic instances; call it on the `ginst->generic_type's class.
23774
23775         * reflection.c (mono_reflection_bind_generic_parameters): Call
23776         mono_class_from_generic() to create the `ginst->klass'.
23777
23778 2004-02-08  Martin Baulig  <martin@ximian.com>
23779
23780         * class.h (MonoClass): Changed type of `generic_inst' from
23781         `MonoType *' to `MonoGenericInst *'.
23782
23783 2004-02-08  Martin Baulig  <martin@ximian.com>
23784
23785         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23786         mono_type_get_object(), this is now creating a `MonoGenericInst'
23787         for MONO_TYPE_GENERICINST.
23788         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23789         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23790
23791         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23792         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23793         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23794         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23795         and reflected type.
23796
23797         * reflection.h (MonoReflectionInflatedMethod): Removed
23798         `declaring_type' and `reflected_type'.
23799
23800 2004-02-08  Martin Baulig  <martin@ximian.com>
23801
23802         * class.h (MonoGenericInst): Added `MonoType *parent' and
23803         `MonoType **ifaces'.
23804
23805         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23806         `parent' and `interfaces'.
23807
23808         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23809         `MonoType *' argument and return a `MonoType *'.
23810
23811         * icall.c
23812         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23813         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23814
23815 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23816
23817         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23818         valuetype marshalling.
23819
23820 2004-02-06  Martin Baulig  <martin@ximian.com>
23821
23822         * class.c
23823         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23824         (my_mono_class_from_generic_parameter): Likewise.
23825
23826 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23827
23828         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23829         contents of the symbol files lazily.
23830
23831         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23832
23833         * threads.h threads.c icall.c: New icalls for getting and setting the
23834         threads name.
23835
23836 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23837
23838         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23839         Raise an exception when the domain is not found.
23840
23841 2004-02-03  Martin Baulig  <martin@ximian.com>
23842
23843         * reflection.c (mono_image_get_methodspec_token): Use the
23844         uninflated signature; fixes gen-33.
23845
23846 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23847
23848         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23849         the finalizer code can use thread functionality.
23850
23851         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23852         the finalizer thread.
23853
23854         * threads.c: Make some functions more robust.
23855
23856         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23857
23858         * metadata.h: Add new marshalling conventions.
23859
23860         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23861         stringbuilder marshalling. Fixes #53700.
23862
23863         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23864
23865         * reflection.c (mono_image_get_type_info): Save declarative security
23866         info.
23867
23868         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23869         unmanaged fields as well.
23870
23871         * appdomain.c: Bump corlib version.
23872
23873 2004-02-01  Martin Baulig  <martin@ximian.com>
23874
23875         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23876         method type arguments.  
23877
23878 2004-01-30  Duncan Mak  <duncan@ximian.com>
23879
23880         * marshal.h: Add prototype for
23881         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23882         and
23883         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23884         fix the build.
23885
23886 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23889         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23890
23891 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23892
23893         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23894         custom marshalling of valuetypes.
23895
23896         * marshal.c: Fix some warnings.
23897
23898 2004-01-29  Martin Baulig  <martin@ximian.com>
23899
23900         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23901         for generic method parameters.
23902
23903         * reflection.c (method_encode_methodspec): Write the uninflated
23904         signature into the methodspec table.
23905         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23906         is always the uninflated method.
23907         (reflection_methodbuilder_to_mono_method): Copy the generic
23908         parameters from the MethodBuilder into `header->gen_params'.
23909
23910 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23911
23912         * class.c (mono_class_from_generic_parameter): Fix warning.
23913
23914 2004-01-27  Martin Baulig  <martin@ximian.com>
23915
23916         * class.c (mono_class_from_generic_parameter): Don't create
23917         `klass->methods' here.  
23918
23919 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23920
23921         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23922         extension since it does not work with libraries named lib<FOO>.dll.so.
23923
23924 2004-01-25  Martin Baulig  <martin@ximian.com>
23925
23926         * class.c (mono_class_inflate_generic_type): Added support for
23927         MONO_TYPE_GENERICINST.
23928
23929         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23930         inflate methods on open constructed types.      
23931
23932 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23933
23934         * object.c: fire ProcessExit event in the root AppDomain after running
23935         Main. Fixes bug #53299.
23936
23937 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23938
23939         * socket-io.c: include the new socket-wrappers.h header.
23940         Use the wrappers instead of the unix socket functions to make the code
23941         more clear.
23942
23943 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23944
23945         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23946
23947         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23948         Fixes #22532.
23949
23950 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23951
23952         * reflection.c (mono_image_create_pefile): Handle the case when the
23953         entry point is not a MethodBuilder.
23954
23955         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23956         field to ReflectionMethod since it is not allways a builder.
23957
23958         * reflection.c (type_get_fully_qualified_name): New helper function to
23959         return the fully qualified name of a type.
23960
23961         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23962         type name for custom marshallers.
23963
23964         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23965
23966         * class.c (mono_class_setup_vtable): If a parent class already 
23967         implements an interface, use the implementing methods from that class.
23968         Fixes #53148.
23969
23970 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23971
23972         * threadpool.c: just return instead of ExitThread to allow for thread
23973         clean up earlier.
23974
23975 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23976
23977         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23978         when closing resource modules.
23979
23980         * reflection.c (mono_image_create_pefile): Handle the case when the
23981         entry point is not a MethodBuilder.
23982
23983         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23984         field to ReflectionMethod since it is not allways a builder.
23985
23986 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23987
23988         * marshal.c (mono_marshal_get_managed_wrapper): 
23989         mono_marshal_alloc takes native int so CONV_I
23990         the arg for 64bits.
23991
23992 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23993
23994         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23995         tokens in the cattr table. Fixes #53108.
23996
23997 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23998
23999         * loader.c: don't trim ".dll" before looking up in the config file.
24000         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
24001
24002 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24003
24004         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
24005         Return the module which contains the resource as well.
24006         (ves_icall_System_Reflection_Module_Close): New icall.
24007
24008         * appdomain.c: Bump corlib version number.
24009
24010         * image.c (mono_image_addref): New public function.
24011
24012         * assembly.c: Call mono_image_addref.
24013
24014         * reflection.c (mono_module_get_object): Increase reference count of 
24015         the image.
24016
24017         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
24018         Fixes #22532.
24019
24020         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
24021         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
24022         proper exceptions on DllImport problems.
24023
24024 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
24025
24026         * class.c, metadata.c: eliminate CSIZE macro.
24027
24028 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
24029
24030         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
24031         * object.h: Added async_callback field in MonoAsyncResult.
24032         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
24033         * verify.c: Added async_callback in MonoAsyncResult layout.
24034
24035 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
24036
24037         * reflection.c (mono_reflection_get_custom_attrs): Add support
24038         for Modules.
24039
24040 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24041
24042         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
24043         marshalling.
24044         (mono_marshal_method_from_wrapper): Add null pointer check.
24045
24046 2004-01-16  Martin Baulig  <martin@ximian.com>
24047
24048         * debug-mono-symfile.h: Set version number to 36 and reflect
24049         latest symbol writer changes.
24050
24051 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24052
24053         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
24054         multi-dimensional arrays.
24055         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
24056         (mono_class_from_mono_type): Use bounded_array_class_get.
24057         
24058         * class.c (mono_bounded_array_class_get): New function which takes
24059         a 'bounded' bool argument to distinguish vectors from one dimensional
24060         arrays.
24061
24062         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
24063         bounded_array_class_get if the array has bounds.
24064
24065         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24066         Search modules loaded using AssemblyBuilder:AddModule as well.
24067
24068 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24069
24070         * appdomain.c: increased corlib version.
24071         * filewatcher.c: removed g_print.
24072         * icall.c:
24073         (get_property_info): only allocate what is actually requested.
24074         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
24075
24076 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24077
24078         * Makefile.am: added filewatcher.[ch]
24079         * filewatcher.[ch]: FileSystemWatcher runtime support.
24080         * icall.c: added new FSW icalls.
24081
24082 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
24083
24084         * string-icalls.c: fix stringbuilder regression as suggested by
24085         Iain McCoy <iain@mccoy.id.au>.
24086
24087 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24088
24089         * process.c (process_read_stringtable_block): Recognize '007f' as
24090         a language neutral stringtable block.
24091
24092 2004-01-12  Patrik Torstensson
24093
24094         * object.h (MonoStringBuilder) : Changed layout to support our
24095         new stringbuilder class.
24096         * marshal.c: Change marshalling to support the new layout of 
24097         string builder.
24098         * appdomain.c: increased version number because new layout of
24099         string builder.
24100
24101 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
24102
24103         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
24104         assembly name as an string instead of an AssemblyName, since it is
24105         easier to extract info from it.
24106
24107         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
24108         the culture subdirectories too. Fixes #52231.
24109
24110 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24111
24112         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
24113         It takes 2 new parameters with an optional name for the method to look
24114         for and case ignoring info.
24115
24116         * threadpool.c: removed unused variable.
24117
24118 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24119
24120         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
24121         It takes 2 new parameters with an optional name for the property to look
24122         for and case ignoring info.
24123         Fixes bug #52753.
24124
24125 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24126
24127         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
24128         Fix #52451.
24129
24130 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24131
24132         * appdomain.c:
24133         * assembly.c: escape the uri before passing it to g_filename_from_uri.
24134         Fixes bug #52630.
24135
24136 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
24137
24138         * reflection.c: Add support for more than one unmanaged resource.
24139
24140         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
24141         in field->def_value, as done in all other cases.
24142
24143         * reflection.c (mono_reflection_get_custom_attrs): Add support for
24144         TypeBuilders.
24145
24146         * reflection.c (mono_reflection_create_runtime_class): Remove 
24147         errorneous assignment to klass->element_class, since it is already
24148         done in mono_reflection_setup_internal_class.
24149
24150 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24151
24152         * gc.c: added missing LeaveCriticalSection.
24153         * icall.c: indented a couple of lines.
24154         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
24155         if we call EndInvoke inside a callback. Fixes bug #52601.
24156
24157 2004-01-07  Martin Baulig  <martin@ximian.com>
24158
24159         * mono-debug-debugger.h
24160         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
24161
24162 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
24163
24164         * appdomain.c: Use messages in NotImplementedException.
24165
24166         * exception.c (mono_get_exception_not_implemented): Now this takes
24167         a message argument.
24168
24169         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
24170         exception instead of g_asserting an aborting when something is not
24171         implemented.
24172
24173         Add some inline docs.
24174
24175 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
24176
24177         * reflection.h: Update after changes to object layout.
24178
24179         * reflection.c: Implement saving of unmanaged aka win32 resources.
24180
24181         * appdomain.c: Bump version number.
24182
24183         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
24184         Handle missing domains gracefully.
24185
24186 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
24187
24188         * file-io.c : On Windows, there are much more invalid_path_chars.
24189
24190 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24191
24192         * class.h, object.c: prepare for GetType () speedup.
24193
24194 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
24195
24196         * profiler.c: workaround for --profile null reference exception on
24197           cygwin. Patch by Patrik Torstensson.
24198
24199 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
24200
24201         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
24202         make work for unaligned access.
24203
24204 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
24205
24206         * class.c: small cleanup (class->fields [i] -> field).
24207         * image.c: check address of metadata is valid.
24208
24209 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
24210
24211         * assembly.h assembly.c (mono_assembly_loaded): New public function to
24212         search the list of loaded assemblies.
24213
24214         * reflection.c (mono_reflection_type_from_name): Use 
24215         mono_assembly_loaded instead of mono_image_loaded.
24216
24217         * reflection.c: Fix warnings.
24218
24219 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
24222         is dynamic. This is needed since an assembly can contain both dynamic and
24223         non-dynamic images.
24224
24225         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
24226         assembly->dynamic.
24227
24228         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
24229
24230         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
24231         to store modules loaded using AddModule.
24232
24233         * reflection.c (mono_image_fill_file_table): Generalize this so it works
24234         on Modules.
24235
24236         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
24237
24238         * reflection.c (mono_image_fill_export_table_from_module): New function to
24239         fill out the EXPORTEDTYPES table from a module.
24240
24241         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
24242         into a separate function. Also handle loaded non-dynamic modules.
24243
24244         * reflection.c (mono_image_basic_init): Fix memory allocation.
24245
24246         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24247
24248         * assembly.c (mono_assembly_load_references): Make this public.
24249
24250 2003-12-19  Martin Baulig  <martin@ximian.com>
24251
24252         * class.c (mono_class_initialize_generic): Made this static, take
24253         a `MonoGenericInst *' instead of a `MonoClass *'.
24254         (mono_class_from_generic): Call mono_class_initialize_generic()
24255         unless we're already initialized or being called from
24256         do_mono_metadata_parse_generic_inst().
24257
24258         * class.h (MonoGenericInst): Added `initialized' and
24259         `init_pending' flags.
24260
24261         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
24262         `mono_class_init (gklass)' or mono_class_initialize_generic()
24263         here; set `generic_inst->init_pending' while parsing the
24264         `type_argv'.
24265
24266 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
24267
24268         * locales.c: include string.h for memxxx prototypes
24269
24270 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24271
24272         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
24273         constructor when accessing literal fields.
24274
24275 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
24276
24277         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24278
24279         * reflection.c (assembly_add_resource_manifest): New function to fill
24280         the MANIFESTRESOURCE table.
24281
24282         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
24283
24284         * reflection.h: Update to changes in class layout.
24285
24286         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
24287         Reenable call to mono_runtime_is_shutting_down ().
24288
24289         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
24290         determine if the runtime is shutting down.
24291
24292 2003-12-16  Jackson Harper <jackson@ximian.com>
24293
24294         * icall.c: comment out call to mono_runtime_is_shutting_down to
24295         fix build.
24296         
24297 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
24298
24299         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
24300         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
24301
24302 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
24303
24304         * reflection.c: move definition of swap_with_size
24305         to before its first call
24306
24307 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
24308
24309         * appdomain.c (mono_runtime_is_shutting_down): New public function.
24310
24311         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
24312         icall.
24313
24314         * object.c: Fix warnings.
24315
24316         * icall.c (ves_icall_Type_Get...): Only consider inherited static
24317         members if FlattenHierarchy is set.
24318
24319         * reflection.c (mono_image_add_decl_security): New function to emit
24320         declarative security.
24321
24322         * reflection.h reflection.c: Add support for declarative security.
24323
24324         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24325         
24326 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24327
24328         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24329         
24330         * appdomain.c verify.c: Moved corlib version checking into its own
24331         function in appdomain.c since it needs to create vtables etc.
24332
24333 2003-12-13  Patrik Torstensson <p@rxc.se>
24334
24335         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
24336         instead of unwrapped server.
24337
24338 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
24339
24340         * verify.c (check_corlib): Fix field index.
24341
24342 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
24343
24344         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
24345         GetGacPath icall.
24346
24347 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
24348
24349         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
24350         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
24351         cope with sizeof(size_t) != sizeof(guint32).
24352
24353 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24354
24355         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
24356         in case of failure.
24357
24358 2003-12-10  Mark Crichton <crichton@gimp.org>
24359
24360         * icall.c: removed the GetNonZeroBytes.  We now handle this case
24361         in managed code.
24362
24363         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
24364
24365 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
24366
24367         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
24368         marked as deleted.
24369
24370 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24371
24372         * verify.c (check_corlib): Handle the case when the version field is 
24373         initialized by a static constructor.
24374
24375 2003-12-08  Patrik Torstensson  <p@rxc.se>
24376
24377     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
24378
24379 2003-12-08  Martin Baulig  <martin@ximian.com>
24380
24381         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
24382         a MonoReflectionGenericParameter, also take the parameter index
24383         and name as arguments.
24384         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
24385         (ves_icall_MonoGenericParam_initialize): New interncall.
24386         (ves_icall_Type_make_byref_type): New interncall.
24387
24388         * reflection.h (MonoReflectionGenericParam): Derive from
24389         MonoReflectionType, not just from MonoObject.  Added `refobj' and
24390         `index' fields.
24391
24392         * reflection.c (mono_reflection_define_generic_parameter): Create
24393         and return a new MonoReflectionGenericParam; don't initialize the
24394         constraints here.
24395         (mono_reflection_initialize_generic_parameter): New public method;
24396         initializes the constraints and creates the `param->pklass'.
24397
24398 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24399
24400         * reflection.h reflection.c: Use the new fields 'num_types', 
24401         'num_fields' and 'num_methods' to track the number of types etc.
24402
24403         * verify.c (check_corlib): Check corlib version number.
24404
24405 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
24406
24407         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
24408         function works on all methods.
24409
24410 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24411
24412         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
24413         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
24414         the custom_type_info flag of the transparent proxy.
24415         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
24416         objects that supports IRemotingTypeInfo.
24417         * object.h: Added custom_type_info field in transparent proxy.
24418
24419 2003-12-06  Martin Baulig  <martin@ximian.com>
24420
24421         * class.c (mono_class_create_from_generic): Removed.
24422         (mono_class_from_generic): Check `ginst->klass' before doing
24423         anything else.  This is important to fully support "recursive"
24424         generic types.
24425
24426         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
24427         empty `generic_inst->klass' before doing anything else.
24428
24429 2003-12-06  Dick Porter  <dick@ximian.com>
24430
24431         * verify.c: 
24432         * object.h:
24433         * icall.c:
24434         * locales.c: Use C structs to access class fields.  Don't do a
24435         conversion between MonoString and UChar because both are
24436         platform-endian UTF-16.  Compare now takes startindex and count
24437         parameters.  Add a char overload for IndexOf.  Speed up the
24438         invariant string IndexOf.
24439
24440 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24441
24442         * Makefile.am (monosn_LDADD): Fix parallel build.
24443
24444 2003-12-04  Martin Baulig  <martin@ximian.com>
24445
24446         * icall.c
24447         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24448         (ves_icall_Type_make_array_type): New interncall.       
24449
24450 2003-12-04  Martin Baulig  <martin@ximian.com>
24451
24452         * locales.c: also change it in the !HAVE_ICU case.
24453
24454 2003-12-04  Dick Porter  <dick@ximian.com>
24455
24456         * icall.c:
24457         * locales.c: construct_compareinfo is now in CompareInfo, not
24458         CultureInfo.
24459
24460 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24461
24462         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24463         image->files array.
24464
24465         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24466         table as well.
24467
24468         * assembly.c (mono_assembly_load_references): Only load references
24469         once.
24470
24471         * class.c (mono_class_from_name): Avoid linear search of the 
24472         EXPORTEDTYPE table.
24473
24474         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24475
24476 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24477
24478         * image.h (MonoImage): Add 'field_cache' field.
24479
24480         * loader.c (mono_field_from_token): Cache field lookups.
24481         
24482         * reflection.c (mono_module_get_object): Fix name property.
24483
24484         * icall.c (ves_icall_get_enum_info): Update after changes to 
24485         mono_metadata_get_constant_index ().
24486
24487         * icall.c: Get rid of get_type_info icall, use a separate icall for
24488         each type property to avoid needless memory allocations. Fixes #51514.
24489
24490         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24491         to avoid needless binary searches.
24492
24493         * class.c (class_compute_field_layout): Move the initialization of
24494         field->def_value to mono_class_vtable ().
24495
24496         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24497         non-corlib types.
24498
24499         * object.c (mono_object_allocate): Make it inline.
24500
24501         * object.c (mono_object_allocate_spec): Make it inline.
24502         
24503 2003-12-02  Dick Porter  <dick@ximian.com>
24504
24505         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24506         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24507
24508 2003-12-01  Dick Porter  <dick@ximian.com>
24509
24510         * threads.c: Fix signature and call in CreateMutex and
24511         CreateEvent.
24512
24513 2003-12-01  Dick Porter  <dick@ximian.com>
24514
24515         * icall.c: 
24516         * locales.c: Implement string compares and searching
24517
24518         * object.h: Add extra Thread field
24519
24520 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24521
24522         * reflection.c (fixup_method): Add support for MonoCMethod.
24523
24524 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24525
24526         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24527
24528         * reflection.c (assembly_name_to_aname): Allow extra characters in
24529         assembly names. Fixes #51468.
24530
24531 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24532
24533         * exception.c (mono_exception_from_name_domain): New helper function.
24534
24535         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24536         exception object in the correct domain.
24537
24538         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24539         formatting + make a copy a the input data.
24540
24541         * loader.c (mono_get_method_from_token): Methods which contain
24542         native code do not have entries in the ImplMap.
24543
24544         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24545         Thanks to Gonzalo for spotting this.
24546         
24547         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24548         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24549
24550         * assembly.h (mono_assembly_load_from): Split the second part of 
24551         assembly loading into a new public function.
24552
24553         * exception.h (mono_get_exception_bad_image_format): New function.
24554
24555 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24556
24557         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24558         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24559         
24560         * icall.c: Add new icall for creating dynamic methods.
24561
24562         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24563
24564         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24565
24566         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24567         create a dynamic method.
24568
24569         * reflection.c (resolve_object): New helper function.
24570
24571         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24572         which manipulate it so they can also work on dynamic methods.
24573
24574         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24575         creating the MonoReflectionMethodAux structure if it is not needed.
24576         
24577         * reflection.h verify.c: Update after changes to object layout.
24578
24579         * reflection.c (method_builder_encode_signature): Fix compilation on
24580         gcc 2.95.x.
24581
24582 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24583
24584         * appdomain.h: Added support for context static fields. Added static_data
24585           field to MonoAppContext and renamed thread_static_fields to a more
24586           generic special_static_fields in MonoAppDomain, since it can now contain
24587           context static fields.
24588         * domain.c: Updated hashtable name.
24589         * object.c: Replaced field_is_thread_static() for a more generic
24590           field_is_special_static() which also checks for context static attribute.
24591           In mono_class_vtable(), added support for static context fields.
24592         * threads.c: Changed methods that manage thread static fields to more
24593           generic methods so they can be reused both for thread and context static
24594           data.
24595         * threads.h: Declared some new methods.
24596
24597 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24598
24599         * reflection.h: Update after changes to the managed types.
24600
24601         * reflection.c (encode_custom_modifiers): New helper function.
24602
24603         * reflection.c (method_encode_signature): Emit custom modifiers.
24604
24605         * reflection.c (field_encode_signature): Emit custom modifiers.
24606
24607 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24608
24609         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24610
24611         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24612         implementation.
24613
24614         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24615         icall.
24616
24617         * object.c (mono_field_get_value_object): New function.
24618
24619         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24620         specific.
24621
24622 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24623
24624         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24625         return a preallocated out-of-memory exception instance.
24626
24627         * object.c (out_of_memory): Use the new function.
24628
24629         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24630         flag is before the custom modifiers. Fixes #49802.
24631
24632 2003-11-16  Martin Baulig  <martin@ximian.com>
24633
24634         * class.c (mono_class_is_open_constructed_type): Implemented the
24635         MONO_TYPE_GENERICINST case.
24636
24637 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24638
24639         * assembly.c (mono_assembly_fill_assembly_name): New function to
24640         fill out the MonoAssemblyName structure.
24641         (mono_assembly_open): Use the new function.
24642
24643         * icall.c (fill_reflection_assembly_name): New helper function.
24644
24645         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24646         new function.
24647
24648         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24649
24650 2003-11-15  Martin Baulig  <martin@ximian.com>
24651
24652         * class.c (mono_class_is_open_constructed_type): New public
24653         function; checks whether a type is an open constructed type,
24654         ie. whether it still contains type parameters.
24655         (mono_class_inflate_generic_type): If we're a type parameter and
24656         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24657         type.
24658
24659         * class.h (MonoGenericInst): Added `guint32 is_open'.
24660
24661         * loader.c (method_from_methodspec): Check whether we're an open
24662         or closed constructed type and set `ginst->is_open'.
24663
24664         * reflection.c (mono_reflection_bind_generic_parameters): Check
24665         whether we're an open or closed constructed type and set
24666         `ginst->is_open'.
24667         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24668         from open constructed types.
24669
24670 2003-11-15  Martin Baulig  <martin@ximian.com>
24671
24672         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24673         a generic instance (instead of a generic type declaration) with
24674         unbound generic parameters, bind them to our actual types.
24675
24676 2003-11-14  Martin Baulig  <martin@ximian.com>
24677
24678         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24679
24680         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24681         an interface type, populate `res->interfaces' with instantiated
24682         versions of all the interfaces we inherit.
24683
24684 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24685
24686         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24687         when MONO_PATH is set but doesn't contain the install dir.
24688
24689 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24690
24691         * icall.c:
24692         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24693         it's also implemented in base classes. Fixes bug #50927.
24694
24695 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24696
24697         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24698         if this method is called from a finalizer. Fixes #50913.
24699
24700 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24701
24702         * threads.c: Implement VolatileRead/VolatileWrite
24703
24704         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24705
24706 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24707
24708         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24709         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24710         2.95.3.
24711
24712         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24713         from Peter Ross (pro@missioncriticalit.com).
24714         
24715 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24716
24717         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24718
24719 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24720
24721         * assembly.c (mono_assembly_load_references): Disable check because it
24722         triggers on older corlibs which lots of people have.
24723
24724 2003-11-12  Jackson Harper  <jackson@ximian.com>
24725
24726         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24727         load corlib.dll if mscorlib.dll is not found.
24728         * assembly.h: Remove corlib name define.
24729         * class.c:
24730         * domain.c:
24731         * image.c: Change corlib name to mscorlib.
24732         
24733 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24734
24735         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24736
24737 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24738
24739         * appdomain.h: Added loader_optimization here to sync with the C#
24740         code, and add disallow_binding_redirects field.
24741
24742 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24743
24744         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24745
24746         * reflection.c (mono_image_build_metadata): Fix crash on modules
24747         with no types.
24748
24749         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24750
24751         * icall.c (ves_icall_get_method_info): Return callingConvention as
24752         well.
24753
24754         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24755         namespaces from the EXPORTEDTYPE table as well.
24756
24757         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24758         from all modules inside the assembly.
24759         
24760 2003-11-11  Martin Baulig  <martin@ximian.com>
24761
24762         * reflection.c (mono_reflection_bind_generic_parameters): Make
24763         this work for interfaces.
24764
24765 2003-11-11  Martin Baulig  <martin@ximian.com>
24766
24767         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24768
24769 2003-11-11  Martin Baulig  <martin@ximian.com>
24770
24771         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24772         "MonoInflatedMethod" and "MonoInflatedCtor".
24773
24774 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24775
24776         * reflection.c (resolution_scope_from_image): Use the assembly table
24777         from the manifest module, since other modules don't have it.
24778
24779         * debug-helpers.c (mono_type_full_name): New helper function.
24780
24781         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24782
24783         * image.c (mono_image_load_file_for_image): New public function which
24784         is a replacement for the load_file_for_image in class.c.
24785
24786         * assembly.c (mono_assembly_load_module): A wrapper for the function
24787         above which does assembly association and reference loading too.
24788
24789         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24790
24791 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24792
24793         * appdomain.c: not all of the attributes for the full assembly name
24794         are required and the order doesn't matter. Fixes bug #50787.
24795
24796 2003-11-10  Dick Porter  <dick@ximian.com>
24797
24798         * locales.c: Use platform-endian UTF16
24799
24800 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24801
24802         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24803         
24804 2003-11-10  Martin Baulig  <martin@ximian.com>
24805
24806         * metadata.c
24807         (mono_metadata_load_generic_params): Make this actually work.
24808
24809         * reflection.c (mono_reflection_bind_generic_parameters): If our
24810         parent is a generic instance, pass all the `types' to it, no
24811         matter whether it has the same number of type parameters or not.
24812
24813 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24814
24815         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24816
24817         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24818         assignment code to this function so it gets called recursively for all
24819         modules.
24820
24821         * image.c (load_modules): Remove the assembly assignment since it is
24822         now done by mono_assembly_load_references.
24823         
24824         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24825         Add 'module' argument.
24826         (mono_module_get_types): New helper function.
24827         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24828
24829 2003-11-08  Martin Baulig  <martin@ximian.com>
24830
24831         * class.c (mono_class_inflate_generic_method): Interface method
24832         don't have a header.
24833
24834         * reflection.c (mono_image_get_methodspec_token): Take an
24835         additional `MonoGenericInst *' argument instead of reading it from
24836         the header; this is necessary to support interfaces.
24837         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24838         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24839         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24840         argument.
24841
24842         * reflection.h (MonoReflectionInflatedMethod): Added
24843         `MonoGenericInst *ginst'.
24844
24845 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24846
24847         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24848
24849 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24850
24851         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24852
24853 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24854
24855         * reflection.c 
24856         (reflection_methodbuilder_from_method_builder):
24857         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24858         initialize a ReflectionMethodBuilder structure.
24859         (mono_image_get_methodbuilder_token):
24860         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24861         tokens which point to types in another module inside the same assembly.
24862
24863         * reflection.c: Use the new helper functions.
24864         
24865         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24866
24867         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24868         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24869
24870         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24871         neccesary.
24872
24873         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24874         current module. Emit the manifest only for the main module.
24875
24876         * reflection.c (mono_image_create_token): Add assertion when a 
24877         memberref needs to be created.
24878
24879         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24880
24881         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24882         larger buffer for the custom attribute blob. Fixes #50637.
24883         
24884 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24885
24886         * threadpool.c: notify listener on async processing handles after
24887         invoking the async callback. Thanks to Zoltan.
24888
24889 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24890
24891         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24892         avoid code duplication.
24893
24894         * reflection.h (MonoDynamicImage): New type which is currently unused,
24895         but will be used through the ref.emit code in place of 
24896         MonoDynamicAssembly.
24897
24898         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24899         object layout.
24900
24901         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24902         a MonoDynamicImage instead of just a MonoImage.
24903         
24904         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24905         icalls to ModuleBuilder but keep their semantics, so they will work
24906         with moduleb->assemblyb. This will change later.
24907         
24908 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24909
24910         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24911         object layout.
24912
24913         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24914         main module, since it is now done by the managed code.
24915
24916 2003-11-03  Martin Baulig  <martin@ximian.com>
24917
24918         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24919         `ginst->klass' here.
24920         (method_encode_methodspec): Don't use the `ginst->generic_method's
24921         klass if it's a generic instance, use `ginst->klass' in this case.
24922
24923 2003-11-03  Martin Baulig  <martin@ximian.com>
24924
24925         * reflection.c (mono_image_get_generic_method_param_info):
24926         Removed, use mono_image_get_generic_param_info() instead.
24927         (mono_image_get_type_info): Write the GenericParam table before
24928         the Method table.  This is neccessary because in the GenericParam
24929         table, type parameters of the class (ie. '!0' etc.) must come
24930         before the ones from its generic methods (ie. '!!0' etc).
24931
24932 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24933
24934         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24935
24936 2003-11-02  Martin Baulig  <martin@ximian.com>
24937
24938         * reflection.c (create_generic_typespec): Take a
24939         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24940         the generic parameters from it.
24941
24942 2003-11-02  Martin Baulig  <martin@ximian.com>
24943
24944         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24945         instead of a `MonoClassField *' since we just need the type.
24946         (create_generic_typespec): New static function.  Creates a
24947         TypeSpec token for a generic type declaration.
24948         (mono_image_get_generic_field_token): New static function.
24949         (mono_image_create_token): If we're a FieldBuilder in a generic
24950         type declaration, call mono_image_get_generic_field_token() to get
24951         the token.
24952
24953 2003-11-02  Martin Baulig  <martin@ximian.com>
24954
24955         * reflection.h
24956         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24957         `MonoReflectionGenericInst *declaring_type' and
24958         `MonoReflectionGenericInst *reflected_type' fields.
24959
24960         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24961         `MonoReflectionGenericInst *declaring_type' and a
24962         `MonoReflectionGenericInst *reflected_type' argument instead of a
24963         single `MonoReflectionGenericInst *type' one.  Set
24964         `res->declaring_type' and `res->reflected_type' from them.
24965         (mono_reflection_inflate_field): Likewise.      
24966
24967 2003-11-02  Martin Baulig  <martin@ximian.com>
24968
24969         * class.c (mono_class_setup_vtable): Don't store generic methods
24970         in the vtable.  
24971
24972 2003-11-02  Martin Baulig  <martin@ximian.com>
24973
24974         * reflection.h (MonoReflectionGenericInst): Added
24975         `MonoReflectionType *declaring_type'.
24976
24977         * reflection.c (mono_reflection_bind_generic_parameters): Use
24978         `if (tb->parent)' instead of `klass->parent'.
24979
24980 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24981
24982         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24983         with an empty ASSEMBLY table.
24984
24985         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24986         variable in the inner and outer loops.
24987
24988 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24989
24990         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24991         argument.
24992
24993         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24994         
24995         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24996         icalls. Instead, do everything in managed code. This is needed since
24997         it is hard to restore the original domain etc. in unmanaged code in the
24998         presence of undeniable exceptions.
24999
25000         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
25001         New icalls to push and pop appdomain refs.
25002
25003 2003-10-31  Martin Baulig  <martin@ximian.com>
25004
25005         * class.c (inflate_generic_type): Renamed to
25006         mono_class_inflate_generic_type() and made it public.
25007
25008         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
25009         New interncall.
25010
25011         * loader.c (mono_field_from_memberref): Also set the retklass for
25012         typespecs.
25013
25014         * fielder.c (mono_image_get_inflated_field_token): New static
25015         method; creates a metadata token for an inflated field.
25016         (mono_image_create_token, fixup_method): Added support for
25017         "MonoInflatedField".
25018         (fieldbuilder_to_mono_class_field): New static function.
25019         (mono_reflection_inflate_field): New public function.
25020
25021         * reflection.h
25022         (MonoReflectionGenericInst): Added `MonoArray *fields'.
25023         (MonoReflectionInflatedField): New typedef.     
25024
25025 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
25026
25027         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
25028         for Solaris and other platforms without s6_addr16
25029
25030 2003-10-30  Martin Baulig  <martin@ximian.com>
25031
25032         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
25033         argument instead of two.
25034         (mono_class_inflate_generic_signature): Likewise.
25035         (inflate_generic_header): Likewise.
25036         (mono_class_inflate_generic_method): Likewise.  In addition, if
25037         `ginst->klass' is set, it becomes the new `method->klass'.
25038
25039         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
25040         field.
25041
25042         * reflection.c (encode_generic_method_sig): Write a 0xa as the
25043         first byte. [FIXME]
25044         (method_encode_methodspec): If we have generic parameters, create
25045         a MethodSpec instead of a MethodRef.
25046         (fixup_method): Added support for "MonoInflatedMethod" and
25047         "MonoInflatedCtor".
25048         (mono_image_create_token): Added support for "MonoInflatedMethod"
25049         and "MonoInflatedCtor".
25050         (inflated_method_get_object): New static function; returns a
25051         managed "System.Reflection.MonoInflatedMethod" object.
25052         (mono_reflection_bind_generic_method_parameters): Return a
25053         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
25054         (mono_reflection_inflate_method_or_ctor): Likewise.
25055         (mono_image_get_generic_method_param_info): Initialize unused
25056         fields to zero.
25057         (mono_image_get_generic_param_info): Likewise.
25058
25059         * reflection.h (MonoReflectionInflatedMethod): New public
25060         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
25061         "S.R.MonoInflatedCtor" classes.
25062
25063         * loader.c (method_from_memberref): If we're a TypeSpec and it
25064         resolves to a generic instance, inflate the method.
25065
25066 2003-10-28  Dick Porter  <dick@ximian.com>
25067
25068         * object.c (mono_runtime_run_main): Convert command-line arguments
25069         into utf8, falling back to the user's locale encoding to do so.
25070
25071 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
25072
25073         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
25074         at this time.
25075
25076         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
25077
25078         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
25079         up icalls at method definition time. Partially fixes #33569.
25080
25081 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
25082
25083         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
25084         marshalling of arrays. Fixes #50116.
25085
25086         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
25087
25088         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
25089         points to a vtable in the dying appdomain.
25090
25091         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
25092         listeners into unmanaged code inside the lock.
25093
25094         * object.c (mono_class_vtable): Turn off typed allocation in non-root
25095         domains and add some comments.
25096
25097 2003-10-25  Martin Baulig  <martin@ximian.com>
25098
25099         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
25100
25101         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
25102
25103         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
25104         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
25105         currently parsing.  Create the generic class and store it in
25106         `generic_inst->klass' before parsing the type arguments.  This is
25107         required to support "recursive" definitions; see mcs/tests/gen-23.cs
25108         for an example.
25109         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
25110         to support recursive typespec entries.
25111
25112         * class.c (mono_class_setup_parent): If our parent is a generic
25113         instance, we may get called before it has its name set.
25114         (mono_class_from_generic): Splitted into
25115         mono_class_create_from_generic() and mono_class_initialize_generic().
25116
25117 2003-10-25  Martin Baulig  <martin@ximian.com>
25118
25119         * icall.c (ves_icall_Type_BindGenericParameters): Return a
25120         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
25121         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
25122         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
25123
25124         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
25125         (create_typespec): Likewise.
25126         (mono_reflection_bind_generic_parameters): Return a
25127         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
25128         (mono_reflection_inflate_method_or_ctor): New public function.
25129
25130         * reflection.h (MonoReflectionGenericInst): New typedef.        
25131
25132 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
25133
25134         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
25135         inside the domain lock. Fixes #49993.
25136         
25137         * object.c (mono_class_vtable): When typed allocation is used, 
25138         allocate vtables in the GC heap instead of in the mempool, since the
25139         vtables contain GC descriptors which are used by the collector even
25140         after the domain owning the mempool is unloaded.
25141
25142         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
25143
25144         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
25145         reflect what it does. Also invalidate mempools instead of freeing
25146         them if a define is set.
25147
25148         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
25149         of the appdomain.
25150         
25151         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
25152         hold the finalizable objects in this domain.
25153
25154         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
25155         appdomain.
25156
25157         * appdomain.c (mono_domain_set): New function to set the current
25158         appdomain, but only if it is not being unloaded.
25159
25160         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
25161         appdomain which is being unloaded.
25162         
25163         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
25164         unloading of the root appdomain.
25165
25166         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
25167         icall to execute a method in another appdomain. Intended as a 
25168         replacement for InternalSetDomain, which can confuse the code 
25169         generation in the JIT.
25170
25171         * appdomain.c (mono_domain_is_unloading): New function to determine
25172         whenever an appdomain is unloading.
25173
25174         * appdomain.c (mono_domain_unload): New function to correctly unload
25175         an appdomain.
25176
25177         * assembly.c (mono_assembly_load_references): Check that an assembly
25178         does not references itself.
25179
25180         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
25181         domain manually, it asks the finalizer thread to do it, then waits for
25182         the result. Also added a timeout.
25183
25184         * icall.c: Register the new icalls.
25185
25186         * threads.h threads.c: Export the mono_gc_stop_world and 
25187         mono_gc_start_world functions.
25188         
25189         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
25190         function to fill out the mempool with 0x2a.
25191
25192 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
25193
25194         * reflection.h (MonoReflectionMethodAux): New structure to store
25195         information which is rarely used, thus is not in the MonoMethod
25196         structure.
25197
25198         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
25199         store the aux info.
25200
25201         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
25202         and marshalling info into the aux structure.
25203
25204         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
25205         from the aux structure.
25206
25207         * loader.c (mono_method_get_param_names): Retrieve the param names from
25208         the aux structure.
25209         
25210 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
25211
25212         * exception.h exception.c: Add AppDomainUnloadedException && fix 
25213         warning.
25214
25215 2003-10-21  Dick Porter  <dick@ximian.com>
25216
25217         * socket-io.c
25218         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
25219         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
25220
25221 2003-10-21  Martin Baulig  <martin@ximian.com>
25222
25223         * reflection.c (mono_reflection_bind_generic_parameters):
25224         `klass->parent' is NULL for interfaces.
25225
25226 2003-10-21  Martin Baulig  <martin@ximian.com>
25227
25228         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25229
25230 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
25231
25232         * exception.c (mono_exception_from_name_msg): New helper function for
25233         creating exceptions and initializing their message field.
25234
25235         * exception.c: Simplify functions using the new helper.
25236
25237         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
25238         New function.
25239
25240         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
25241         mono_raise_exception, since otherwise gcc doesn't generate the function
25242         epilog for raise_exception, confusing the stack unwinding in the JIT.
25243         Fixes #45043.
25244
25245         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
25246         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
25247         Fixes #49499.
25248
25249 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25250
25251         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
25252         utf8.
25253
25254 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
25255
25256         * icall.c: Removed GetUninitializedObject method because
25257           AllocateUninitializedClassInstance does the same.
25258
25259 2003-10-18  Martin Baulig  <martin@ximian.com>
25260
25261         * class.c (inflate_generic_signature): Renamed to
25262         mono_class_inflate_generic_signature() and made it public.
25263         (my_mono_class_from_generic_parameter): New static function; if we
25264         don't already have the generic parameter's MonoClass, create a
25265         very simple one which is just used internally in the runtime and
25266         not passed back to managed code.
25267
25268         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
25269
25270         * metadata.h (MonoMethodSignature): Moved the
25271         `MonoGenericParam *gen_params' to the MonoMethodHeader.
25272         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
25273
25274         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
25275         ves_icall_MonoMethod_GetGenericArguments(); this is now an
25276         interncall on the MonoMethod class, not on MethodInfo.
25277         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
25278         calling mono_reflection_bind_generic_method_parameters() directly.
25279
25280         * loader.c (mono_method_get_signature): If this is a MethodSpec;
25281         return the already computed `method->signature'.
25282         (method_from_methodspec): New static function to load a method
25283         from a MethodSpec entry.
25284         (mono_get_method_from_token): Call the new method_from_methodspec()
25285         for MethodSpec tokens.  
25286         (mono_get_method_from_token): If we're a generic method, load the
25287         type parameters.
25288
25289         * reflection.c (mono_image_get_memberref_token): Allow
25290         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
25291         table.
25292         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
25293         (mono_image_create_token): First check whether it's a generic
25294         method (so we'd need to create a MethodSpec), then do the other
25295         two alternatives.
25296         (mono_reflection_bind_generic_method_parameters): Return a
25297         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
25298         called directly from the interncall.
25299
25300 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
25301
25302         * reflection.c (load_public_key): Move loading of the public key
25303         into managed code.
25304
25305         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
25306
25307         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
25308         fields.
25309
25310         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
25311         culture, hash_alg and public_key. Fixes #49555.
25312
25313 2003-10-17  Martin Baulig  <martin@ximian.com>
25314
25315         * class.h (MonoGenericInst): Moved this declaration here and added
25316         `MonoMethod *generic_method'.
25317
25318         * icall.c
25319         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
25320         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
25321
25322         * metadata.c (mono_metadata_type_equal): Two types of
25323         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
25324         index; ie. don't compare the address of the `MonoGenericParam'
25325         structure.
25326         (mono_metadata_load_generic_params): Removed the `MonoMethod
25327         *method' argument.
25328
25329         * metadata.h (MonoGenericInst): Moved declaration to class.h.
25330         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
25331
25332         * reflection.c (method_encode_signature): Encode the number of
25333         generic parameters.
25334         (encode_generic_method_sig): New static function.
25335         (method_encode_methodspec): New static function; creates an entry
25336         in the MethodSpec table for a generic method.
25337         (mono_image_get_methodspec_token): New static function.
25338         (mono_image_create_token): Call mono_image_get_methodspec_token()
25339         for generic methods.
25340         (mono_reflection_bind_generic_method_parameters): New public
25341         function.  Instantiates a generic method.
25342
25343 2003-10-16  Martin Baulig  <martin@ximian.com>
25344
25345         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
25346         *gen_params' here from MonoMethodHeader.
25347
25348         * metadata.c (mono_metadata_parse_method_signature): If we have
25349         generic parameters, initialize `method->gen_params' and then set
25350         the correct `type->data.generic_param' in all the parameters.
25351
25352 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
25353
25354         * threads.c (mono_threads_get_default_stacksize): New function to 
25355         return the default stacksize.
25356
25357         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
25358         termination of the finalizer thread, since the previous method had
25359         race conditions. Fixes #49628.
25360
25361         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
25362         as for the other managed threads.
25363
25364 2003-10-16  Martin Baulig  <martin@ximian.com>
25365
25366         * class.c (inflate_generic_signature): Copy `generic_param_count'
25367         and `gen_params'.
25368
25369         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
25370         New interncall.
25371
25372         * metadata.c (mono_metadata_parse_method_signature): Actually set
25373         the `method->generic_param_count' here.
25374         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
25375
25376 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
25377
25378         * object.h: Add a new field to TypedRef to simplify the implementation
25379         of the REFANY opcodes in the JIT.
25380
25381         * icall.c: Make use of the new field.
25382
25383         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
25384         dynamically.
25385
25386 2003-10-15  Martin Baulig  <martin@ximian.com>
25387
25388         * class.c (mono_class_from_gen_param): Renamed to
25389         mono_class_from_generic_parameter() and moved most of the
25390         functionality from mono_reflection_define_generic_parameter()
25391         here; ie. we create a "real" class here.
25392         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
25393         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
25394         previously been called.
25395
25396         * class.h (MonoGenericParam): Moved the declaration of this struct
25397         here from metadata.h and added `MonoMethod *method'.
25398
25399         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
25400         interncall.
25401
25402         * loader.c (mono_get_method_from_token): If we have any generic
25403         parameters, call mono_metadata_load_generic_params() to read them
25404         from the MONO_TABLE_GENERICPAR.
25405
25406         * metadata.c (mono_metadata_load_generic_params): Added
25407         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
25408
25409         * metadata.h (MonoMethodSignature): Replaced
25410         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
25411         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
25412
25413         * reflection.c (mono_reflection_define_generic_parameter): Moved
25414         most of the functionality into the new
25415         mono_class_from_generic_parameter(); set the `method' field if
25416         we're a method parameter.       
25417
25418 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
25419
25420         * marshal.c (emit_struct_conv): if native size is 0
25421         emit no code.
25422
25423 2003-10-14  Martin Baulig  <martin@ximian.com>
25424
25425         * icall.c: The generics API has changed in the spec since it was
25426         added to System.Type; these modifications make it match the spec
25427         again.
25428         (ves_icall_Type_GetGenericParameters): Renamed to
25429         `ves_icall_Type_GetGenericArguments'.
25430         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
25431         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
25432         `ves_icall_MonoType_get_HasGenericArguments'.
25433         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25434         `ves_icall_MonoType_get_IsGenericParameter'.
25435         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25436         this is no interncall anymore.
25437         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25438         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25439
25440 2003-10-14  Martin Baulig  <martin@ximian.com>
25441
25442         * reflection.c (mono_reflection_bind_generic_parameters): Also
25443         inflate generic methods if we're reading the class from IL.
25444
25445 2003-10-13  Martin Baulig  <martin@ximian.com>
25446
25447         * reflection.c (mono_reflection_define_generic_parameter): This
25448         method isn't called directly from the icall anymore; take a
25449         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25450         method generic parameters.
25451         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25452         (method_builder_encode_signature): Encode generic parameters.
25453         (mono_image_get_method_info): Write generic params to the
25454         MONO_TABLE_GENERICPARAM table.
25455
25456         * reflection.h (MonoReflectionMethodBuilder): Added
25457         `MonoArray *generic_params'.
25458
25459         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25460
25461         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25462         wrapper for mono_reflection_define_generic_parameter().
25463         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25464
25465 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25466
25467         * marshal.h: Add missing function to fix build.
25468
25469         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25470         the SetLastError pinvoke attribute.
25471
25472         * marshal.c (mono_marshal_set_last_error): New helper function called
25473         by the generated code.
25474         
25475         * marshal.c (mono_mb_emit_branch): New helper function.
25476
25477         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25478
25479         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25480         classes as parameters and return values of delegates. Fixes #29256. 
25481
25482 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25483
25484         * locales.c: use gint32 in non HAVE_ICU case
25485
25486 2003-10-11  Martin Baulig  <martin@ximian.com>
25487
25488         * mono-debug.c (mono_debug_add_method): Added a workaround for
25489         bug #48591.
25490
25491 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25492
25493         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25494         delegates passed to native code must use the STDCALL calling 
25495         convention. Fixes #35987.
25496
25497 2003-10-10  Martin Baulig  <martin@ximian.com>
25498
25499         * class.c (inflate_generic_type): If we're inflating for a generic
25500         type instance (and not for a generic method), return
25501         MONO_TYPE_MVAR unchanged.
25502
25503 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25504
25505         * string-icalls.c: Join ignores null strings in the source array.
25506         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25507         * threads.c: GetAvailableTheads is slightly more accurate.
25508
25509 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25510
25511         * threads.h threads.c : add mono_threads_set_default_stacksize
25512         and pass default to CreateThread calls.
25513
25514 2003-10-09  Dick Porter  <dick@ximian.com>
25515
25516         * icall.c:
25517         * locales.h:
25518         * locales.c: Internal calls for constructing CultureInfo and
25519         related objects from libicu (if its available.)
25520
25521 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25522
25523         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25524
25525 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25526
25527         * threadpool.c: added an argument to async_invoke_thread that is the
25528         item to process, pass the MonoAsyncResult to the thread start function
25529         when creating a new thread. This way we don't need to acquire any lock
25530         when we're creating a new thread. Readded a semaphore for faster
25531         response times (instead of that Sleep i added).
25532
25533 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25534
25535         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25536         get daylight change dates better on Windows, fix handling
25537         of platforms without tm_gmtoff.
25538
25539 2003-10-06  Martin Baulig  <martin@ximian.com>
25540
25541         * class.c (inflate_generic_method): Renamed to
25542         mono_class_inflate_generic_method() and made public.
25543         (mono_class_init): Don't inflate the generic methods here.
25544         (mono_class_from_generic): Added `gboolean inflate_methods'
25545         argument.  Inflate the methods here.
25546
25547         * loader.c (mono_method_get_param_names): Ignore instances of
25548         generic types for the moment.
25549
25550         * reflection.c (fixup_method): Added support for inflated methods.
25551         (mono_image_create_token): Use mono_image_get_methodref_token()
25552         for inflated methods.
25553         (mono_custom_attrs_from_param): Ignore instances of generic types
25554         for the moment.
25555         (mono_reflection_bind_generic_parameters): New public function.
25556         Moved all the functionality from
25557         ves_icall_Type_BindGenericParameters() here and added support for
25558         dynamic types.
25559         (mono_reflection_define_generic_parameter): Initialize
25560         `klass->methods' here.
25561
25562         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25563         functionality into mono_reflection_define_generic_parameter().
25564         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25565         TypeBuilder, return that TypeBuilder.
25566
25567 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25568
25569         * appdomain.c: removed mono_delegate_semaphore.
25570
25571         * threadpool.c:
25572         (mono_thread_pool_add): moved hash table creation inside and the thread 
25573         creation outside of the critical region.
25574         (mono_thread_pool_finish): removed obsolete code.
25575         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25576         continue or exit the thread depending on the queue.
25577
25578 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25579
25580         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25581         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25582         handle more bool marshalling options
25583
25584 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25585
25586         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25587         arrays of structs. Also add a more descriptive error message when
25588         a structure member is marshalled as LPArray.
25589
25590 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25591
25592         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25593         marshalling arrays of complex types. Fixes #29098. Also remove an
25594         usused and incomplete function.
25595
25596 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25597
25598         * gc.c: report heap_size - free_bytes as total memory allocated
25599         (bug#49362).
25600
25601 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25602
25603         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25604         fix timezone handling problems on Windows.
25605         
25606         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25607         asserts when the year is outside the range handled by ms the functions.
25608
25609         * class.c (setup_interface_offsets): If the class is an interface,
25610         fill out its interface_offsets slot.
25611
25612 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25613
25614         * threadpool.c: mark threadpool threads as background.
25615
25616 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25617
25618         * decimal.c - define DECINLINE to nothing if not using GCC
25619
25620 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25621
25622         * assembly.c: More refcount fixes.
25623
25624 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25625
25626         * string-icalls.c: if we're not trimming, return the same string.
25627         When not splitting, don't create a new string.
25628
25629 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25630
25631         * image.c:
25632         (mono_image_open): increment the ref_count inside the critical section.
25633
25634 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25635
25636         * image.c (mono_image_open): Fix reference counting bug.
25637
25638 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25639
25640         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25641         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25642         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25643         mono_lookup_pinvoke_call throws.        
25644
25645 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25646
25647         * reflection.c (mono_reflection_parse_type): Fix #49114.
25648
25649         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25650         temporary workaround for cygwin header problem.
25651
25652         * object.c (mono_object_isinst): Synchronize this with the code
25653         generated by the JIT for casts.
25654
25655 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25656
25657         * reflection.c (encode_type): Fix #38332.
25658
25659 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25660
25661         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25662         the original method from the wrapper method.
25663
25664 2003-09-25  Martin Baulig  <martin@ximian.com>
25665
25666         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25667         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25668         (ves_icall_Type_get_IsGenericInstance): New interncall.
25669
25670 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25671
25672         * object.c: fix cast warning in big endian code.
25673
25674 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25675
25676         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25677         
25678 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25679
25680         * assembly.c: don't call check_env from mono_assembly_load. It's
25681         already done once in mono_assemblies_init and may cause headaches when
25682         multiple threads are loading assemblies.
25683
25684 2003-09-19  Martin Baulig  <martin@ximian.com>
25685
25686         * reflection.c (mono_reflection_define_generic_parameter): Don't
25687         allocate `klass->methods', set `klass->flags' to
25688         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25689
25690 2003-09-18  Martin Baulig  <martin@ximian.com>
25691
25692         * class.c (mono_class_init): Don't create `class->methods' if it's
25693         already initialized.
25694
25695         * metadata.c (mono_metadata_load_generic_params): Make this
25696         actually work.
25697
25698         * reflection.c (mono_reflection_define_generic_parameter): Set
25699         parent class and interfaces from the constraints.
25700
25701         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25702         to keep this struct in sync with the declaration in TypeBuilder.cs.
25703
25704 2003-09-17  Martin Baulig  <martin@ximian.com>
25705
25706         * metadata.h (MonoType): Replaced the data's `int type_param'
25707         field with `MonoGenericParam *generic_param'.
25708         (MonoGenericParam): Added `MonoClass *klass'.
25709
25710         * class.c (mono_class_from_gen_param): Removed the
25711         `MonoImage *image' and `int type_num' arguments.
25712
25713         * metadata.c (mono_metadata_parse_generic_param): New static
25714         method; creates a MonoGenericParam which just contains the index.
25715         (do_mono_metadata_parse_type): Call
25716         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25717         MONO_TYPE_MVAR.
25718
25719         * reflection.c (mono_image_typedef_or_ref): Generic type
25720         parameters may be in the same assembly, but never use a typedef
25721         for them.
25722         (mono_reflection_define_generic_parameter): We're now creating a
25723         "real" class for the type parameter; it's now safe to call
25724         mono_class_from_mono_type() on the class'es type, it'll do the
25725         right thing.
25726
25727 2003-09-16  Martin Baulig  <martin@ximian.com>
25728
25729         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25730         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25731         the `symfile' data structure must be fully initialized before it
25732         gets added to the table.
25733
25734 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25735
25736         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25737
25738         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25739         class init trampolines.
25740
25741 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25742
25743         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25744         to the built-in profiler to turn off time and allocation profiling
25745         respectively.
25746
25747 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25748
25749         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25750         g_direct_equal.
25751
25752         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25753         in human readable form.
25754
25755 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25756
25757         * reflection.c icall.c: Fixed warnings.
25758
25759         * image.c (load_class_names): Use a temporary hash table to hold the
25760         namespaces in order to avoid doing many string comparisons.
25761
25762         * image.h: Fix typo.
25763
25764         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25765         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25766         since the NULL case is short-circuited inside g_hash_table_lookup, 
25767         leading to better performance.  
25768
25769         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25770         obtain the first custom attribute for a given index. Depends on the
25771         CustomAttribute table being sorted by the parent field.
25772
25773         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25774         for better performance.
25775
25776 2003-09-07  Martin Baulig  <martin@ximian.com>
25777
25778         * class.c (mono_class_init): If we're a generic instance, inflate
25779         all our methods instead of loading them from the image.
25780         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25781
25782 2003-09-07  Martin Baulig  <martin@ximian.com>
25783
25784         * mono-debug-debugger.c: Added support for constructors.
25785
25786 2003-09-06  Martin Baulig  <martin@ximian.com>
25787
25788         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25789         New interncall.
25790
25791         * reflection.c (mono_reflection_setup_generic_class): Call
25792         ensure_runtime_vtable() to create the vtable.
25793
25794 2003-09-05  Martin Baulig  <martin@ximian.com>
25795
25796         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25797         MONO_TYPE_MVAR.
25798
25799 2003-09-04  Martin Baulig  <martin@ximian.com>
25800
25801         * reflection.c (mono_reflection_define_generic_parameter): Generic
25802         parameters start with zero.
25803
25804 2003-09-04  Martin Baulig  <martin@ximian.com>
25805
25806         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25807
25808         * reflection.h (MonoReflectionGenericParam): New typedef.
25809         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25810         the generic parameters from the managed TypeBuilder.
25811
25812         * reflection.c (mono_reflection_define_generic_parameter): New function.
25813         (mono_reflection_create_runtime_class): Encode generic parameters.
25814         (mono_reflection_setup_generic_class): New function; this is
25815         called after adding adding all generic params to the TypeBuilder.
25816         (encode_type): Added MONO_TYPE_VAR.
25817
25818 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25819
25820         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25821         here from the JIT.
25822
25823         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25824         load hook.
25825
25826 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25827
25828         * reflection.h reflection.c class.h class.c: Delete duplicate 
25829         definition of mono_type_get_name () from reflection.c and export the
25830         one in class.c.
25831
25832         * class.c: Class loading fixes from Bernie Solomon 
25833         (bernard@ugsolutions.com).
25834
25835         * reflection.c: Endianness fixes from Bernie Solomon 
25836         (bernard@ugsolutions.com).
25837         
25838 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25839
25840         * assembly.h assembly.c: Define a file format version for AOT
25841         libraries.
25842         
25843         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25844
25845         * appdomain.h (MonoJitInfo): New field to determine whenever the
25846         code is domain neutral.
25847         
25848 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25849
25850         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25851
25852 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25853
25854         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25855         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25856         Avoid caching the result since strings must be domain specific. Fixes
25857         #48050.
25858
25859 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25860
25861         * marshal.c (mono_marshal_init): Make this callable multiple times
25862         since it is hard to find a correct place to call it.
25863
25864         * object.c (mono_runtime_class_init): Execute static constructors in
25865         the correct appdomain.
25866
25867         * image.c (build_guid_table): Handle the case when multiple images have
25868         the same GUID.
25869
25870 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25871
25872         * icall.c: added a couple of icalls for System.Web.
25873
25874 2003-08-28  Martin Baulig  <martin@ximian.com>
25875
25876         * icall.c (ves_icall_Type_BindGenericParameters): Use
25877         `klass->generic_inst' instead of `&klass->byval_arg' in the
25878         mono_type_get_object() call.  The returned type must be
25879         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25880
25881 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25882
25883         * NOTES: New file.
25884
25885         * object.c (mono_class_proxy_vtable): Make it thread safe.
25886
25887         * pedump.c: Fix warning.
25888
25889         * object.c appdomain.h: Get rid of metadata_section. 
25890         It is no longer needed and it was causing deadlocks with domain->lock.
25891
25892         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25893
25894 2003-08-26  Martin Baulig  <martin@ximian.com>
25895
25896         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25897
25898 2003-08-26  Martin Baulig  <martin@ximian.com>
25899
25900         * pedump.c (main): Call mono_metadata_init(),
25901         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25902         and mono_loader_init().
25903
25904 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25905
25906         * loader.h: Add missing include to fix build.
25907
25908         * image.h: mono_image_load_references is no more.
25909
25910         * assembly.c: Reworked assembly loading to make it really thread safe.
25911         After these changes, the assembly returned by mono_assembly_open is
25912         fully initialized, i.e. all its references assemblies are loaded.
25913
25914         * assembly.c (mono_image_load_references): Renamed to 
25915         mono_assembly_load_references, and made private, since clients no
25916         longer need to call it.
25917
25918         * class.c: Removed calls to mono_assembly_load_references, since it was
25919         a source of deadlocks.
25920
25921         * loader.h loader.c class.h class.c: Protect data structures using a 
25922         new lock, the loader lock.
25923
25924         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25925         GPtrArrays only when needed.
25926
25927         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25928         into empty structures by mcs. Fixes pinvoke7.cs.
25929         
25930         * domain.c (mono_init): Call a new initialization function.
25931
25932         * appdomain.c (mono_runtime_init): Call the new initializer function
25933         of the marshal module.
25934
25935         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25936         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25937
25938         * marshal.h marshal.c: Added locks around the wrapper caches to make
25939         this module thread safe.
25940
25941         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25942         this argument. Fixes pinvoke1.exe.
25943
25944 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25945
25946         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25947         enumeration of values. Removed fields to store remote call output values in
25948         MonoAsyncResult. Not needed any more.
25949         * object.c: Initialize call_type and async_result fields in mono_message_init.
25950         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25951         dispatching the message.
25952         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25953         async call to finish. To do it use a message with EndInvoke call type.
25954
25955 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25956
25957         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25958         determines whenever a method has marshalling info.
25959
25960 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25961
25962         * assembly.c: fix the build on windows.
25963
25964 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25965
25966         * object.cs: Fixed bug #47785.
25967
25968 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25969
25970         * string-icalls.c (StringReplace): If their are no occurances of
25971         the old string found return a reference to the supplied
25972         string. This saves some memory and matches MS behavoir.
25973         
25974 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25975
25976         * socket-io.c: fixed compilation for systems that define AF_INET6
25977         and don't define SOL_IP/SOL_IPV6.
25978
25979 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25980
25981         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25982         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25983
25984         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25985
25986         * domain.c: Make this module thread safe.
25987
25988         * domain.c (mono_init): Call new initialization function.
25989
25990         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25991         reference types too. Fixes #38812.
25992
25993         * image.c (mono_image_init): Fixed warnings.
25994
25995         * class.c (mono_class_from_typeref): Handle assembly load failure
25996         correctly.
25997
25998         * appdomain.c (add_assemblies_to_domain): Handle the case when
25999         the references of an assembly are not yet loaded.
26000
26001         * metadata.c image.c assembly.c: Moved initialization of global
26002         variables to a separate function called at startup since lazy 
26003         initialization of these variables is not thread safe.
26004         
26005         * image.c assembly.c: Made this module thread safe by adding locks in 
26006         the appropriate places.
26007
26008         * domain.c (mono_init): Call the new initialization functions of the
26009         three modules.
26010
26011 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
26012
26013         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
26014           make a direct call. It is proxy's work to make the call asynchronous.
26015           mono_delegate_end_invoke(): If the targe is a proxy, just collect
26016           the return values.
26017         * object.cs: mono_method_call_message_new(): read AsyncResult and
26018           state object from parameters list, if this info is requested.
26019         * object.h: Added fields to store remote call output values in
26020           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
26021
26022 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26023
26024         * object.h: add needed fields to MonoThread.
26025         * threads.c, threads.h: allow registering a function to cleanup data
26026         allocated per thread by the JIT.
26027
26028 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26029
26030         * loader.h: portability fix by Bernie Solomon
26031         * <bernard@ugsolutions.com>.
26032
26033 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
26034
26035         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
26036         return a MonoArray. This simplifies the code and also ensures that
26037         the cache allways contains an object reference as a value.
26038
26039         * icall.c (ves_icall_get_parameter_info): Simplified using the new
26040         function.
26041
26042 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26043
26044         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
26045         fixes a problem with byte ordering when getting the address family for
26046         a socket.
26047
26048 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
26049
26050         * .cvsignore: Added monosn.
26051
26052         * reflection.h reflection.c loader.c: Added support for parameter
26053         marshalling to dynamically created types. Fixes #47295.
26054
26055 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
26056
26057         * rand.c: remove useless warnings.
26058
26059 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
26060
26061         * class.c: implemented ldtoken for methods and fieldrefs.
26062
26063 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26064
26065         * threadpool.c: when mono_async_invoke was called, no one took care of
26066         monitoring the queue. So if the method invoked took some time and we
26067         got new async invoke requests after 500 ms (the thread created waited
26068         that long in WaitForSingleObject), the new async invoke was not called
26069         until the previous one finished.
26070
26071         This is fixed now. Thanks to Totte for helping with it.
26072
26073 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26074
26075         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
26076
26077 2003-08-11  Martin Baulig  <martin@ximian.com>
26078
26079         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
26080
26081 2003-08-06  Martin Baulig  <martin@ximian.com>
26082
26083         * mono-debug-debugger.c: Added support for static fields,
26084         properties and methods.
26085
26086 2003-08-06  Martin Baulig  <martin@ximian.com>
26087
26088         * mono-debug-debugger.c: Don't store the MonoString's vtable to
26089         make this work for applications with multiple application domains.
26090
26091 2003-08-04  Martin Baulig  <martin@ximian.com>
26092
26093         * mono-debug-debugger.c: Completely reworked the type support; the
26094         most important thing is that we're now just using one single
26095         `MonoType' instance per type.
26096
26097 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
26098
26099         * mono-endian.h, mono-endian.c, icall.c: Added icall
26100         ves_icall_System_Double_AssertEndianity to assert double word endianity
26101         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
26102
26103 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26104
26105         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
26106         support, icalls and fixes.
26107
26108 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
26109
26110         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
26111         classes that are a punctuation character in .NET is not the same a
26112         g_unichar_ispunct.
26113
26114 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26115
26116         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
26117
26118 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
26119
26120         * icall.c: Add new MemCopy internalcall.
26121         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
26122         Simplified code; It is not necessary to handle all the cases here,
26123         as the C# code takes care of it.  Only handle the case of the name
26124         resource embedded into the assembly.
26125
26126         Changed signature to return the data pointer and the size of the
26127         data. 
26128
26129 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
26130
26131         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
26132         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
26133
26134 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
26135
26136         * socket-io.c: ignore EINTR error in select.
26137
26138 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26139
26140         * class.h, class.c: removed unused subclasses field in MonoClass.
26141
26142 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
26143
26144         * icall.c: improve fix of get_base_definition(). If the parent class
26145           doesn't have the mehod, look at the parent of the parent.
26146         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
26147           to check if a parameter is an in or out parameter
26148           (PARAM_ATTRIBUTE_IN is not set by default).
26149           mono_method_return_message_restore(): Use mono_class_value_size to
26150           get the size of a value type. mono_type_stack_size (parameterType)
26151           does not return the correct value if parameterType is byRef.
26152           mono_load_remote_field(), mono_load_remote_field_new(),
26153           mono_store_remote_field(), mono_store_remote_field_new():
26154           raise exception if the remote call returns an exception.
26155
26156 2003-07-28  Martin Baulig  <martin@ximian.com>
26157
26158         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
26159         method.  This is a wrapper around mono_runtime_invoke() which
26160         boxes the instance object if neccessary.
26161
26162 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26163
26164         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
26165         metadata.h, row-indexes.h, verify.c: first cut of generics support.
26166
26167 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26168
26169         * icall.c: disable mcs bug workaround.
26170
26171 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
26172
26173         * object.c (mono_runtime_class_init): Take the metadata_section
26174         mutex before obtaining the domain mutex.
26175
26176         * appdomain.h: Added definition of metadata_section mutex here. 
26177
26178         * object.c: define metadata_mutex here.
26179
26180 2003-07-24  Ravi Pratap  <ravi@ximian.com>
26181
26182         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
26183         fixed.
26184
26185 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
26186
26187         * reflection.c: Fix bug #46669
26188
26189 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26190
26191         * exception.c:
26192         * exception.h:
26193         * icall.c:
26194         * object.h: fill in the type name for TypeLoadException.
26195
26196 2003-07-23  Ravi Pratap  <ravi@ximian.com>
26197
26198         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
26199         relationship between TypeBuilders while compiling corlib) and bug
26200         45993 (Array types returned from the runtime while compiling
26201         corlib were from the loaded corlib).
26202
26203 2003-07-22  Martin Baulig  <martin@ximian.com>
26204
26205         * mono-debug-debugger.c: Reworked the type support a bit more;
26206         distinguish between types and classes.
26207
26208 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
26209
26210         * icall.c: add IsArrayImpl icall.
26211
26212 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
26213
26214         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
26215         initializing real_size only once. Also fix bug #46602.
26216
26217 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
26218
26219         * object.c: Renamed mono_metadata_section to metadata_section.
26220
26221 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
26222
26223         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
26224           empty array if the type is an array. Fixed.
26225           ves_icall_MonoMethod_get_base_definition: if the base method
26226           is abstract, get the MethodInfo from the list of methods of
26227           the class.
26228         * reflection.c: ParameterInfo.PositionImpl should be zero-based
26229           and it was 1-based. Fixed in mono_param_get_objects.
26230
26231 2003-07-20  Martin Baulig  <martin@ximian.com>
26232
26233         * mono-debug.h: Set version number to 31.
26234         (mono_debug_init): Added `MonoDomain *' argument.
26235
26236         * mono-debug-debugger.c: Reworked the type support; explicitly
26237         tell the debugger about builtin types; pass the `klass' address to
26238         the debugger.
26239
26240 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
26241
26242         * image.c: Allow new metadata tables to be loaded without a
26243         warning. Also update the warning message to give the new constant value.
26244                 
26245 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
26246
26247         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
26248         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
26249         array type representation changes.
26250
26251 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26252
26253         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
26254         on Environment.Exit () call.
26255
26256 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
26257
26258         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
26259         requires a matching corlib.
26260
26261 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26262
26263         * Changelog: My editor decided to add a CR to each line. Sorry about that.
26264           Committed again without the CRs.
26265         
26266 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26267
26268         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
26269           getting it from the "this" socket instance. Did not work
26270           if the socket is a subclass of Socket.
26271           Also fixed bug #35371.
26272
26273 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26274
26275         * metadata.c: fixed size for TypedByRef.
26276         * loader.c: when searching for a method, consider the vararg amrker.
26277         * unicode.c, decimal.c: constify some arrays.
26278
26279 2003-07-15  Dick Porter  <dick@ximian.com>
26280
26281         * socket-io.c: Fixed compilation for gcc < 3.2.
26282
26283         Fixed compilation for machines that don't have AF_INET6 (thanks to
26284         Bernie Solomon <bernard@ugsolutions.com> for that part.)
26285
26286         Fixed compile warnings.
26287         
26288         Fixed formatting and line endings.
26289
26290 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
26291
26292         * socket-io.h:
26293         * socket-io.c: Added IPv6 support.
26294
26295 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
26296
26297         * class.c (mono_class_is_assignable_from): New function to implement
26298         the is_assignable_from logic. Used by mono_object_isinst, 
26299         Type::IsAssignableFrom () and the interpreter.
26300
26301         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
26302         Object, even interfaces.
26303         
26304         * object.c (mono_object_isinst): Implement in terms of 
26305         is_assignable_from.
26306
26307         * icall.c (ves_icall_type_is_assignable_from): New icall.
26308
26309 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
26310
26311         * domain.c (foreach_domain): fix compiler warning.
26312
26313 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
26314
26315         * image.c (load_metadata_ptrs): use g_strndup because strndup is
26316         not available on all plattforms
26317
26318 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
26319
26320         * image.h image.c: Store the metadata version string in MonoImage.
26321         * icall.c: New icall to retrieve the image version.
26322         * reflection.c (create_dynamic_image): Fill in the image version field
26323         * reflection.c (build_compressed_metadata): Use the image version
26324         from the image structure.
26325
26326 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26327
26328         * appdomain.c: modified comment.
26329         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
26330         That will be its last iteration when mono_gc_cleanup is called from
26331         mono_runtime_cleanup and before the domain is unloaded.
26332
26333         Fixes bug #45962.
26334
26335 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
26336
26337         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
26338         attributes.
26339
26340 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26341
26342         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
26343         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
26344         Bernie Solomon <bernard@ugsolutions.com>.
26345
26346 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26347
26348         * object.c, object.h: provide mono_object_new_fast() for faster
26349         allocation in some special cases.
26350
26351 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26352
26353         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
26354         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
26355
26356 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
26357
26358         * threadpool.c: fix leaks.
26359
26360 2003-07-01  Dick Porter  <dick@ximian.com>
26361
26362         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
26363         using MonoGHashTables.  Fixes threadpool bug posted to list.
26364
26365 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26366
26367         * image.h, image.c: added support to load an assembly from a byte array.
26368         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
26369         assembly bundle support.
26370
26371 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
26372
26373         * threadpool.c (mono_thread_pool_add): keep a reference to the
26374         AsyncResult to prevent GC
26375
26376 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26377
26378         * class.c: leak fix.
26379
26380 2003-06-25  Dick Porter  <dick@ximian.com>
26381
26382         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
26383         for the async object, the WaitHandle object will close the handle.
26384         Fixes bug 45321.
26385
26386 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26387
26388         * class.c: in mono_array_class_get (), lookup from the hash with the
26389         same type we insert: this works around a bug in
26390         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
26391         lluis. The real fix will have to wait for after the release.
26392
26393 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26394
26395         * icall.c: fix memory leak when getting type members.
26396
26397 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26398
26399         * reflection.c: added more pubtoken special cases.
26400
26401 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
26402
26403         * class.c: handle field offset correctly when class size
26404         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
26405
26406 2003-06-20  Martin Baulig  <martin@ximian.com>
26407
26408         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
26409         *image' field.
26410
26411 2003-06-20  Martin Baulig  <martin@ximian.com>
26412
26413         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
26414
26415 2003-06-20  Martin Baulig  <martin@ximian.com>
26416
26417         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
26418         just distinguish between variables in registers and variables at
26419         an offset relative to a register.
26420
26421 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26422
26423         * icall.c: #ifdef out latest changes until mcs is fixed.
26424
26425 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26426
26427         * icall.c: return members in metadata order.
26428
26429 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26430
26431         * icall.c: avoid infinite loop in GetTimeZoneData.
26432
26433 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26434
26435         * icall.c: added Marshal.Prelink/All icalls.
26436
26437 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26438
26439         * object.c, object.h: fix warnings and do some overflow checking
26440         when creating arrays.
26441
26442 2003-06-17  Dick Porter  <dick@ximian.com>
26443
26444         * file-io.h:
26445         * file-io.c: File attributes need to be tweaked slightly when
26446         passed from the managed to the w32 world.
26447
26448 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26449         * profiler.h profiler-private.h profiler.c: Rework last patch
26450         based on suggestion by Paolo.
26451         
26452 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26453
26454         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26455         instruction level coverage data collection.
26456         * profiler.h profiler.c (: Added new callback function which can be
26457         used by the profiler to limit which functions should have coverage
26458         instrumentation.
26459         * profiler.c (mono_profiler_load): Call g_module_build_path to
26460         generate the file name of the profiler library.
26461
26462 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26463
26464         * profiler.c, profiler.h, profiler-private.h: added basic block 
26465         coverage profiling API.
26466
26467 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26468
26469         * reflection.c (mono_reflection_create_runtime_class): Add support
26470         for events in dynamically generated code.
26471
26472         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26473         not allocated.
26474
26475 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26476
26477         * icall.c: when getting timezone info, return reasonable values if we
26478         can't get the actual data.
26479
26480 2003-06-14  Dick Porter  <dick@ximian.com>
26481
26482         * threads.c (start_wrapper): Remove the reference to the thread
26483         object in the TLS data, so the thread object can be finalized.
26484         This won't be reached if the thread threw an uncaught exception,
26485         so those thread handles will stay referenced :-( (This is due to
26486         missing support for scanning thread-specific data in the Boehm GC
26487         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26488
26489 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26490
26491         * reflection.c: ensure streams and tables are first allocated with
26492         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26493
26494 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26495
26496         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26497
26498 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26499
26500         * reflection.c (mono_reflection_create_runtime_class): Add support for
26501         properties to dynamically created classes.
26502         * reflection.c: Fix a few places where non-MonoObjects were inserted
26503         into the tokens hashtable.
26504
26505 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26506
26507         * object.c: some support to handle out of memory exceptions.
26508
26509 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26510
26511         * marshal.c (mono_marshal_get_native_wrapper): support reference
26512         return types
26513
26514 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26515
26516         * object.h, object.c: more portability stuff from Bernie Solomon.
26517         Unexport mono_object_allocate(). Added mono_object_unbox ().
26518         Set exitcode when an unhandled exception is thrown.
26519
26520 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26521
26522         * marshal.c (mono_marshal_get_native_wrapper): use custom
26523         marshaler for return types.
26524
26525 2003-06-10  Dick Porter  <dick@ximian.com>
26526
26527         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26528         ip_mreq is available
26529
26530 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26531
26532         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26533         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26534         by Bernie Solomon <bernard@ugsolutions.com>.
26535
26536 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26537
26538         * gc.c (mono_gc_init): Avoid error message on shutdown when
26539         GC_DONT_GC=1 is used.
26540
26541         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26542         New icall to return the GUID of a module.
26543
26544 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26545
26546         * class.c: ensure instance size always includes the parent's size
26547         even whem class size is set explicitly (fixes bug#44294).
26548
26549 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26550
26551         * profiler.h, profiler.c: made the simple profiler thread-safe,
26552         get more accurate timing info. Allow the loading of an
26553         externally-developed profiler module.
26554
26555 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26556
26557         * marshal.c (mono_marshal_get_native_wrapper): improved
26558         class/byref arguments.
26559         (mono_marshal_get_native_wrapper): better string marshaling support.
26560
26561 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26562
26563         * class.c: ensure .pack and .size are handled correctly and
26564         simplified layout of static fields.
26565
26566 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26567
26568         * appdomain.c
26569         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26570
26571         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26572         current directory (fix bug 44008)
26573
26574 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26575
26576         * marshal.c (mono_marshal_get_native_wrapper): started support for
26577         custom marshalers.
26578         (mono_delegate_to_ftnptr): consider marshalling specifications
26579
26580 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26581
26582         * reflection.c, reflection.h: emit custom marshal info.
26583
26584 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26585
26586         * object.c: free the GError.
26587         * icall.c: added CloseEvent_internal.
26588         * threads.[ch]:
26589         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26590         call.
26591
26592 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26593
26594         * loader.c (mono_method_get_signature): Add support for dynamic
26595         assemblies.
26596
26597 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26598
26599         * reflection.c: fixed bug #43905.
26600
26601 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26602
26603         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26604         handling TypedReference and ArgIterator.
26605         * loader.c, loader.h: added function to get signature at call site.
26606
26607 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26608
26609         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26610         data readonly. Buglets and warning fixes. Some MethodSpec support.
26611
26612 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26613
26614         * class.h, class.c, object.c: remove relative numbering support.
26615
26616 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26617
26618         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26619         free the string, until we get a chance to fix Gtk#
26620
26621 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26622
26623         * marshal.c: revert last patch.
26624
26625 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26626
26627         * icall.c: updates for new mono_class_vtable() not calling
26628         the type constructor anymore.
26629
26630 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26631
26632         * object.h, object.c: separate vtable creation from type
26633         initialization. Make running the .cctor thread safe.
26634
26635 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26636
26637         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26638
26639 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26640
26641         * loader.c (mono_get_method): consider calling convention
26642
26643 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26644
26645         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26646         to return the invisible global type for a module.
26647
26648         * reflection.c (mono_image_build_metadata): Emit global fields too.
26649
26650 2003-05-20  Peter Williams  <peterw@ximian.com>
26651
26652         * loader.c (mono_lookup_internal_call): Add a few newlines.
26653
26654 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26655
26656         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26657         literal strings.
26658
26659         * appdomain.c (set_domain_search_path): Recalculate search path when
26660         AppDomainSetup.PrivateBinPath changes.
26661
26662         * object.c (mono_class_compute_gc_descriptor): It turns out some
26663         parts of the class libs (like System.Thread) holds pointers to
26664         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26665         to treat native int a pointer type here.
26666         
26667 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26668
26669         * appdomain.h, domain.c: add hashtable for jump target resolution.
26670
26671 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26672
26673         * reflection.h reflection.c icall.c: Added new icalls 
26674         GetManifestResourceInfoInternal, GetModulesInternal and support
26675         infrastructure.
26676
26677 2003-05-16  Dick Porter  <dick@ximian.com>
26678
26679         * icall.c:
26680         * file-io.h:
26681         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26682
26683 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26684
26685         * object.c: mono_store_remote_field: little fix to previous patch.
26686
26687 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26688
26689         * class.c: add constructors to array classes.
26690         * icall.c: special case array construction for InternalInvoke (),
26691
26692 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26693
26694         * class.h class.c reflection.c object.c: Added support for field
26695         defaults in dynamically generated classes.
26696
26697 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26698
26699         * reflection.c: properly encode charset for ddlimport.
26700
26701 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26702
26703         * threads.c: allow compiling without GC.
26704
26705 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26706
26707         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26708         handling of thread static data.
26709
26710 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26711
26712         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26713
26714 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26715
26716         * class.c (mono_array_class_get): always set the serializable flags
26717         (mono_array_class_get): always set the SEALED attribute for array types
26718
26719 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26720
26721         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26722         attributes (fix for bug 42021).
26723
26724 2003-05-12  Dick Porter  <dick@ximian.com>
26725
26726         * gc.c: Don't run finalizers when the finalizer thread is
26727         finishing up, because the default domain has already been
26728         destroyed.
26729
26730 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26731
26732         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26733         value is null, we should throw an exception.   This is slightly
26734         different than the other conventions used for the constructor.
26735
26736 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26737
26738         * socket-io.c: fixed windows build.
26739
26740 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26741
26742         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26743
26744 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26745
26746         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26747         compilers.
26748
26749 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26750
26751         * class.c (mono_class_layout_fields): Add experimental GC aware
26752         auto layout facility. Requires class library changes to work correctly.
26753
26754         (mono_class_setup_vtable): Avoid overriding explicit interface
26755         method implementations. Fixes iface3.exe test.
26756
26757         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26758         object reference.
26759         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26760         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26761
26762         * metadata.h: Add new type classification macro which determines
26763         whenever the type holds an object reference.
26764
26765 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26766
26767         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26768
26769 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26770
26771         * gc.c (finalizer_thread): Work around a GC bug.
26772
26773 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26774
26775         * marshal.c (emit_struct_conv): allow unions
26776
26777         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26778
26779 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26780
26781         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26782
26783 2003-05-06  Martin Baulig  <martin@ximian.com>
26784
26785         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26786
26787 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26788
26789         * socket-io.c:
26790         (Select_internal): allow NULLs, don't create arrays if not needed.
26791         Coupled with Socket.cs changes.
26792
26793         * threadpool.c:
26794         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26795         register a finalizer for it that will close the semaphore handle. This
26796         fixes the leak and make Lupus' test run with > 4080 loops.
26797
26798 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26799
26800         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26801         Jerome Laban (bug #42287)
26802
26803 2003-05-02  Martin Baulig  <martin@ximian.com>
26804
26805         * debug-mono-symfile.h
26806         (MonoSymbolFile): Moved declaration into mono-debug.h.
26807         (MonoDebugMethodJitInfo): Likewise.
26808         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26809         argument.
26810         (_mono_debug_address_from_il_offset): Take a
26811         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26812
26813         * mono-debug.h
26814         (MonoDebugDomainData): New struct.
26815         (mono_debug_get_domain_data): New function.
26816         (mono_debug_add_method): Take an additional `MonoDomain *'
26817         argument.
26818         (mono_debug_source_location_from_address): Likewise.
26819         (mono_debug_il_offset_from_address): Likewise.
26820         (mono_debug_address_from_il_offset): Likewise.
26821
26822 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26823
26824         * reflection.c: one more check for null type in custom attrs.
26825
26826 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26827
26828         * reflection.c: avoid warning (comparison is always false due to limited
26829         range of data type).
26830
26831 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26832
26833         * icall.c: throw an exception in Type.GetField if the argument 'name'
26834         is NULL.
26835
26836 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26837
26838         * reflection.c: fixed handling of enums in named arguments to custom
26839         attributes (bug #42123).
26840
26841 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26842
26843         * reflection.c: use the right array element type and handle
26844         a null for a Type argument, too.
26845
26846 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26847
26848         * reflection.c: handle arrays as arguments to custom attributes.
26849
26850 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26851
26852         * reflection.c: handle a string value in a custom attr
26853         ctor that takes an object.
26854
26855 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26856
26857         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26858         (fix bug #42063)
26859
26860 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26861
26862         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26863
26864 2003-04-27  Martin Baulig  <martin@ximian.com>
26865
26866         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26867         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26868         MONO_DEBUGGER_EVENT_BREAKPOINT.
26869         (mono_breakpoint_trampoline_code): Removed.
26870         (mono_debugger_event_handler): The last argument is now a
26871         `guint32'.
26872         (mono_debugger_insert_breakpoint_full): Removed the
26873         `use_trampoline' argument.
26874         (mono_debugger_method_has_breakpoint): Likewise.
26875         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26876         mono_debugger_breakpoint_callback(); take the method and
26877         breakpoint number as arguments.
26878
26879 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26880
26881         * metadata.c: fix off by one when loading parameters attributes.
26882
26883 2003-04-24  Martin Baulig  <martin@ximian.com>
26884
26885         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26886
26887 2003-04-24  Martin Baulig  <martin@ximian.com>
26888
26889         * mono-debug-debugger.c: Moved all code which interacts with the
26890         Mono Debugger here.
26891
26892         * debug-mono-symfile.c: This code now just deals with the symbol
26893         file itself, the debugger code is now in mono-debug-debugger.c.
26894
26895 2003-04-23  Martin Baulig  <martin@ximian.com>
26896
26897         * mono-debug.c (mono_debug_source_location_from_il_offset):
26898         New method; like mono_debug_source_location_from_address(), but
26899         takes an IL offset instead of a machine address.
26900
26901 2003-04-23  Martin Baulig  <martin@ximian.com>
26902
26903         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26904         `line' field; this is now computed by the debugger.
26905
26906 2003-04-23  Martin Baulig  <martin@ximian.com>
26907
26908         * mono-debug.[ch]: New files.  This is the new debugging interface.
26909
26910         * mono-debug-debugger.[ch]: New files.  Moved all code which
26911         interacts with the Mono Debugger here.
26912
26913 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26914
26915         * domain.c (mono_init): initialize mono_defaults.monitor_class
26916
26917 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26918
26919         * reflection.c (method_encode_code): Add a spicy exception to help
26920         future compiler authors.
26921
26922 2003-04-21  Martin Baulig  <martin@ximian.com>
26923
26924         * icall.c
26925         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26926         Make this work with relative pathnames; g_filename_to_uri() needs
26927         an absolute filename.
26928
26929 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26930
26931         * icall.c: Track name changes in Object and ValueType.
26932
26933 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26934
26935         * metadata.c (mono_type_stack_size): size should be a multiple of
26936         sizeof (gpointer)
26937
26938 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26939
26940         * gc.c:
26941         (internal_domain_finalize): moved into mono_domain_finalize. No need
26942         to create another thread because the finalizers will be run in the
26943         finalizer thread.
26944         
26945         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26946         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26947         to be run (MS does this too).
26948
26949 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26950
26951         * object.c (mono_class_compute_gc_descriptor): Update comment.
26952
26953         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26954
26955         * image.h: Add synchronized wrapper cache.
26956
26957         * image.c (do_mono_image_open): Initialize cache.
26958
26959         * reflection.c (create_dynamic_mono_image): Initialize cache.
26960
26961 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26962
26963         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26964         ves_icall_System_Buffer_ByteLengthInternal.
26965
26966 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26967
26968         * reflection.c: setup klass->nested_in earlier. Allow
26969         a dash in the assembly name.
26970
26971 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26972
26973         * metadata.c (mono_type_to_unmanaged): dont access
26974         type->data.klass for MONO_TYPE_OBJECT
26975         (mono_type_to_unmanaged): consider System.Delegate class
26976
26977 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26978
26979         * class.c: just setup supertypes in the proper place instead of
26980         initializing the full element class for arrays.
26981
26982 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26983
26984         * class.c: ensure the element class of arrays is initialized.
26985         Setup the supertype info for array classes, too.
26986
26987 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26988
26989         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26990
26991 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26992
26993         * Makefile.am: re-added -m option when running cygpath. This way,
26994         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26995         separator.
26996         * mono-config.c: same codepath for locating mono config file for WIN32
26997         and the rest.
26998         * assembly.c: if mono_assembly_setrootdir is called, don't override
26999         the value set.
27000
27001 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27002
27003         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
27004         MONO_ASSEMBLIES variable.
27005
27006 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
27007
27008         * icall.c: added Assembly::GetNamespaces() icall.
27009
27010 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27011
27012         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
27013
27014 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
27015
27016         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
27017         * object.c: fixed bug in the construction of vtable for proxies
27018
27019 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
27020
27021         * object.c (mono_array_new): Mark mono_array_new as an icall.
27022
27023 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27024
27025         * class.c: fixed test for public method when overriding interfaces.
27026         Closes bug #40970.
27027
27028 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
27029
27030         * appdomain.h, domain.c: added mono_domain_foreach() to
27031         be able to access the currently loaded appdomains.
27032         * object.c: make string interning work across sppdomains.
27033         Mark some functions for use as icalls.
27034
27035 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
27036
27037         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
27038
27039         * reflection.h reflection.c: Allocate long living data using 
27040         GC_MALLOC_ATOMIC so the collector does not need to scan it.
27041
27042         * reflection.c: Double the allocation size in streams instead of
27043         increasing it, to prevent unneccesary copying on large assemblies.
27044         
27045         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
27046         creation if the assembly does not have the Run flag set.
27047
27048 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
27049
27050         * class.h: avoid the C++ keywords in header files (Jerome Laban
27051         spotted and fixed this).
27052
27053 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27054
27055         * object.c:
27056         (mono_unhandled_exception): fill in the arguments for the
27057         UnhandledException event. Only trigger that event for the default
27058         domain (as MS does).
27059
27060 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
27061
27062         * object.c: Improve typed allocation stuff based on suggestions from
27063         Paolo. Also turn it on if the GC library supports it.
27064
27065 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
27066
27067         * object.c object.h class.h: Added experimental typed allocation
27068         facility using the interfaces in gc_gcj.h.
27069
27070         * os/gc_wrapper.h: Added new include files.
27071         
27072 2003-04-03  Martin Baulig  <martin@ximian.com>
27073
27074         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
27075         which is not yet enabled by default.
27076
27077         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
27078         functions.
27079         (mono_gc_lock, mono_gc_unlock): New static functions.
27080
27081         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
27082         functions; stop/start the world for the garbage collector.  This
27083         is using the windows API; we need to complete the SuspendThread()/
27084         ResumeThread() implementation in the io-layer to make this work on Unix.
27085         (mono_gc_push_all_stacks): New public function; tells the garbage
27086         collector about the stack pointers from all managed threads.
27087
27088 2003-04-03  Martin Baulig  <martin@ximian.com>
27089
27090         * object.h (MonoThread): Added `gpointer stack_ptr'.
27091
27092         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
27093
27094 2003-04-03  Martin Baulig  <martin@ximian.com>
27095
27096         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
27097
27098 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
27099
27100         * reflection.c (typebuilder_setup_fields): Initialize field.first and
27101         field.last.
27102
27103 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
27104
27105         * loader.c (mono_lookup_internal_call): Report the corlib that is
27106         out of sync.
27107
27108 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
27109
27110         * icall.c (ves_icall_type_GetTypeCode): fixed check for
27111         System.DBNull (it's class not valuetype).
27112
27113 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
27114
27115         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
27116         if the array method was already assigned a token (fixes bug#40646).
27117
27118 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
27119
27120         * reflection.c (mono_reflection_get_type): Attempt type resolve even
27121         if no assembly is given.
27122
27123 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
27124
27125         * metadata.h: Added the new tables.
27126
27127         * row-indexes.h: Added definitions for new tables.
27128
27129         * metadata.c: Add schemas for new tables, and add support for
27130         computing the sizes of them.
27131
27132         * class.c: Update for handling the new type cases.
27133
27134 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
27135
27136         * metadata.h (MONO_TYPE_IS_VOID): new macro
27137
27138 2003-03-31  Martin Baulig  <martin@ximian.com>
27139
27140         * threads.h (MonoThreadCallbacks): Added `thread_created'.
27141
27142         * threads.c (mono_thread_new_init): Call `thread_created' in the
27143         mono_thread_callbacks.
27144
27145 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
27146
27147         * loader.h: added marshalbyrefobject_class to mono_defaults
27148         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
27149         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
27150           generation of output parameters.
27151           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
27152         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
27153           contextbound and the target object belongs to the context of the caller.
27154         * object.h: added context and unwrapped_server variables in MonoRealProxy.
27155         * object.c: Implemented support for interfaces and abstract classes
27156           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
27157           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
27158
27159 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
27160
27161         * class.h class.c (mono_class_is_subclass_of): New function.
27162         
27163         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
27164         routines for most common case (calls from ArrayList::ToArray).
27165
27166         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
27167         routine so programs which call Environment::Exit() can be profiled.
27168
27169         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
27170         Added MONO_ARCH_SAVE_REGS.
27171
27172         * icall.c (ves_icall_type_is_subtype_of): Use new function.
27173
27174 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
27175
27176         * blob.h: Add a couple of new MonoType types definitions.
27177
27178         * tabledefs.h: Add a couple of new call convs.
27179
27180 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
27181
27182         * reflection.h (MonoReflectionDynamicAssembly): track changes in
27183         the layout of the class.
27184
27185         * reflection.c (alloc_table): double the size on overflow to avoid
27186         unnecessary copying.
27187
27188         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
27189         avoid filling out metadata tables and blobs. Also set mb->ilgen to
27190         null so it can be garbage collected.
27191         
27192 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
27193
27194         * reflection.c (mono_reflection_get_type): Return the resolved type
27195         only if it is in the assembly we searched.
27196
27197         * reflection.c (ensure_runtime_vtable): Initialize method slots.
27198
27199         * class.c (mono_class_setup_vtable): Set the slot of the overriding
27200         method.
27201
27202 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27203
27204         * appdomain.c:
27205         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
27206         the right one is 'file:///blah', but MS allows it.
27207         * assembly.c:
27208         (mono_assembly_open): allow 'file://blah'
27209
27210         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
27211
27212 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
27213
27214         * socket-io.c: fixes bug #40310.
27215
27216 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
27217
27218         * reflection.c (mono_reflection_parse_type): handle deeply nested
27219         types correctly.
27220
27221         * reflection.c (mono_image_create_token): Use unique token values
27222         since they will be put into a hash table.
27223
27224         * class.c (mono_class_setup_vtable): If a method occurs in more than
27225         one place in the vtable, and it gets overriden, then change the
27226         other occurances too.
27227
27228         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
27229         object as return type.
27230
27231 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27232
27233         * icall.c: Deleted "ToString" implementation for double and float
27234         because they are full implemented in managed code.
27235
27236 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27237
27238         * reflection.c, reflection.h: implemented and exported functions
27239         to retrieve info about custom attributes.
27240
27241 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27242
27243         * appdomain.c: moved Uri handling to assembly.c
27244         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
27245         work when using a file Uri in *nix and windows.
27246
27247         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
27248         GetReferencedAssemblies.
27249
27250 2003-03-18  Dick Porter  <dick@ximian.com>
27251
27252         * icall.c: Rename a couple of internal calls
27253
27254         * threads.c: Set the thread state to Stopped when a thread exits.
27255         Fixes bug 39377.
27256
27257 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
27258
27259         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
27260         New icall.
27261
27262         * object.c (mono_class_vtable): fix warning.
27263
27264 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
27265
27266         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
27267
27268         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
27269         memory.
27270         (method_encode_clauses): Create exception info structures in the right
27271         order.
27272         (mono_reflection_setup_internal_class): Initialize supertypes field.
27273
27274         * class.c object.c: Handle interfaces which implement other interfaces 
27275         correctly.
27276
27277         * class.h class.c: Move the supertypes array initialization code into 
27278         a separate function so it can be used for dynamic types too. Also call
27279         it earlier, in mono_class_init(), since it can be used before the
27280         type is initialized.
27281
27282 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27283
27284         * Makefile.am:
27285         * assembly.c:
27286         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
27287
27288         * appdomain.c:
27289         * appdomain.h:
27290         * marshal.c:
27291         * object.c: remove warnings.
27292
27293 2003-03-13  Martin Baulig  <martin@ximian.com>
27294
27295         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
27296         (MonoDebugLexicalBlockEntry): New types.
27297
27298         * debug-mono-symfile.c
27299         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
27300
27301 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27302
27303         * process.c: ret can be any non-zero value accroding to MS doc.
27304
27305 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
27306
27307         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
27308         fixing a warning for a miss-used prototype, would have cause
27309         random memory corruption.
27310
27311 2003-03-07  Martin Baulig  <martin@ximian.com>
27312
27313         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
27314         getting really annoying ....
27315
27316 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
27317
27318         * reflection.c (fixup_method): added support for array methods.
27319
27320 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
27321
27322         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
27323         (pointed out by Michael Adams).
27324
27325 2003-03-04  Dick Porter  <dick@ximian.com>
27326
27327         * icall.c: Temporarily reverted the Double and Single ToString()
27328         change, because it broke nunit.
27329
27330 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
27331
27332         * object.h, threads.h: make include files compatible with C++
27333         (patch by Jerome Laban <jlaban@wanadoo.fr>).
27334
27335 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27336
27337         * icall.c: Erased ToString helper functions for Double and Single.
27338         Now, that implementations ar all in managed code (Double and Single
27339         Formatters).
27340
27341 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
27342
27343         * appdomain.c: Added method for initializing the default context of
27344         a domain. Added internal call for getting the default context.
27345         * appdomain.h: Added context variable in MonoDomain struct.
27346         * domain.c: mono_domain_set also sets the default context of the domain
27347         * icall.c: Mapped internal method InternalGetDefaultContext.
27348         * object.c: mono_object_get_virtual_method returns always a remoting
27349         wrapper if the object is a transparent proxy.
27350         mono_runtime_invoke_array: when creating an object by calling the
27351         constructor, if the created object is a proxy, then the constructor should
27352         be called using the a remoting wrapper.
27353
27354 2003-03-03  Dick Porter  <dick@ximian.com>
27355
27356         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
27357         variable so it compiles on solaris.  Problem spotted by
27358         Christopher Taylor <ct@cs.clemson.edu>
27359
27360 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27361
27362         * appdomain.c:
27363         (get_info_from_assembly_name): don't leak value.
27364
27365         * icall.c:
27366         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
27367         result.
27368
27369 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
27370
27371         * assembly.c: export mono_image_load_references ().
27372         * class.c: handle function pointers. mono_class_from_name() now
27373         supports nested type names directly.
27374
27375 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
27376
27377         * reflection.h reflection.c: Encode already created dynamic methods 
27378         and fields correctly as a DEF instead of a REF.
27379
27380         * reflection.c: Get rid of the force_ref argument to 
27381         mono_image_typedef_or_ref since it was wrong in the first place.
27382
27383         * string-icalls.c: add error checking to string constructors according
27384         to the MSDN docs.
27385
27386         * reflection.c: Emit types in the order their TypeBuilders were 
27387         created. Previously, a new table index was assigned to each type before
27388         the tables were emitted. This was wrong because the signature blob
27389         might already refer to a type by its original table index.
27390
27391 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
27392
27393         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
27394         change.
27395         
27396 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27397
27398         * Makefile.am: make assemblies dir have \ instead of / on windows.
27399
27400 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
27401
27402         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
27403         iterate over the NESTEDCLASS table using a linear search since the
27404         table is not guaranteed to be sorted by the secondary key.
27405
27406         * class.c (mono_class_create_from_typedef): fixed up call to
27407         mono_metadata_nesting_typedef.
27408         
27409 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
27410
27411         * marshal.c (mono_string_to_byvalstr): clear the memory as
27412         suggested by Jerome Laban <jlaban@wanadoo.fr>
27413
27414 2003-02-26  Dick Porter  <dick@ximian.com>
27415
27416         * process.c: Cope with padding in .rsrc blocks
27417
27418 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27419
27420         * metadata.h: reverted the filter_len change, it breaks reflection
27421         
27422 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27423
27424         * metadata.h: added a new field to store the filter_len
27425         
27426
27427 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
27428
27429         * reflection.c: handle custom attributes for types and members
27430         created with Reflection.Emit (bug#38422).
27431
27432 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
27433
27434         * reflection.c: define RTSpecialName automatically for constructors for
27435         compatibility with MS.NET.
27436
27437         * reflection.c (mono_reflection_create_runtime_class): initialize
27438         nested_in field of dynamically created classes.
27439
27440 2003-02-22  Martin Baulig  <martin@ximian.com>
27441
27442         * debug-mono-symfile.h: Incremented version number.
27443
27444 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27445
27446         * object.h icall.c process.c: fix warnings.
27447
27448 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27449
27450         * appdomain.h appdomain.c:
27451         (mono_domain_try_type_resolve): split the 
27452         name_or_tb argument into a name and a tb argument.
27453         (mono_domain_has_type_resolve): new function to check whenever the
27454         application has registered a TypeResolve event handler.
27455         
27456         * icall.c reflection.h reflection.c: move the type resolve logic into
27457         mono_reflection_get_type () so it will be invoked when 
27458         Assembly::GetType () is called.
27459
27460         * reflection.c:
27461         (mono_reflection_get_type): renamed to get_type_internal.
27462         (mono_reflection_get_type): fixed type name generation so it works 
27463         for nested types too.
27464         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27465         costly type name generation if there is no resolve event handler.
27466
27467 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27468
27469         * class.c, image.c: load exported types from file references.
27470
27471 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27472
27473         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27474           used to cache the managed methods used to create proxies and make 
27475           remote invocation of methods.
27476         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27477           to be remotely created.
27478         * object.c: Modified the method mono_class_vtable(). It now initializes 
27479           the remote flag of the vtable. Modified mono_object_new_specific(), 
27480           so now it checks the remote flag.
27481         * icall.c: Added a couple of internal methods, one for enabling instance 
27482           creation interception for a type, and one for creating objects bypassing
27483           the remote check.
27484
27485 2003-02-18  Martin Baulig  <martin@ximian.com>
27486
27487         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27488         New interncall to get a method's metadata token.
27489
27490         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27491         New interncall for the debugger.
27492
27493 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27494
27495         * class.c (mono_class_setup_vtable): allocate supertype array
27496
27497 2003-02-18  Martin Baulig  <martin@ximian.com>
27498
27499         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27500
27501 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27502
27503         * reflection.c:
27504         (assembly_name_to_aname): jump over unknown properties (i've found
27505         something like: 'type, assembly, version=xxx, custom=null, public...',
27506         so now will ignore custom=null and still get the rest of the values).
27507
27508 2003-02-17  Dick Porter  <dick@ximian.com>
27509
27510         * threads.c: Have Thread.Start() wait for a semaphore to signal
27511         that the thread has set up all its local data.  This fixes bug
27512         34323, where Abort() raced the new thread's TLS data.
27513
27514         Also removes the handle_store() call from start_wrapper, because
27515         threads are now always created suspended and there is no longer a
27516         race between the parent and child threads to store the info.
27517
27518 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27519
27520         * image.c: explain the #- heap issue in a message, hopefully
27521         avoiding FAQs on mono-list.
27522
27523 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27524
27525         * icall.c:
27526         (GetEntryAssembly): if the domain has not invoked
27527         AppDomain.ExecuteAssembly yet, return the assembly of the default
27528         AppDomain.
27529
27530 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27531
27532         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27533
27534 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27535
27536         * metadata.c, reflection.c: simple speedup to type hash
27537         and equals code.
27538
27539 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27540
27541         * image.c, image.h, class.c, assembly.c: move module loading
27542         to MonoImage. When loading metadata, consider alignemnet from
27543         the start of metadata, not from the metadata address in memory.
27544
27545 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27546
27547         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27548         AssemblyBuilder objects. Factored out custom attribute creation into
27549         a separate function.
27550         (create_custom_attr): new function to create custom attributes.
27551
27552 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27553
27554         * Makefile.am: Got tired of typing the full pathname to pedump.
27555         Until there is another option, am installing this.
27556
27557 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27558
27559         * class.c (class_compute_field_layout): always set field->parent 
27560         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27561
27562 2003-02-11  Dick Porter  <dick@ximian.com>
27563
27564         * threads-types.h:
27565         * monitor.c: Rewrote Monitor, making lock much faster and
27566         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27567         creates them as needed.
27568
27569         * exception.c: Added SynchronizationLockException
27570
27571         * threads.c: Deleted old Monitor implementation.  The new one is
27572         in a new file.
27573
27574 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27575
27576         * class.c: handled TypedReference type code. Set the correct size for
27577         class data. Setup interface_offsets for interface classes, too.
27578
27579 2003-02-09  Martin Baulig  <martin@ximian.com>
27580
27581         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27582
27583 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27584
27585         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27586         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27587         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27588         * verify.c: check for code that runs after the end of the method.
27589
27590 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27591
27592         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27593         "System.Math::Round2".
27594         * sysmath.h: Added Floor, Round and Round2 definitions.
27595         * sysmath.c: Modified certain functions that were not 100% compliant
27596         with MS.NET (math precision) and added the implementation of Floor,
27597         Round and Round2.
27598
27599 2003-02-07  Martin Baulig  <martin@ximian.com>
27600
27601         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27602
27603 2003-02-07  Martin Baulig  <martin@ximian.com>
27604
27605         * debug-mono-symfile.c: Reflected latest symwriter changes.
27606         (mono_debug_create_mono_symbol_file): Removed.
27607         (mono_debug_open_mono_symbol_file): Take an argument which
27608         specifies whether to create a dynamic symbol file.
27609
27610 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27611
27612         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27613
27614 2003-02-05  Martin Baulig  <martin@ximian.com>
27615
27616         * reflection.c (mono_image_build_metadata): Make this public,
27617         protect it against being called multiple times, don't create
27618         resources and don't build the compressed metadata here.
27619         (mono_image_create_pefile): Do this here.
27620
27621         * icall.c
27622         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27623
27624 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27625
27626         * socket-io.c: fixed bug #36322.
27627
27628 2003-02-06  Piers Haken <piersh@friskit.com>
27629
27630         * appdomain.[ch]:
27631         * class.h:
27632         * debug-mono-symfile.c:
27633         * icall.c:
27634         * loader.c:
27635         * mono-config.c:
27636         * monosn.c:
27637         * reflection.c:
27638         * socket-io.c: warning cleanups
27639
27640 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27641
27642         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27643         function. works like remoting invoke, but does a check for the Proxy first.
27644
27645 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27646
27647         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27648
27649 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27650
27651         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27652         array of pointers.
27653         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27654         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27655
27656         * object.c (mono_store_remote_field_new): used by the new jit
27657         instead of mono_store_remote_field
27658         (mono_load_remote_field_new): used by the new jit
27659         instead of mono_load_remote_field
27660
27661 2003-02-05  Patrik Torstensson
27662
27663         * appdomain.c: changed unload to take the domain id instead
27664         of domain
27665         
27666         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27667
27668
27669 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27670
27671         * appdomain.c: don't look for assemblies in ApplicationBase if
27672         PrivateBinPathProbe is set.
27673
27674 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27675
27676         * object.c: make the first argument in main_args contain the absolute
27677         path to the assembly. Fixes bug #37511.
27678
27679 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27680
27681         * icall.c: get correct UTC offset for countries not using daylight
27682         time saving. Fixes bug #30030.
27683
27684 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27685
27686         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27687         and 1 are the family).
27688
27689 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27690
27691         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27692
27693         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27694
27695 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27696
27697         * reflection.c: added support for SignatureHelper tokens, which is
27698         needed by the Calli opcode.
27699
27700         * reflection.h: track changes to SignatureHelper class.
27701
27702         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27703
27704 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27705
27706         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27707
27708 2003-02-03  Patrik Torstensson
27709         * appdomain.[c|h], domain.c : 
27710          - Added support for getting a domain via domain id
27711          - Support for setting and getting domain from System.AppDomain 
27712            (used in cross appdomain channel)
27713          - Added support for get/set for a MonoAppContext on a thread 
27714            (Context class in System.Runtime.Remoting.Contexts),
27715          - Removed hack in Get/SetData and ExecuteAssembly.
27716         
27717         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27718         the managed world to get control when a proxy is created.
27719
27720         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27721         
27722 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27723
27724         * icall.c
27725         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27726         Populate the codebase field as well.
27727
27728 2003-02-02  Martin Baulig  <martin@ximian.com>
27729
27730         * debug-mono-symfile.c
27731         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27732         (mono_debug_symfile_add_method): Allow interncalls.
27733
27734 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27735
27736         * icall.c: throw parse exception if strtod fails or the string is empty.
27737
27738 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27739
27740         * marshal.c: handle object type separately from defined
27741         class types.
27742
27743 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27744
27745         * marshal.c: handle NATIVE_LPSTR for strings when it's
27746         explicitly specified.
27747
27748 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27749
27750         * reflection.c, reflection.h, icall.c: setup the reflection
27751         handle cache for ModuleBuilders and AssemblyBuilders.
27752
27753 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27754
27755         * reflection.c (reflection_methodbuilder_to_mono_method): set
27756         pinvoke flag
27757
27758 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27759
27760         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27761
27762 2003-01-29  Dick Porter  <dick@ximian.com>
27763
27764         * threads.c: No need for the fake_thread kludge now that Thread
27765         doesn't run a class constructor
27766         
27767 2003-01-29  Dick Porter  <dick@ximian.com>
27768
27769         * threads.c: Use g_direct_hash instead of the rather bogus
27770         g_int_hash
27771
27772 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27773
27774         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27775         (fix pinvoke12.exe)
27776         (mono_marshal_get_struct_to_ptr): generate valid IL code
27777         (mono_marshal_get_ptr_to_struct): generate valid IL code
27778         (*): correctly set sig->pinvoke, we need to memdup the signature
27779         to do that
27780
27781 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27782
27783         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27784         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27785
27786 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27787
27788         * profiler.c: provide more callers information.
27789
27790 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27791
27792         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27793
27794         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27795
27796         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27797
27798 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27799
27800         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27801         exception instead of going into an infinite loop on dates which it 
27802         can't yet handle.
27803
27804         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27805         out-of-range exception if needed.
27806
27807         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27808         an implementation for an interface method and to override an inherited
27809         method at the same time. 
27810         Imagine a scenario when a virtual method is used to override a
27811         virtual abstract method in a parent class, and this same method 
27812         provides an implementation for an method inherited from an interface. 
27813         In this case, the interface resolution code will set im->slot, which 
27814         means that the virtual method override pass will skip this method 
27815         which means a pointer to the abstract method inherited from the parent
27816         will remain in the vtable of this non-abstract class.
27817
27818         * class.c: (mono_class_setup_vtable): continue search for a real 
27819         method if only an abstract method is found.     
27820
27821 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27822
27823         * reflection.c: add size to encoding for ByValStr and ByValArray
27824         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27825
27826 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27827
27828         * class.c (mono_class_setup_vtable): pass the override info as an
27829         argument.
27830
27831         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27832         correctly.
27833         
27834         * reflection.c (ensure_runtime_vtable); add support for method 
27835         overrides.
27836         
27837 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27838
27839         * reflection.c (resolution_scope_from_image): Hack to work to work with
27840         dynamic assemblies.
27841
27842         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27843         added a 'force_ref' argument to force this function to allways return 
27844         a TypeRef. This is needed by mono_image_get_memberref_token ().
27845         
27846 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27847
27848         * reflection.c (mono_image_get_type_info): interfaces really don't have
27849         a parent.
27850
27851         * reflection.c (mono_image_basic_init): fill out missing fields of
27852         image structure.
27853
27854         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27855         dynamic assemblies. This is required so dynamic assemblies show up in
27856         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27857         Type::GetType() etc. This is consistent with MS behaviour.
27858
27859         * image.c image.h reflection.c: add newly created classes to the name 
27860         cache so mono_class_get () will find them.      
27861
27862 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27863
27864         First part of changes to get IKVM.NET running under mono.
27865         
27866         * appdomain.h, appdomain.c: added new function 
27867         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27868         This function will call AppDomain::DoTypeResolve to do the actual work.
27869
27870         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27871         moved existing code dealing with dynamic tokens to a new function 
27872         called mono_reflection_lookup_dynamic_token (). This function will 
27873         raise TypeResolve events when appropriate. Since reflection.c is not 
27874         part of libmetadata, a new hook function called 
27875         mono_lookup_dynamic_token() is added to class.c which will call this.
27876
27877         * assembly.h assembly.c: make the invoke_load_hook function public,
27878         so it can be called for dynamic assemblies.
27879
27880         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27881
27882         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27883         type isn't found.
27884
27885         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27886         MonoGHashTable, since it contains pointers to objects which the GC 
27887         needs to track.
27888
27889         * assembly.c (search_loaded): remove unused variable.
27890         
27891 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27892
27893         * object.c: fixed issue exposed by gcc-generated IL programs
27894         that use RVA data for pointers.
27895
27896 2003-01-25  Martin Baulig  <martin@ximian.com>
27897
27898         * threads.c (start_wrapper): Moved the initialization of
27899         `start_func' above the mono_new_thread_init() call to which we
27900         pass it as argument.
27901
27902 2003-01-24  Martin Baulig  <martin@ximian.com>
27903
27904         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27905         the MonoThread pointer.
27906
27907 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27908
27909         * icall.c: Rename `PowImpl' to Pow.
27910
27911 2003-01-23  Dick Porter  <dick@ximian.com>
27912
27913         * threads.c (start_wrapper): Create a Thread object if needed, so
27914         the Main() thread can do the class initialisation in a subthread
27915         that has been set up to allow managed code execution.
27916
27917         Pass the thread ID instead of the MonoThread pointer to the thread
27918         start and attach callbacks.  This change is required, because the
27919         jit thread start callback must be called _before_ the Thread
27920         object can be created.
27921         
27922         (mono_thread_init): Removed much object creation code that is no
27923         longer needed.  No managed code is called from here now.
27924
27925         * object.c (mono_runtime_exec_managed_code): Create a subthread
27926         for Main, and call back to the runtime to use it.
27927         Set the exit code when Main exits.
27928
27929         * gc.c: Make sure domain finalisation happens in a subthread.
27930         Re-enable threaded GC, fixing bug 31333 (again).
27931
27932         * environment.c: System.Environment internall calls (so far just
27933         ExitCode is here, the others are still in icall.c)
27934
27935         * appdomain.c (mono_runtime_cleanup): All threads running managed
27936         code should have finished before mono_runtime_cleanup() is
27937         reached, so no need to clean up threads.
27938
27939 2003-01-22  Martin Baulig  <martin@ximian.com>
27940
27941         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27942         `gpointer func' arguments.      
27943         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27944         but added `MonoThread *thread' argument.
27945         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27946
27947         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27948         and pass it to the mono_thread_start_cb callback.
27949         (mono_install_thread_callbacks): New public function to install a
27950         set of callbacks which are set by the debugger.
27951         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27952
27953 2003-01-22  Martin Baulig  <martin@ximian.com>
27954
27955         * Makefile.am: Install debug-mono-symfile.h.
27956
27957 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27958
27959         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27960
27961 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27962
27963         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27964         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27965         (mono_array_class_get): correctly set access levels of arrays
27966
27967 2003-01-20      Patrik Torstensson
27968         * image.h (MonoAssemblyName): changed major, minor, build, revision
27969         from signed to unsigned.
27970
27971 2003-01-20  sean kasun <skasun@azstarnet.com>
27972
27973         * reflection.c (load_cattr_value): Now this handles
27974         MONO_TYPE_SZARRAY.  Fixes bug #35629
27975
27976 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27977
27978         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27979         integer value
27980
27981 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27982
27983         * decimal.c: fixed bug #26056.
27984
27985 2003-01-17  Martin Baulig  <martin@ximian.com>
27986
27987         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27988
27989 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27990
27991         * exception.[ch]:
27992         (mono_get_exception_type_initialization): new function.
27993
27994         * object.c: throw a TypeInitializationException when an exception is
27995         thrown invoking the class constructor.
27996
27997 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27998
27999         * reflection.c: fixed attribute reading.
28000
28001 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28002
28003         * icall.c:
28004         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
28005         provided, look for the type in the calling assembly and then in
28006         mscorlib; if the assembly name is provided, only try that one.
28007
28008 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
28009
28010         * object.c: register the vtable before there is a chance it's
28011         queried again recursively.
28012
28013 2003-01-13  Duncan Mak  <duncan@ximian.com>
28014
28015         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
28016         gc-internal.h. 
28017         
28018 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
28019
28020         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
28021
28022 2003-01-11  Martin Baulig  <martin@ximian.com>
28023
28024         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
28025         this to 20 for the release.
28026
28027 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
28028
28029         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
28030
28031         * loader.c (mono_method_get_marshal_info): bug fix
28032
28033         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
28034         structures with explicit layout
28035
28036 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
28037
28038         * profiler.c: made the output more readable (and sorted). 
28039         Added caller information for the allocation profiler.
28040
28041 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
28042
28043         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
28044
28045 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28046
28047         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
28048         to get value types.
28049         
28050 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
28051
28052         * object.c, profiler.h, profiler.c, profiler-private.h:
28053         Added object allocation profiler.
28054
28055 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
28056
28057         * reflection.h, reflection.c: handle global methods.
28058         Compress blob entries.
28059
28060 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
28061
28062         * marshal.c: fix compilation.
28063
28064 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
28065
28066         * loader.c (mono_method_get_marshal_info): impl.
28067
28068         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
28069
28070 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28071
28072         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
28073         for reference types.
28074
28075 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
28076
28077         * loader.c: fixed off by one error in loaded parameter names.
28078
28079 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
28080
28081         * marshal.c (mono_marshal_get_icall_wrapper): like
28082         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
28083         instead of a MonoMethod.
28084
28085 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28086
28087         * decimal.c: fixed bug #36537.
28088
28089 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
28090
28091         * marshal.c: throw a missing method exception if a
28092         P/Invoke method is not found.
28093
28094 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
28095
28096         * icall.c: allow a null this for constructors.
28097
28098 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
28099
28100         * icall.c: raise the proper exceptions if the arguments to the
28101         internal Invoke are incorrect.
28102
28103 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
28104
28105         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
28106
28107 2003-01-03  Martin Baulig  <martin@ximian.com>
28108
28109         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
28110
28111 2002-12-31  Martin Baulig  <martin@ximian.com>
28112
28113         * debug-mono-symfile.c: Completely rewrote the type section.
28114         Instead of using individual malloc()ed fields, we use one big
28115         continuous memory area and offsets into this area.
28116         See the comments in the source code for details.
28117
28118 2002-12-30  Martin Baulig  <martin@ximian.com>
28119
28120         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
28121
28122 2002-12-30  Martin Baulig  <martin@ximian.com>
28123
28124         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
28125         line number table in this data blob instead of using an external
28126         pointer.
28127
28128 2002-12-28  Martin Baulig  <martin@ximian.com>
28129
28130         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
28131
28132 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
28133
28134         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
28135         as a boxed return type.
28136
28137 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
28138
28139         * appdomain.c
28140         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
28141         g_build_filename to properly get separators on the filename created.
28142
28143         * object.h: Small change, introduce MonoMarshalByRefObject to
28144         track the layout of that structure in the C# universe as we make
28145         changes there.
28146
28147 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
28148
28149         * object.c: removed assert to allow static fields on interfaces.
28150         * loader.c: a TypeSpec may be used for any type, not just arrays.
28151
28152 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
28153
28154         * class.c, class.h: added mono_class_array_element_size ().
28155         Ignore static methods in interfaces.
28156
28157 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28158
28159         * threads.c: fixed the build under cygwin.
28160
28161 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
28162
28163         * reflection.c: handle nullref constants. Allocate keys for
28164         reflection handles with the GC.
28165
28166 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
28167
28168         * threads.c, threads.h: added mono_thread_get_abort_signal()
28169         to get a suitable signal for thread abort.
28170
28171 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
28172
28173         * metadata.c: fix handling of ExportedType table.
28174
28175 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28176
28177         * icall.c: added WriteWindowsDebugString internal call.
28178
28179 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28180
28181         * reflection.h: added fields to match C# implementation.
28182
28183 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28184
28185         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
28186
28187 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
28188
28189         * gc.h, gc-internal.h: Rename header for GC internal calls to
28190         gc-internal.h from gc.h as to not clash with Boehm GC having its
28191         header installed as <gc.h> in outside include paths.
28192         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
28193         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
28194
28195 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28196
28197         * icall.c: assign minor, build and revision in FillName.
28198
28199 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
28200
28201         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
28202         Added support for running code generated by Reflection.Emit.
28203
28204 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28205
28206         * appdomain.c: check for NULL argument in LoadFrom.
28207
28208 2002-12-10  Dick Porter  <dick@ximian.com>
28209
28210         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
28211
28212 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28213
28214         * appdomain.c: fix buglet when building exe file name.  Handle full
28215         assembly name (needed after latest changes to AssemblyName).
28216         * image.c:
28217         (mono_image_close): free some hashtables.
28218
28219 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
28220
28221         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
28222         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
28223         on some systems (redhat 7.3) 
28224
28225 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
28226
28227         * threads.c: delete the critical section of a sync block,
28228         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
28229
28230 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
28231
28232         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
28233
28234 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28235
28236         * appdomain.[ch]: handle the assembly preload event to try loading the
28237         assemblies using the paths we have in the current domain.
28238
28239         * assembly.[ch]: created an assembly preload hook that is called to try
28240         loading the assembly by other means that the ones provided here.
28241
28242         * domain.c: initialize the domain search path.
28243
28244         From now on, assemblies (TODO: except corlib and System) are loaded
28245         according to these rules when using mono_assembly_load ():
28246
28247                 1. It tries to load the assembly from the ApplicationBase
28248                 of the current domain appending .dll and .exe (TODO: have to
28249                 try loading from name/name.dll and name/name.exe).
28250
28251                 2. It tries the search path specified in PrivateBinPath for the
28252                 current domain (if any).
28253
28254                 3. Previous behavior.
28255
28256 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
28257
28258         * icall.c: implemented GetInterfaceMap() related icall.
28259         * domain.c, loader.h: load MethodInfo in mono_defaults.
28260
28261 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
28262
28263         * gc.c: disable the finalizer thread for now, untill all the issues
28264         with it are resolved.
28265
28266 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28267
28268         * string-icalls.c: handle embedded nulls in string ctor when the
28269         length is specified.
28270
28271 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28272
28273         * class.c: look for explicit interface implementation in parent
28274         classes, too.
28275
28276 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
28277
28278         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
28279
28280 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
28281
28282         * gc.c: protect handles with a critical section.
28283
28284 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28285
28286         * icall.c:
28287         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
28288         parameters. If no assembly specified, try getting the type from all
28289         the assemblies in the current domain, else, load the assembly and get
28290         the type from it.
28291
28292 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28293
28294         * marshal.c: applied patch from Aleksey Demakov that fixes
28295         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
28296
28297 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28298
28299         * icall.c: fixed get_location.
28300
28301 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
28302
28303         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
28304         declarations to make it work with older gcc. 
28305
28306         * loader.c (mono_get_method): set signature->pinvoke for native calls
28307
28308 2002-11-20  Dick Porter  <dick@ximian.com>
28309
28310         * threads.c (mono_thread_init): Set the main thread's handle
28311
28312 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28313
28314         * gc.c: allow compilation without GC support. Changed to match the
28315         mono coding style.
28316
28317 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28318
28319         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
28320
28321 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
28322
28323         * reflection.c: set a public key token on the core assemblies.
28324
28325 2002-11-18  Dick Porter  <dick@ximian.com>
28326
28327         * threads.c: Split out some thread initialisation so that other
28328         files can set the start callback function.
28329
28330         * gc.c: Run finalisers in a separate thread, to avoid stack
28331         overflow.  Fixes bug 31333.
28332
28333         * appdomain.c: Set up GC finalisation thread.
28334
28335         * reflection.c: 
28336         * object.c: 
28337         * domain.c: Use gc.h macros for GC_malloc
28338         
28339 2002-11-15  Dick Porter  <dick@ximian.com>
28340
28341         * threadpool.c: 
28342         * threads.c:
28343         * appdomain.c: Removed mono_runtime_init_with_attach(),
28344         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
28345         merging the extra parameter with the existing function.  Removed
28346         unneeded code in mono_thread_attach().
28347
28348 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
28349
28350         * image.c (mono_image_loaded_by_guid): a method to get loaded
28351         images by guid. 
28352         (load_metadata_ptrs): we store the guid as string.
28353
28354 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
28355
28356         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
28357
28358         * metadata.c (mono_guid_to_string): imported method form Zoltan
28359         Varga (slightly modified)
28360
28361         * assembly.c (mono_assembly_open): load precompiled code
28362
28363         * loader.h (MonoMethod): we store the method token for use in the
28364         aot compiler. 
28365
28366 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28367
28368         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
28369         the hook function called when an assembly is loaded.
28370         
28371         * domain.c: Modified file.
28372         (mono_domain_assembly_load): removed hash table insertion of assemblies.
28373
28374         Fixes bug #33196.
28375
28376 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
28377
28378         * reflection.c: Map PEFileKind to the value expected by the WinNT
28379         image loader. 
28380
28381 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28382
28383         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
28384         Read until the buffer is filled completely.
28385
28386 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28387
28388         * icall.c: implemented MonoType.InternalGetEvent ().
28389
28390 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28391
28392         * appdomain.c: implemented InitAppDomainSetup. Delayed
28393         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
28394         the entry_assembly.
28395
28396         * assembly.c: base_dir is now an absolute path ending with
28397         G_DIR_SEPARATOR.
28398
28399         * icall.c: modified get_location according to the above changes.
28400
28401         * object.c: init AppDomain.SetupInformation for the default domain after
28402         we have the entry assembly.
28403
28404         * domain.c: when unloading a domain, setup = NULL.
28405
28406 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
28407
28408         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
28409
28410 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
28411
28412         * object.h, object.c: introduced mono_object_get_virtual_method ()
28413         to lookup the method invoked on an object when a callvirt is done on
28414         a method.
28415         * icall.c: make MethodInfo::Invoke() always do a virtual call.
28416
28417 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28418
28419         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
28420         current domain when loaded an assembly and failed to load it.
28421
28422         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
28423
28424 2002-10-31  Dick Porter  <dick@ximian.com>
28425
28426         * icall.c: 
28427         * file-io.h: 
28428         * file-io.c: Return the error status in a parameter, as the
28429         GetLastError() value has long since been blown away if we try and
28430         look it up in a subsequent internal call invocation.  Delete the
28431         GetLastError() internal call, because it's useless.
28432
28433 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28434
28435         * class.[ch]: added cast_class to fix bug 29517
28436
28437 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28438
28439         * marshal.c: create valid IL code in the filter clause:
28440         the new JIT is less forgiving:-)
28441
28442 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28443
28444         * icall.c: removed get_property internal call.
28445
28446 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28447
28448         * appdomain.h domain.c: Added an ID to appdomains.
28449         
28450         * threads.c threads.h icall.c: Implement icall
28451         Thread:GetDomainID(), and remove unused icall 
28452         CurrentThreadDomain_internal.
28453
28454 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28455
28456         * icall.c: Don't recurse through the base types in GetConstructor.
28457         Fixes bug #32063. 
28458
28459 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28460
28461         * mempool.h, mempool.c: added mono_mempool_empty() and
28462         mono_mempool_stats().
28463
28464 2002-10-23  Dick Porter  <dick@ximian.com>
28465
28466         * file-io.c: 
28467         * file-io.h: 
28468         * icall.c: Added MonoIO.GetFileType internal call
28469
28470 2002-10-17  Dick Porter  <dick@ximian.com>
28471
28472         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28473         delegate semaphore before waiting for all threads to finish,
28474         because new threads can also call async delegates.  Fixes bug
28475         32004.
28476
28477         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28478         of 3 seconds, in case another async job is queued.  (This part is
28479         needed because the bug fix reintroduced the 3s exit lag.)  This
28480         makes the mono_runtime_shutdown flag superfluous.
28481
28482 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28483
28484         * reflection.c: include ehader size in method section headers.
28485         Really check for suplicated modules entries.
28486
28487 2002-10-17  Martin Baulig  <martin@gnome.org>
28488
28489         * debug-mono-symfile.c: Added back support for locals.
28490
28491 2002-10-14  Martin Baulig  <martin@gnome.org>
28492
28493         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28494         MONO_TYPE_VOID.
28495
28496 2002-10-14  Martin Baulig  <martin@gnome.org>
28497
28498         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28499         mono_class_get() instead of looking in the class cache. 
28500
28501 2002-10-13  Martin Baulig  <martin@gnome.org>
28502
28503         * debug-mono-symfile.c: Set version number to 28, include the
28504         signature in method names.
28505
28506 2002-10-13  Martin Baulig  <martin@gnome.org>
28507
28508         * debug-mono-symfile.h: Set version number to 27.
28509
28510 2002-10-11  Martin Baulig  <martin@gnome.org>
28511
28512         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28513
28514 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28515
28516         * metadata.c, metadata.h: added helper function to allocate signatures.
28517
28518 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28519
28520         * icall.c: added internal call to get the location of machine.config.
28521
28522 2002-10-08  Martin Baulig  <martin@gnome.org>
28523
28524         * debug-mono-symfile.c: Ignore classes with a pending init for the
28525         moment.
28526
28527 2002-10-03  Dick Porter  <dick@ximian.com>
28528
28529         * threads.c: Freebsd pthread_t is a pointer
28530
28531 2002-10-03  Dick Porter  <dick@ximian.com>
28532
28533         * socket-io.c: Implemented GetHostName_internal
28534
28535 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28536
28537         * mono-config.c:
28538         (mono_config_parse_file): don't leak the text.
28539
28540 2002-10-02  Martin Baulig  <martin@gnome.org>
28541
28542         * debug-mono-symfile.c: Added support for methods.
28543
28544 2002-10-01  Martin Baulig  <martin@gnome.org>
28545
28546         * debug-mono-symfile.c: Don't emit methods and line numbers for
28547         the dynamic symbol file, just write the type table.  We can easily
28548         have an external helper program which creates a symbol file for an
28549         IL file.        
28550
28551 2002-10-01  Dick Porter  <dick@ximian.com>
28552
28553         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28554         Only add the handle to the cleanup array when we're about to
28555         launch the thread.  Bug 31425 deadlocked when the test was run on
28556         mono under w32.
28557
28558 2002-10-01  Martin Baulig  <martin@gnome.org>
28559
28560         * debug-mono-symfile.c: Added support for properties.
28561
28562 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28563
28564         * reflection.c: unaligned store fix from Mark Crichton
28565         <crichton@gimp.org>.
28566
28567 2002-09-27  Martin Baulig  <martin@gnome.org>
28568
28569         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28570         New interncall.
28571
28572 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28573
28574         * assembly.h, assembly.c: use a sane API to hook into the assembly
28575         loading process instead of a useless special-purpouse hack
28576         (ngen needs a hook, too, for example).
28577
28578 2002-09-27  Dick Porter  <dick@ximian.com>
28579
28580         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28581         io-layer can set up some process handle info.  Not needed on w32,
28582         but doesn't hurt either.
28583
28584         * process.c: Pass the program name in the second parameter to
28585         CreateProcess, so the path is searched.  Include the working
28586         directory. Implemented process name, process enumeration, and some
28587         process detail internal calls.
28588         
28589         * icall.c: Added internal calls for process lookup, and some
28590         process details
28591
28592 2002-09-26  Martin Baulig  <martin@gnome.org>
28593
28594         * assembly.c (mono_install_open_assembly_hook): New global
28595         function to install a function to be invoked each time a new
28596         assembly is loaded.
28597         (mono_assembly_open): Run this callback function if set.
28598
28599         * debug-mono-symfile.c: Put back line numbers for the dynamic
28600         symbol file and also record the .il file as source file.  This
28601         allows us to install the temporary symbol file as `file.dbg' just
28602         like a compiler-generated one.
28603
28604 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28605
28606         * Corrected typo in gc.c (BOHEM vs BOEHM).
28607
28608 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28609
28610         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28611         GetProperties. Also avoid calling g_slist_length in GetProperties and
28612         GetMethods.
28613
28614 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28615
28616         * reflection.c: avoid unaligned stores (bug spotted by
28617         Mark Crichton  <crichton@gimp.org>).
28618
28619 2002-09-25  Martin Baulig  <martin@gnome.org>
28620
28621         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28622         instead of guint64 for addresses and added prologue/epilogue info.
28623
28624 2002-09-25  Martin Baulig  <martin@gnome.org>
28625
28626         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28627         store line number info.  For the dynamic symbol file, we only need
28628         to provide the JIT generated dynamic line number info for the dynamic
28629         symbol file.
28630
28631 2002-09-25  Martin Baulig  <martin@gnome.org>
28632
28633         * debug-mono-symfile.h: Incremented version number.
28634
28635 2002-09-24  Martin Baulig  <martin@gnome.org>
28636
28637         * class.c (mono_debugger_class_init_func): New global function
28638         pointer variable.
28639         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28640         call it.
28641
28642         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28643         function.  This is called via the mono_debugger_class_init_func
28644         hook to add all types to the dynamic type table.
28645         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28646         from its metadata token.
28647
28648         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28649         New interncall for the debugger.
28650
28651 2002-09-24  Nick Drochak <ndrochak@gol.com>
28652
28653         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28654         before using it in case it is null.
28655         
28656 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28657
28658         * metadata.c: allow custom modifiers in local var signatures
28659         (bug spotted by Zoltan Varga).
28660
28661 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28662
28663         * class.c: deal with the <Module> class that may have a NULL vtable.
28664         Eliminate warnings.
28665
28666 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28667
28668         * image.c, image.h: more strong name helpers.
28669         * monosn.c: more work: convert pem keys to cryptoapi format.
28670
28671 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28672
28673         * string-icalls.c: speedup IndexOf.
28674
28675 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28676
28677         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28678
28679 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28680
28681         * icall.c: cleanup: use mono_object_domain ().
28682
28683 2002-09-23  Martin Baulig  <martin@gnome.org>
28684
28685         * debug-mono-symfile.c: Improved type support.
28686
28687 2002-09-22  Martin Baulig  <martin@gnome.org>
28688
28689         * debug-mono-symfile.c: Added support for reference types and strings.
28690
28691 2002-09-22  Martin Baulig  <martin@gnome.org>
28692
28693         * debug-mono-symfile.c: Started to work on the type table.
28694
28695 2002-09-21  Martin Baulig  <martin@gnome.org>
28696
28697         * debug-mono-symfile.c: Largely reworked the symbol table format.
28698         The symbol table is now incrementally updated each time a new
28699         method is added.  We're now also using our own magic and version
28700         so that you don't need to recompile all your classes if the
28701         dynamic table changes.
28702         (mono_debug_update_mono_symbol_file): Removed.
28703         (mono_debug_symfile_add_method): New function to add a method.
28704
28705 2002-09-21  Martin Baulig  <martin@gnome.org>
28706
28707         * icall.c
28708         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28709         New interncall.
28710
28711         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28712         New interncall to get a method from its metadata token.
28713
28714 2002-09-21  Martin Baulig  <martin@gnome.org>
28715
28716         * debug-mono-symfile.c: Create type table.
28717
28718 2002-09-20  Martin Baulig  <martin@gnome.org>
28719
28720         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28721
28722 2002-09-20  Martin Baulig  <martin@gnome.org>
28723
28724         * debug-mono-symfile.c: Provide information about params and locals.
28725
28726 2002-09-20  Martin Baulig  <martin@gnome.org>
28727
28728         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28729         New interncall.
28730
28731         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28732         interncall to get a method from its metadata token.
28733
28734 2002-09-20  Martin Baulig  <martin@gnome.org>
28735
28736         * debug-mono-symfile.c: Added a few checks for method->header
28737         being non-NULL.  This should never happen, but for the moment
28738         let's use a g_warning() rather than a g_assert().
28739
28740 2002-09-19  Mark Crichton  <crichton@gimp.org>
28741
28742         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28743         even if support for it isn't present.  Added an #ifdef to fix this.
28744
28745         * socket-io.c: Added checks back for Solaris support.
28746
28747 2002-09-19  Martin Baulig  <martin@gnome.org>
28748
28749         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28750         changes in the symbol file format.
28751
28752 2002-09-18  Martin Baulig  <martin@gnome.org>
28753
28754         * debug-mono-symfile.c: Set version number to 21.
28755
28756 2002-09-18  Dick Porter  <dick@ximian.com>
28757
28758         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28759         on netbsd.  Fixes bug 30051.
28760
28761 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28762
28763         * reflection.c:
28764         (set_version_from_string): little fix.
28765
28766 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28767
28768         * monosn.c, Makefile.am: added strong name utility.
28769         * reflection.h, reflection.c: implemented delayed signing,
28770         locale, version and hash id assembly attributes.
28771
28772 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28773
28774         * loader.c, metadata.c: load param attributes in signatures.
28775
28776 2002-09-16  Martin Baulig  <martin@gnome.org>
28777
28778         * debug-mono-symfile.c: Added string table with all method names.
28779
28780 2002-09-14  Martin Baulig  <martin@gnome.org>
28781
28782         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28783         fast method lookup.
28784
28785 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28786
28787         * reflection.c: record the public key token of referenced assemblies.
28788
28789 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28790
28791         * image.c, image.h: added functions to get the strong name and the
28792         public key of an assembly.
28793         * pedump.c: use them.
28794
28795 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28796
28797         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28798
28799 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28800
28801         * marshal.c (mono_marshal_get_managed_wrapper): Added
28802         MONO_TYPE_BOOLEAN 
28803
28804 2002-09-11  Martin Baulig  <martin@gnome.org>
28805
28806         * gc.c: Call GC_unregister_disappearing_link() on all links when
28807         finalizing them, this is necessary to aviod a crash in boehm's
28808         finalize handler.
28809
28810 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28811
28812         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28813         nick@chemlab.org.
28814
28815 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28816
28817         * icall.c: implemented MonoType::Module.
28818         * reflection.c, reflection.h: mono_module_get_object () from
28819         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28820
28821 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28822
28823         * icall.c: ignore overridden methods in GetMethods ().
28824         Fix for FieldInfo::SetValue().
28825         * object.c: handle float/double in runtime invoke.
28826
28827 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28828
28829         * object.c: allow a constructor to be called again on an object.
28830
28831 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28832
28833         * class.h, class.c: move field layout code to it's own function and
28834         export it. Get an interface id earlier. Move fields in MonoClass
28835         so they are more cache friendly and align the bitfields.
28836         * loader.c: temporary handle get_param_names() for a runtime method.
28837         * reflection.c, reflection.h: more code to handle runtime creation of
28838         types.
28839
28840 2002-09-09  Martin Baulig  <martin@gnome.org>
28841
28842         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28843         signature with the pinvoke field being set for the actual call.
28844
28845 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28846
28847         * icall.c: removed some unused icalls. Start of map of glib charsets
28848         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28849
28850 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28851
28852         * debug-helpers.c: break infinite loop (found and fixed by
28853         Holger Arnold <harnold@gmx.de>).
28854
28855 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28856
28857         * icall.c: target may be null in create_delegate.
28858
28859 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28860
28861         * marshal.c: handle a boolean return type.
28862
28863 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28864
28865         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28866
28867 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28868
28869         * gc.c: fix weakreferences.
28870
28871 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28872
28873         * icall.c: added icall to get default codepage.
28874
28875 2002-09-03  Dick Porter  <dick@ximian.com>
28876
28877         * threads.h: 
28878         * threads.c: Use MonoThread instead of MonoObject where
28879         apropriate.
28880
28881         Store running thread objects in a hash table, so that we have all
28882         the info to hand when waiting for them to finish
28883         (means we don't need OpenThread() any more, so mingw builds should
28884         be fully functional again.)
28885
28886         * verify.c:
28887         * object.h: Added thread ID to MonoThread
28888
28889 2002-09-03  Martin Baulig  <martin@gnome.org>
28890
28891         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28892
28893 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28894
28895         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28896
28897 2002-09-03  Martin Baulig  <martin@gnome.org>
28898
28899         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28900         argument to store the end address of the disassembled instruction.
28901
28902         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28903         here from debug-symfile.h.
28904         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28905         JIT into this struct.
28906         (MonoSymbolFile): Added `char *image_file' field.
28907         (MonoDebugGetMethodFunc): Removed.
28908         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28909         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28910         (mono_debug_find_method): New method.
28911
28912         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28913         create a full symbol file.
28914         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28915         and static symbol files.
28916         (mono_debug_find_method): The symbol file keeps an internal method hash,
28917         call this to get a MonoDebugMethodInfo from a MonoMethod.
28918
28919         * debug-symfile.[ch]: Removed.
28920
28921 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28922
28923         * image.c (do_mono_image_open): Remove linker version check.
28924
28925 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28926
28927         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28928         wrappers for instance methods.
28929         
28930 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28931
28932         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28933
28934 2002-08-28  Dick Porter  <dick@ximian.com>
28935
28936         * Makefile.am: Export HOST_CC for w32 builds
28937
28938 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28939
28940         * file-io.c process.c: MonoString are null terminated, no
28941         need for mono_string_to_utf16() anymore.
28942
28943 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28944
28945         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28946
28947 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28948
28949         * icall.c, reflection.h: speedup System.MonoType.
28950
28951 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28952
28953         * reflection.c: allow null as the value of a string argument in
28954         custom attributes constructors.
28955
28956 2002-08-27  Martin Baulig  <martin@gnome.org>
28957
28958         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28959         `trampoline_address' field.
28960
28961 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28962
28963         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28964         check (fixes bug #29486) 
28965
28966 2002-08-27  Martin Baulig  <martin@gnome.org>
28967
28968         * debug-mono-symfile.c: Changed the file format in a way that allows us
28969         open it read-only and to use a specially malloced area for all the
28970         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28971         debugging IL code and there is no MCS generated symbol file for it.
28972
28973 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28974
28975         * object.c: added a define for a good string and array
28976         creation speedup (not enabled by default because we need to deal with
28977         the synch stuff).
28978
28979 2002-08-26  Martin Baulig  <martin@gnome.org>
28980
28981         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28982         function to create a dynamic symbol file.  This is used by the
28983         debugger to create a symbol file for IL code on-the-fly.
28984
28985 2002-08-26  Martin Baulig  <martin@gnome.org>
28986
28987         * loader.c (mono_lookup_pinvoke_call): Include the error message
28988         from g_module_error() in the error message.
28989
28990 2002-08-24  Martin Baulig  <martin@gnome.org>
28991
28992         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28993         function to update the symbol file.  The symbol file is mmap()ed
28994         writable, but private.  This allows us to install the symbol file
28995         together with the assembly.
28996
28997 2002-08-24  Martin Baulig  <martin@gnome.org>
28998
28999         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
29000         but they can read the new symbol file format which mcs is now creating.
29001
29002         * debug-symfile.c (mono_debug_find_source_location): Moved to
29003         debug-mono-symfile.c; this is now operating on the new symbol file.
29004
29005 2002-08-23  Martin Baulig  <martin@gnome.org>
29006
29007         * debug-helpers.c (mono_method_desc_from_method): New function to get
29008         a MonoMethodDesc from a MonoMethod.
29009
29010 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29011
29012         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
29013         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
29014
29015 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29016
29017         * string-icalls.[ch]: make helper methods static.
29018
29019 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29020
29021         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
29022         types to it and to SetValueInternal.
29023
29024         * object.c: Moved handle_enum label to its proper place. This was the
29025         f... bug! ;-)
29026
29027         This time i compiled mcs and gtk-sharp and they both work.
29028
29029 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29030
29031         * icall.c: reverted partially my previous patch until 
29032         object.c:set_value handles enums correcly.
29033
29034 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29035
29036         * icall.c:
29037         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
29038         (ves_icall_System_Environment_get_MachineName): removed warning when
29039         compiling under cygwin.
29040
29041 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29042
29043         * object.c: fixed field_get_value() for reference types.
29044
29045 2002-08-22  Dick Porter  <dick@ximian.com>
29046
29047         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
29048         Don't free a buffer while it's still needed.  Patch from Jonathan
29049         Liger <Jonathan.liger@wanadoo.fr>
29050
29051 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
29052
29053         * icall.c (ves_icall_System_Environment_get_Platform): Add new
29054         internal call.
29055
29056 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
29057
29058         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
29059         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
29060
29061         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
29062         we call unmanaged code which throws exceptions.
29063
29064 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29065
29066         * appdomain.h: added per-domain entry_assembly.
29067         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
29068         arguments.
29069         * icall.c: Assembly::GetEntryAssembly icall.
29070         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
29071         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
29072
29073 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29074
29075         * appdomain.h, gc.c: added mono_domain_finalize ().
29076
29077 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29078
29079         * object.c:
29080         (mono_print_unhandled_exception): changed g_warning by g_printerr
29081         because g_log has a 1024 characters limit (yeah, i got a big stack
29082         trace). Don't print exception name, that should be in ToString 
29083         returned string.
29084
29085 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29086
29087         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
29088         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
29089
29090 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29091
29092         * object.c:
29093         (mono_print_unhandled_exception): after previous commit, i realized
29094         that MS calls ToString on the exception. I changed this function to
29095         do that. This way we get stack_trace for free.
29096
29097 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29098
29099         * object.c:
29100         (mono_print_unhandled_exception): invoke Message property instead of
29101         getting 'message' field from Exception. Don't allocate memory for
29102         'trace' and 'message' if not needed.
29103
29104 2002-08-18  Dick Porter  <dick@ximian.com>
29105
29106         * unicode.c: Fix asserts to match Encoder.cs checks
29107
29108 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29109
29110         * marshal.c: fix unaligned store issue and a few wrong
29111         opcode argument types.
29112
29113 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29114
29115         * icall.c: added GetUninitializedObjectInternal internal call.
29116
29117 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
29118
29119         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
29120         to the right domain.
29121
29122 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
29123
29124         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
29125
29126         * class.c (class_compute_field_layout): set blittable to false for Strings
29127
29128         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
29129
29130 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29131
29132         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
29133         first chunk of code to create types at runtime. Code to
29134         handle ReflectedType/DeclaringType. Make reflection handles
29135         domain specific.
29136
29137 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29138
29139         * class.c: set correct name in arrays.
29140
29141 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
29142
29143         * appdomain.c (mono_domain_transfer_object): make it work with
29144         valuetypes. bug fixes.
29145
29146 2002-08-12  Dick Porter  <dick@ximian.com>
29147
29148         * object.h: Rename some parameters to avoid c++ keywords (Patch
29149         from Joseph Wenninger <kde@jowenn.at>)
29150
29151 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
29152
29153         * icall.c: added icall to implement Assembly.GetFile*.
29154
29155 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29156
29157         * reflection.h, reflection.c: code to embed managed resources.
29158
29159 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29160
29161         * class.c: move all the type size stuff into
29162         class_compute_field_layout().
29163
29164 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29165
29166         * class.c: ensure enums have always the correct instance size.
29167         * unicode.c: remove wrong assert.
29168
29169 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29170
29171         * assembly.c: fix mem corruption issue.
29172         * image.h, image.c: added mono_image_get_resource () to access
29173         managed resources.
29174         * icall.c: implemented Assembly.EntryPoint property and some
29175         Managed Resources related internalcalls.
29176
29177
29178 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29179
29180         * image.c, image.h: impemented mono_image_get_entry_point ().
29181         * appdomain.c: use mono_image_get_entry_point.
29182
29183 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29184
29185         * reflection.c: support the object type argument when loading
29186         custom attributes.
29187
29188 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
29189
29190         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
29191         String as return type.
29192
29193 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
29194
29195         * reflection.c: fix encoding of named args for custom attrs to match
29196         the ms implementation. Read them back when instantiating custom
29197         attributes.
29198
29199 2002-08-02  Radek Doulik  <rodo@ximian.com>
29200
29201         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
29202         by Dietmar as quick fix
29203         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
29204         16 as stack size, used on more places as quick fix before Dietmar
29205         will fix it properly
29206
29207 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29208
29209         * object.h, object.c: added accessors for fields and properties.
29210
29211 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29212
29213         * class.c, class.h: made mono_class_get_field_from_name ()
29214         loop on parent types.
29215         Added mono_class_get_property_from_name ().
29216
29217 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29218
29219         * class.c, class.h: move the code to setup the type vtable in its own
29220         function so that it can be reused also for types created at runtime.
29221         Eliminate the "class" identifier from the header file.
29222         * reflection.c: setup the vtable for enums so that we can create
29223         objects for use in SetConstant ().
29224
29225 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
29226
29227         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
29228         instead of the delegate itself as this pointer (bug #28383)
29229
29230 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
29231
29232         * marshal.c (mono_marshal_get_managed_wrapper): added return type
29233         conversions.
29234
29235 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29236
29237         * loader.c: don't set the pinvoke bit on icalls.
29238
29239 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
29240
29241         * debug-helpers.c (mono_method_full_name): only print a number to
29242         indicate wrapper type (so that the output is more readable in traces).
29243
29244 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
29245
29246         * class.c (mono_class_init): include method override patch from Paolo
29247
29248 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
29249
29250         * icall.c: fixed GetTypeCode().
29251
29252 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
29253
29254         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
29255         use real delegate invoke function to make it work with multicast
29256         delegates (fix bug# 28291).
29257
29258 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29259
29260         * object.c: load constant strings.
29261
29262 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29263
29264         * reflection.c: no magic numbers.
29265         * tabledefs.h: security action enum.
29266
29267 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29268
29269         * assembly.c: fix possible memory corruption.
29270
29271 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29272
29273         * reflection.h, reflection.c: added support for linking resources.
29274         * verify.c: check we have an updated corlib.
29275
29276 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
29277
29278         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
29279         string arrays.
29280         (mono_marshal_string_array): null terminate unmanaged string arrays.
29281         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
29282
29283 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29284
29285         * icall.c: Type.GetType () can now return also types from the
29286         calling assembly.
29287
29288 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29289
29290         * loader.h, loader.c: stack walking support.
29291         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
29292         GetCallingAssembly.
29293
29294 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
29295
29296         * marshal.c: added optimisations for blittable types 
29297
29298         * class.c (mono_array_class_get): do not set blittable attribute on arrays
29299         (mono_class_setup_mono_type): set blittable attribute for single
29300         and double.
29301
29302         * marshal.c (mono_string_utf8_to_builder): impl.
29303         (mono_string_builder_to_utf8): impl.
29304         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
29305
29306 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
29307
29308         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
29309         (mono_marshal_get_managed_wrapper): impl. byref types
29310
29311 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29312
29313         * icall.c:
29314         (search_method): don't display debug message. 
29315
29316 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29317
29318         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
29319
29320 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29321
29322         * appdomain.c: set the missing filename when throwing exception.
29323
29324 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29325
29326         * metadata.c (mono_type_size): code cleanup
29327         (mono_type_stack_size): removed some test code
29328
29329 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
29330
29331         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
29332         mono_get_exception_file_not_found now.
29333
29334         * exception.c (mono_exception_from_name_two_strings): New version
29335         that will call a constructor with two string arguments. 
29336         (mono_get_exception_file_not_found): New helper routine, used to
29337         report file-not-found errors.
29338
29339 2002-07-20  Dick Porter  <dick@ximian.com>
29340
29341         * process.h:
29342         * process.c: Pass file handles to CreateProcess
29343         
29344         * icall.c:
29345         * file-io.h:
29346         * file-io.c: Implemented CreatePipe
29347
29348 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29349
29350         * metadata.c (mono_get_param_info): set alignment for value types
29351
29352 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29353
29354         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
29355         Constify mono_domain_assembly_open().
29356         * loader.c: handle null namespace in icalls.
29357
29358 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29359
29360         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
29361         (emit_str_to_ptr_conv): marshal object as structs
29362
29363         * metadata.c (mono_type_to_unmanaged): marshal object as structs
29364
29365         * marshal.c (mono_marshal_get_runtime_invoke): support value types
29366
29367 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
29368
29369         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
29370         (mono_marshal_get_native_wrapper): we an now return value types
29371
29372 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29373
29374         * verify.c: more checks implemented.
29375
29376 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
29377
29378         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
29379         (fix bug #27695)
29380         (mono_marshal_get_native_wrapper): allow byref arguments
29381         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
29382         impl. PtrToStringXXX methods
29383         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
29384         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
29385         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
29386         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
29387         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
29388
29389 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29390
29391         * reflection.c: fix buglet in parsing an assembly name.
29392
29393 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29394
29395         * marshal.c (emit_ptr_to_str_conv): first impl.
29396
29397 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29398
29399         * object.c, class.h: cache the vtable in the class as suggested by
29400         vargaz@freemail.hu (Zoltan Varga).
29401
29402 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29403
29404         * class.h, loader.c: added mono_field_from_token().
29405         * verify.c: first cut of type checking code.
29406
29407 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29408
29409         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
29410
29411 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
29412
29413         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
29414         (fix bug #27782)
29415         (mono_marshal_get_remoting_invoke): impl.
29416         (mono_delegate_begin_invoke): impl.
29417         (mono_mb_emit_save_args): impl.
29418         (mono_delegate_end_invoke): impl.
29419         (mono_marshal_get_delegate_begin_invoke):
29420         (mono_marshal_get_delegate_end_invoke):
29421         (mono_marshal_get_delegate_invoke): generate a special name for
29422         those methods (including the signature) and associate them whith
29423         the delegate class. 
29424
29425 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
29426
29427         * reflection.[ch]: 
29428         (mono_reflection_type_from_name): now it has a MonoImage parameter
29429         which is used as the default image to search the type in. If the image
29430         is NULL or getting the type from it fails, it defaults to corlib.
29431
29432         * icall.c: changed 1 call to mono_reflection_type_from_name to match
29433         new parameter.
29434
29435 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29436
29437         * reflection.c: update the parameter table index.
29438
29439 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29440
29441         * domain.c: don't include the mark byte in the string hash.
29442
29443 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29444
29445         * icall.cs: icall for Type.GetTypeCode ().
29446         * verify: a couple of fixes and disabled local initialization checks.
29447
29448 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29449
29450         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29451
29452         * debug-helpers.c (mono_method_full_name): print the type of the
29453         runtime wrapper
29454
29455         * metadata.c (mono_signature_hash): a hash function for signatures
29456         (mono_signature_hash): better hash algorithm
29457
29458         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29459
29460         * debug-helpers.c (mono_method_full_name): this can now generate
29461         method names with signatures
29462
29463         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29464         method dont have this pointers.
29465
29466 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29467
29468         * reflection.c: fixup typebuilder tokens.
29469         * image.c: fix buglet.
29470         * marshal.h: remove whitespace.
29471         * metadata.h, metadata.c: reinstate code that was removed.
29472         * verify.c: handle catch directives and fix another couple of bugs.
29473
29474 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29475
29476         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29477         (mono_marshal_get_native_wrapper): make it comp. with the old code
29478         (mono_marshal_get_native_wrapper): support boolean
29479         (mono_marshal_get_managed_wrapper): support more types
29480
29481 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29482
29483         * class.c (class_compute_field_layout): compute class->blittable attribute.
29484
29485 2002-07-09  Dick Porter  <dick@ximian.com>
29486
29487         * threads.c: Make the thread cleaning up cope with threads that
29488         call ExitThread()
29489
29490 2002-07-08  Radek Doulik  <rodo@ximian.com>
29491
29492         * reflection.c (method_encode_code): use non-translated values to
29493         compute finally_start, this fixes exception handling on ppc, yay!
29494
29495         * decimal.h (struct signscale): fix endianess
29496
29497 2002-07-07  Radek Doulik  <rodo@ximian.com>
29498
29499         * reflection.c: swap box_val and not val
29500
29501 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29502
29503         * reflection.c, reflection.h: handle full assembly info in type name.
29504         Handle Type arguments when loading custom attributes.
29505         * icall.c: updated to use new mono_reflection_type_from_name () method.
29506
29507 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29508
29509         * loader.c:
29510         (method_from_memberref): also print assembly name when method not found.
29511
29512 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29513
29514         * icall.c:
29515         (ves_icall_TypeGetProperties): fixed bug #27473. 
29516
29517 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29518
29519         * reflection.c: display image name and token when cannot find the
29520         .ctor for an attribute.
29521
29522 2002-07-05  Martin Baulig  <martin@gnome.org>
29523
29524         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29525
29526 2002-07-04  Dick Porter  <dick@ximian.com>
29527
29528         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29529         compile on mingw.  This will cause mingw builds to not wait for
29530         subthreads to terminate after the main thread does.  I've lodged a
29531         bug with the mingw developers for them to wrap OpenThread().
29532
29533 2002-07-03  Dick Porter  <dick@ximian.com>
29534
29535         * threads.c: Store thread IDs instead of handles, because
29536         GetCurrentThread() returns a pseudohandle and therefore stores
29537         useless values.  mono_thread_cleanup() continues checking the
29538         array of threads until it is empty, to cope with subthreads
29539         spawning new threads after the main thread has finished.
29540
29541         * profiler.h:
29542         * profiler.c:
29543         * profiler-private.h: Pass the thread ID to thread profiler
29544         functions, instead of a handle
29545
29546 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29547
29548         * verify.c: fixes to make it more usable.
29549         * pedump.c: added --verify code to verify IL code in an assembly.
29550
29551 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29552
29553         * reflection.c: turn errors into warnings to allow compiling corlib.
29554
29555 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29556
29557         * reflection.c: add special cases to compile corlib.
29558
29559 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29560
29561         * reflection.c: handle properties with only a set method.
29562
29563 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29564
29565         * opcodes.h: add enum with opcodes in opval order.
29566
29567 2002-07-01  Dick Porter  <dick@ximian.com>
29568         
29569         * object.h:
29570         * object.c (mono_runtime_run_main): Removed unneeded argument
29571
29572 2002-06-28  Martin Baulig  <martin@gnome.org>
29573
29574         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29575
29576 2002-06-27  Dick Porter  <dick@ximian.com>
29577
29578         * threads.c: Store the handle in both the parent thread and in the
29579         subthread, to minimise the time between starting a new thread and
29580         storing its ID.
29581
29582 2002-06-26  Dick Porter  <dick@ximian.com>
29583
29584         * appdomain.c (mono_runtime_cleanup): Close the socket library
29585         after all the threads have finished, not before
29586
29587 2002-06-26  Martin Baulig  <martin@gnome.org>
29588
29589         * debug-symfile.c (mono_debug_find_source_location): Added
29590         `guint32 *line_number' argument.  If it's not NULL, store the line number
29591         there and return the file name without the line number.
29592
29593 2002-06-25  Dick Porter  <dick@ximian.com>
29594
29595         * icall.c:
29596         * process.h:
29597         * process.c: Process forking and other support functions
29598
29599 2002-06-25  Dick Porter  <dick@ximian.com>
29600
29601         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29602         things dont happen when the image is closed.
29603         (mono_image_lookup_resource): Walk the resource section looking
29604         for a particular entry
29605
29606         * cil-coff.h: PE resource section decoding
29607
29608 2002-06-25  Dick Porter  <dick@ximian.com>
29609         
29610         * assembly.h:
29611         * assembly.c: 
29612         (mono_assembly_foreach): Accessor functions to walk the list of
29613         loaded assemblies
29614         (mono_assembly_set_main):
29615         (mono_assembly_get_main): Process methods need to know which
29616         assembly is the "main" one
29617
29618         * object.c (mono_runtime_run_main): Record the main assembly
29619
29620         * debug-helpers.c: Fix typo
29621
29622 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29623
29624         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29625         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29626
29627 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29628
29629         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29630
29631 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29632
29633         * image.c (do_mono_image_open): Initialize reference count,
29634         otherwise we leak the MonoImage.
29635
29636 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29637
29638         * reflection.c: small tweak to handle self-hosting.
29639
29640 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29641
29642         * reflection.c: fix type name parse code.
29643
29644 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29645
29646         * reflection.c: break out of the loop.
29647         * image.c: special case corlib.
29648
29649 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29650
29651         * reflection.c: add all the custom attrs at the end to ensure the
29652         ctors have been properly initialized when the attributes are defined
29653         in the current assembly.
29654
29655 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29656
29657         * reflection.c: handle correctly multiple-nested types.
29658
29659 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29660
29661         * row-indexes.h: fix typos.
29662         * reflection.c: adjust for typos and fix method_def_or_ref
29663         encoding in MethodImpl table.
29664
29665 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29666
29667         * reflection.c: fix entry point patching (thanks Serge!).
29668
29669 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29670
29671         * verify.c: add check for System.Exception
29672
29673 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29674
29675         * image.c, class.c: minifix for code just c&p'ed.
29676         * reflection.c: warning fix.
29677         * object.h, loader.h, domain.c: load also StringBuilder.
29678
29679 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29680
29681         * marshal.h, marshal.c: some support code to handle complex marshaling.
29682
29683 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29684
29685         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29686         Better signatures with vtable error dump.
29687
29688 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29689
29690         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29691
29692 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29693
29694         * icall.c (ves_icall_Type_GetField): impl.
29695
29696 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29697
29698         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29699         to retrieve a marshal description blob for a field or param.
29700
29701 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29702
29703         * reflection.h, reflection.c: change order of nested type emission
29704         to avoid table corruption. The NestedTypes table is sorted.
29705         * icall.c: change order of GetConstructor results to workaround mcs bug.
29706
29707 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29708
29709         * reflection.h, reflection.c: handle field and param marshal
29710         information.
29711
29712 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29713
29714         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29715
29716 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29717
29718         * reflection.c: fix call convention.
29719
29720 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29721
29722         * reflection.h, reflection.c: mono_image_get_memberref_token()
29723         takes a type instead of a class, now. Added
29724         mono_image_get_array_token() to create tokens for the special
29725         multi-dim array methods.
29726
29727 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29728
29729         * assembly.c: handle modules (no assembly table). Split
29730         loading references in its own function.
29731         * class.c: handle moduleref resolution scope.
29732         * image.c, image.h: cache module name in image.
29733
29734 2002-06-07  Martin Baulig  <martin@gnome.org>
29735
29736         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29737         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29738
29739 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29740
29741         * icall.c: more signature fixes that used uint instead of int.
29742
29743 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29744
29745         * reflection.c: fixed signature of field refs.
29746
29747 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29748
29749         * class.c, reflection.c: handle typerefs of nested types
29750         (both on read and when writing files).
29751
29752 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29753
29754         * icall.c: fix method signatures that tried to workaround the previous
29755         typo, d'oh!
29756
29757 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29758
29759         * debug-helpers.c: fix typo.
29760
29761 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29762
29763         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29764         rewrote the PE/COFF writing code (our programs are understood by the
29765         ms runtime, now).
29766
29767 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29768
29769         * gc.c, gc.h, icall.c: weakreference support.
29770
29771 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29772
29773         * Makefile.am, mono-config.c: use $(sysconfdir).
29774
29775 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29776
29777         * icall.c: changed default precision of Double.ToString() to 15.
29778         Fixed memory leak. Unified with Single.ToString.
29779
29780 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29781
29782         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29783
29784 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29785
29786         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29787         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29788         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29789         and myself.
29790
29791 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29792
29793         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29794
29795 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29796
29797         * reflection.c, socket-io.c: more compilation fixes.
29798
29799 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29800
29801         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29802         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29803         unicode.c: warning and compiler compatibility fixes.
29804
29805 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29806
29807         * class.h, metadata.c: fixed warnings/compilation errors.
29808
29809 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29810
29811         * Makefile.am, mono-config.c, mono-config.h: configuration file
29812         support routines.
29813         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29814         config file. Export methods to insert and lookup mappings.
29815
29816 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29817
29818         * reflection.c: handle types and boxed objects in custom attr
29819         constructors.
29820
29821 2002-05-30  Martin Baulig  <martin@gnome.org>
29822
29823         * debug-symfile.c
29824         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29825
29826 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29827
29828         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29829         to lookup the implmap row for a P/Invoke method.
29830         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29831         P/Invoke method from the runtime on an as needed basis.
29832
29833 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29834
29835         * metadata.c (mono_metadata_parse_signature): impl.
29836
29837 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29838
29839         * class.c: handle .pack directive.
29840
29841 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29842
29843         * object.c: initialize static fields with RVA data.
29844
29845 2002-05-25  Martin Baulig  <martin@gnome.org>
29846
29847         * debug-symfile.c
29848         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29849
29850 2002-05-24  Martin Baulig  <martin@gnome.org>
29851
29852         * debug-symfile.c
29853         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29854         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29855         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29856
29857 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29858
29859         * object.c: special case string ctros in invoke.
29860         * gc.c: silly whitespace changes.
29861
29862 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29863
29864         * threadpool.[ch]: impl. a threadpool that can
29865         be used by mint and mono.
29866
29867 2002-05-22  Martin Baulig  <martin@gnome.org>
29868
29869         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29870         The first argument is now a `MonoReflectionModuleBuilder *', the return
29871         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29872         `methods' field to get the method builder.  The `token' argument is the
29873         unfixed token.
29874
29875         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29876         invalid characters instead of g_assert_not_reached()ing.  This seems
29877         to be the behaviour of mscorlib.
29878
29879 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29880
29881         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29882         Hestilow to fix bug #25104
29883
29884 2002-05-21  Martin Baulig  <martin@gnome.org>
29885
29886         * debug-symfile.c (mono_debug_find_source_location): New function.
29887         Looks up an IL offset in the line number table and returns the source
29888         location as a string.
29889
29890 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29891
29892         * icall.c:
29893         (mono_double_ToStringImpl): changed %f by %g until we have something
29894         better.
29895
29896 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29897
29898         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29899         parameters first in C#.
29900
29901 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29902
29903         * icall.c, reflection.h: added icall to get info about an event.
29904
29905 2002-05-20  Radek Doulik  <rodo@ximian.com>
29906
29907         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29908         endian
29909         (mono_value_box): don't use memcpy for small sizes on
29910         architectures with unaligned access
29911
29912 2002-05-20  Martin Baulig  <martin@gnome.org>
29913
29914         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29915         if `tb->parent == NULL'.
29916         (mono_reflection_create_internal_class): New function.  This is
29917         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29918         for enum types.
29919
29920         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29921         New interncall.
29922
29923 2002-05-19  Martin Baulig  <martin@gnome.org>
29924
29925         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29926         argument to get the length, don't default to the array length.
29927
29928 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29929
29930         * assembly.c (mono_assembly_setrootdir): New function used to
29931         override the MONO_ASSEMBLIES directory.
29932
29933 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29934
29935         * icall.c: ValueType_GetHashCode() initialize local var.
29936
29937 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29938
29939         * reflection.c: sort custom attributes table.
29940
29941 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29942
29943         * reflection.c: support named args in custom attributes (write support).
29944
29945 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29946
29947         * reflection.c: fix finally position calculation.
29948
29949 2002-05-15  Radek Doulik  <rodo@ximian.com>
29950
29951         * reflection.c: fixed endianess at many places
29952
29953         * icall.c (ves_icall_InitializeArray): comment out debug msg
29954
29955 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29956
29957         * object.c (mono_unhandled_exception): new function to handle
29958         unhandled exceptions.
29959         (mono_unhandled_exception): call the UnhandledException event.
29960         (mono_runtime_delegate_invoke): impl.
29961
29962 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29963
29964         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29965         returns the RVA, not the direct pointer to the data. Handle the case
29966         when the class size is fixed.
29967
29968 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29969
29970         * reflection.c: fix some endianess issues.
29971
29972 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29973
29974         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29975
29976         * threads.c (mono_thread_init): added a callback which is invoked
29977         at thread start.
29978
29979 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29980         
29981         * icall.c: make GetHashCode return non-negative values.
29982
29983 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29984
29985         * object.c, icall.c, gc.c: revert to address-based hashcode.
29986
29987 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29988
29989         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29990
29991 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29992
29993         * icall.c, class.c: special case <Module>.
29994
29995 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29996
29997         * icall.c: fix bug in GetNow().
29998
29999 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
30000
30001         * object.c (mono_runtime_class_init): make sure that we call all
30002         static class constructors.
30003
30004 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30005
30006         * reflection.c: sort methodsemantics table.
30007
30008 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
30009
30010         * reflection.h, reflection.c: honour init locals setting.
30011
30012 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
30013
30014         * icall.c: copied Double ToStringImpl for Single ToStringImpl
30015
30016 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30017
30018         * reflection.c: support ContructorBuilders in attribute blob creation.
30019
30020 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30021
30022         * reflection.c: some changes to build a binary that can be run
30023         directly in windows.
30024
30025 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30026
30027         * loader.c: print a big message when an icall can't be found.
30028
30029 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30030
30031         * string-icalls.c: fix bug 24248.
30032
30033 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
30034
30035         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
30036         icall.c, reflection.h: separate assembly loading by pathname and by
30037         assembly name. Use the MONO_PATH env var to search for assemblies.
30038
30039 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30040
30041         * assembly.c, image.h: add some support for assemblies
30042         with multiple modules.
30043         * class.c, class.h: export mono_class_from_typeref().
30044         * loader.c: remove duplicated code and use mono_class_from_typeref(),
30045         instead.
30046
30047 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30048
30049         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
30050         documentation says (the ECMA one is correct).
30051
30052 2002-05-02  Dick Porter  <dick@ximian.com>
30053
30054         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
30055         Don't name the synchronisation mutex.
30056
30057 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
30058
30059         * rand.c
30060         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
30061         Make the prototypes match.
30062         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
30063         Same.
30064
30065         * icall.c
30066         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
30067         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
30068         all systems have tm.tm_zone, so use strftime() with %Z to print
30069         the timezone abreviation into a temp string.
30070
30071         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
30072         rather than mono_array_addr() on a MonoString on Big Endian
30073         machines.
30074
30075 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
30076
30077         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
30078         fix bug 24041
30079
30080 2002-04-30  Dick Porter  <dick@ximian.com>
30081
30082         * socket-io.c: Cope with SOCKET being an integer rather than a
30083         pointer now.
30084
30085         * threads.c: Added Thread_free_internal, to deal with thread
30086         handle cleanup.  Moved calls to handle_store() and handle_remove()
30087         to start_wrapper(), so each can only be called once.  Allocate
30088         synchronisation blocks with GC_malloc(), and use GC finalisation
30089         to close the handles.
30090
30091         * icall.c: added System.Threading.Thread::Thread_free_internal
30092
30093 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30094
30095         * icall.c: support Environment.Exit, CommandLineArgs().
30096
30097 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
30098
30099         * object.c, object.h: added mono_runtime_run_main () and
30100         mono_runtime_get_main_args () for use in System.Environment.
30101
30102 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
30103
30104         * gc.c: fix thinko, enable actual finalization since the jit is now
30105         fixed.
30106
30107 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30108
30109         * gc.c, object.c: take into account that an object may be offset wrt the address
30110         returned by GC_malloc().
30111
30112 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
30113
30114         * image.c: handle files without entries in the assembly table (modules).
30115
30116 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
30117
30118         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
30119         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
30120         allowed to be null when it's System.Object class setup.
30121
30122 2002-04-27  Martin Baulig  <martin@gnome.org>
30123
30124         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
30125         if `tb->parent == NULL' rather than crashing.
30126
30127 2002-04-28  Nick Drochak  <ndrochak@gol.com>
30128
30129         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
30130         calling acos() where asin() should have been called.
30131
30132 2002-04-26  Martin Baulig  <martin@gnome.org>
30133
30134         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
30135         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
30136         there's a subdirectory called `System', but we don't want to read that
30137         subdirectory as an assembly.
30138
30139 2002-04-25  Martin Baulig  <martin@gnome.org>
30140
30141         * debug-symfile.c: Reflect latest MonoString changes.
30142
30143 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
30144
30145         * rand.c, rand.h: instance method icalls need to have an explicit
30146         this pointer as first argument in the C implementation.
30147
30148 2002-04-25  Nick Drochak <ndrochak@gol.com>
30149
30150         * icall.c: Fix typo in map for GetNonZeroBytes
30151
30152 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30153
30154         * string-icalls.c : String does now passes unit tests without any 
30155         errors, the following changes has been made:
30156         
30157         Implemented replace methods.
30158         Renaming of methods to (try) follow the standard.
30159         Fixed compare ordinal
30160         Made all memory allocated directly to function instead of via icall function.
30161         Small performance fix in is_in_array function
30162                         
30163  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
30164
30165         c (mono_string_Internal_ctor_charp_int_int):
30166         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
30167         sindex < 0, throw ArgumentOutOfRangeException instead of
30168         ArgumentNullException.
30169
30170         Added new check for length == 0, however
30171         I need to make it return String.Empty from the C code.
30172         
30173         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
30174         that calculate the length for us here.
30175         
30176         (mono_string_Internal_ctor_sbytep_int_int): Replaced
30177         mono_string_new_utf16 with mono_string_new, since value is utf8.
30178
30179 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30180
30181         * object.c: register the object for finalization if needed.
30182         Allocate one more char in the string for the terminating 0 char.
30183
30184 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
30185
30186         * class.c, class.h, image.c: check if a type implemenst a destructor.
30187         Use the proper key for array class lookups.
30188         * icall.c: register the icalls in the System.GC class.
30189         * gc.c, gc.h: GC-related functions and icalls.
30190
30191 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30192
30193         * icall.c:
30194         * socket-io.c:
30195         * unicode.c: free some strings gotten from mono_string_to_utf8 and
30196         changed a couple of free () by g_free ().
30197
30198         * decimal.c: one-liner in the comments for decimal2string ().
30199
30200 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30201
30202         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
30203
30204 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30205
30206         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
30207         * object.c (mono_runtime_invoke_array) : handle null in params
30208
30209 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30210
30211         * string-icalls.c: fixed bug in split (one off bug)
30212
30213 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30214
30215         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
30216         * icalls.c: added String::Equals as internal method
30217
30218 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30219
30220         * threads.c: fixed bug in the double interlocked functions
30221
30222 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
30223
30224         * threads.c: implemented all of the new interlocked icalls.
30225         * string-icalls.c: fix a bug in insert.
30226         * icalls.c: added the icalls for interlocked, removed old string functions.
30227         
30228 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30229
30230         * loader.c: fix off-by-one error when reading argument names.
30231
30232 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30233
30234         * profiler.c: win32 counter implementation (untested).
30235         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
30236         (the latter needs testing and more complete impl. from win32 folks).
30237
30238 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
30239
30240         * object.c: mono_array_new_full workaround mono_array_class_get
30241         problem.
30242
30243 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30244
30245         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
30246         * object.h (mono_string_chars): Changed casting type.
30247
30248 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30249
30250         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
30251                            method signatures to use gunichar2 instead of gint16.
30252
30253 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
30254
30255         * object.h, object.c: domain-specific versions of mono_object_new and
30256         mono_array_new.
30257
30258 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
30259
30260         * object.c: changed String layout
30261
30262         * string-icalls.c (mono_string_Internal_ctor_chara): added
30263         internal string constructors.
30264
30265 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
30266
30267         * threads.c: pass 'this' to the thread start routine.
30268
30269 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30270
30271         * string-icalls.c: fix IndexOf and LastIndexOf. Now
30272         InternalCompareStr don't call twice mono_string_cmp_char for the last
30273         character. Improved performance in mono_string_cmp_char.
30274
30275 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30276
30277         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
30278         code into its own library: libmonoruntime.
30279
30280 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
30281
30282         * object.h, object.c: changed array format so that szarrays do not
30283         require a bounds structure.
30284         * icall.c, appdomain.c: support for new szarray format.
30285
30286 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30287
30288         * metadata.c: compare also the retuns type when comparing signatures:
30289         we didn't do this as an optimization since really overloaded methods
30290         must differ also in the arguments, but this doesn't work with
30291         low-level IL code (or when using explicit conversion operators: see
30292         bug#23498 for an example).
30293
30294 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30295
30296         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
30297
30298 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
30299
30300         * icall.c: make MonoType::GetElementType its own icall.
30301
30302 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30303
30304         * icall.c: remove MonoMethod_get_Name().
30305         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
30306         object.
30307
30308 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30309
30310         * string-icalls.c: optimized a few methods.
30311
30312 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30313
30314         * icall.c: added all new string internal calls
30315         * string-icalls.c: added, new string internal call implementation.
30316         * object.c: added mono_string_new_size for allocating a string a size
30317
30318 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
30319
30320         * object.c (mono_object_isinst): use the same code as in the
30321         optimized x86 version.
30322
30323 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30324
30325         * profiler.c: TSC-based timer code (faster and more accurate).
30326         Not hooked up in configure, yet (set USE_X86TSC to 1).
30327
30328 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
30329
30330         * profiler.c, profiler.h: track time spent compiling methods.
30331         * threads.c: track thread creation/destruction.
30332
30333 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
30334
30335         * profiler.c, profiler.h, profiler-private.h: profiling interface
30336         and sample implementation. Moved here so that it can be used also by
30337         the jit.
30338
30339 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
30340
30341         * reflection.c, reflection.h: keep types and other handles separate in
30342         the hash tables for referred tokens. Add guid for modules.
30343
30344 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30345
30346         * assembly.c: fix bugs found with valgrind.
30347         * metadata.h, metadata.c: added mono_metadata_guid_heap().
30348
30349 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
30350
30351         * threads: added icall support for getting current domain for
30352                    the thread.
30353  
30354 2002-04-13  Martin Baulig  <martin@gnome.org>
30355
30356         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
30357         (MonoDebugVarInfo): Added `index' field for register based addresses.
30358         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
30359         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
30360         `MonoDebugVarInfo *params' and `guint32 this_offset' with
30361         `MonoDebugVarInfo *this_var'.
30362
30363         * debug-symfile.c (relocate_variable): New static function to write
30364         a location description for a local variable or method parameter.
30365
30366 2002-04-12  Martin Baulig  <martin@gnome.org>
30367
30368         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
30369         stack offset and begin/end scope address of a local variable.
30370         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
30371         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
30372         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
30373
30374         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
30375         Added new relocation types for start/end scope of a local variable.
30376
30377 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30378
30379         * object.h: add mono_object_domain() macro.
30380         * reflection.c: handle typespecs.
30381         * icall.c: MonoMethod::get_Name() implementation.
30382
30383 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30384
30385         * icall.c: String::GetHashCode() icall implementation.
30386
30387 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30388
30389         * icall.c: String::IndexOfAny icall.
30390         * object.c, object.h: make array->max_length more useful.
30391         Intrduced mono_object_class() and mono_string_length() macros.
30392
30393 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30394
30395         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
30396         instead of g_unichar_isdigit.
30397
30398 2002-04-11  Nick Drochak  <ndrochak@gol.com>
30399
30400         * icall.c: Implement a simple Double.ToString().
30401
30402 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30403
30404         * appdomain.h: only io-layer.h is supposed to be included.
30405         * icall.c: explicitly import environ. Fix warning.
30406
30407 2002-04-10  Nick Drochak  <ndrochak@gol.com>
30408
30409         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
30410                 return true even if it's not Daylight Savings time.
30411                 Only return false for the case where the function isn't
30412                 implemented for a plaform (read Windows).
30413
30414 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30415
30416         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
30417         data with a mutex.
30418
30419 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
30420
30421         * mempool.c (mono_mempool_alloc): only use g_malloc when
30422         absolutely necessary.
30423
30424 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30425
30426         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
30427
30428         * class.c (mono_class_vtable): use domain mempool to allocate vtable
30429         (mono_class_proxy_vtable): use domain mempool
30430
30431 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30432
30433         * appdomain.h, appdomain.c: split initialization that requires the
30434         execution engine support into mono_runtime_init().
30435
30436 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30437
30438         * class.c (mono_class_init): don't include vtable inside MonoClass
30439         to save some memory, gather some statistics.
30440         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30441
30442 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30443
30444         * icall.c: internalcall implementation for ValueType.Equals().
30445
30446 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30447
30448         * object.c (mono_message_init): moved 
30449         (mono_runtime_exec_main): new arch. independent impl.
30450         (mono_runtime_invoke_array): new method - like
30451         mono_runtime_invoke, but you can pass an array of objects.
30452         (mono_remoting_invoke): new arch. independent impl.
30453         (mono_message_invoke): new arch. independent impl.
30454         (mono_runtime_class_init): new arch. independent impl.
30455         (mono_runtime_object_init): new arch. independent impl.
30456
30457 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30458
30459         * metadata.c, object.c, reflection.c: documented the exported
30460         functions.
30461
30462 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30463
30464         * icall.c: simpler code to pass the assembly builder data to corlib.
30465         Implement GetNestedTypes() internalcall.
30466
30467 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30468
30469         * class.c: warn if a type can't be loaded.
30470
30471 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30472
30473         * image.h: typedef MonoImageOpenStatus
30474         * types.h: removed unused file
30475         
30476 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30477
30478         * icall.c: Enum_ToObject accepts enum value arguments.
30479
30480 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30481
30482         * class.c: move initialization of properties, events and nested
30483         classes, so that they happen for interfaces, too.
30484
30485 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30486
30487         * icall.c: cleanup some ugly casts in Array_SetValue*.
30488
30489 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30490
30491         * icall.c: the values array fro enums is of the correct type, now.
30492         Implement (correctly) getFullName instead of assQualifiedName for
30493         MonoType.
30494         * reflection.h, reflection.c: added mono_type_get_name ().
30495
30496 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30497
30498         * assembly.c, image.h: for each MonoImage, record from wich assembly
30499         it was loaded.
30500         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30501         Make Type.Assembly work.
30502
30503 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30504
30505         * debug-symfile.h: use char* instead of gpointer to avoid
30506         unnecessary casts.
30507
30508         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30509
30510         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30511         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30512
30513 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30514
30515         * icall.c (mono_message_init): impl. (code cleanup)
30516         (ves_icall_InternalExecute): impl. FieldGetter
30517
30518         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30519         defined we call all (non-static)methods through the vtable. 
30520
30521 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30522
30523         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30524         finalizer even though the memory is still referenced (and the chunk of
30525         memory is not freed).
30526
30527 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30528
30529         * assembly.c: fix brokeness.
30530
30531 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30532
30533         * class.c: kill some warnings. Check explicit interface method
30534         implementation also without considering the namespace.
30535         Load also literal strings in static class data.
30536
30537 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30538
30539         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30540         (default_assembly_name_resolver): Make the resolver take the
30541         "base" directory where the assembly was originally defined, so we
30542         can load DLLs that are in the same directory as the assembly that
30543         is being referenced.
30544
30545 2002-03-28  Dick Porter  <dick@ximian.com>
30546
30547         * file-io.h: 
30548         * file-io.c:
30549         * socket-io.c: 
30550         * unicode.h: 
30551         * unicode.c: Warning cleanups
30552
30553 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30554
30555         * object.h, reflection.h: use the correct type instead of MonoObject.
30556
30557 2002-03-28  Martin Baulig  <martin@gnome.org>
30558
30559         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30560         (mono_debug_update_symbol_file): Initialize classes if necessary.
30561
30562 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30563
30564         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30565         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30566
30567 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30568
30569         * assembly.h: fix function prototype.
30570         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30571         * mono-endian.h: use const cast.
30572
30573 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30574
30575         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30576
30577 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30578
30579         * loader.c: don't assert when a typeref can't be loaded, give
30580         a chance to the runtime to trow an exception instead.
30581         * loader.h: fix warning.
30582
30583 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30584
30585         * class.c (mono_class_proxy_vtable): added proxy support
30586
30587 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30588
30589         * icall.c: removed last of PAL calls, added System.Environment
30590         * file-io.h, file-io.c: MonoIO implementation
30591         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30592
30593 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30594
30595         * appdomain.c: do not use the byte marker in ldstr table lookup.
30596         * debug-helpers.c: allow two ':' to separate class and method name.
30597         * object.c: allocate arrays bounds with the GC, too.
30598         * verify: add a few more checks.
30599
30600 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30601
30602         * reflection.c: output also literal strings. Allocate parameter data
30603         with GC_malloc() (thanks, Martin, for catching this!).
30604
30605 2002-03-26  Martin Baulig  <martin@gnome.org>
30606
30607         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30608         include the `this' offset in the `param_offsets'.
30609
30610 2002-03-25  Martin Baulig  <martin@gnome.org>
30611
30612         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30613         mono_debug_get_class() function to get the classes. Added new
30614         relocation types for arrays and strings.
30615         (mono_debug_get_class): New static function to search in all
30616         referenced assemblies for a metadata token.
30617
30618         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30619
30620 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30621
30622         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30623         hold gc-allocated objects. Make the string heap a stream like the
30624         others. Removed duplicated code when writing stream info.
30625         Added asserts to catch possible buffer overflows. Set the sorted map
30626         for tables that need sorting. Added some documentation.
30627
30628 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30629
30630         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30631         for interned strings and vtables.
30632
30633 2002-03-24  Martin Baulig  <martin@gnome.org>
30634
30635         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30636         it in the array since it was created with g_slist_prepend().
30637
30638 2002-03-24  Martin Baulig  <martin@gnome.org>
30639
30640         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30641         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30642         (mono_debug_method_from_token): Renamed to
30643         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30644         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30645
30646         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30647         relocation types.
30648
30649         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30650
30651 2002-03-24  Martin Baulig  <martin@gnome.org>
30652
30653         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30654         (mono_debug_method_from_token): New func.
30655
30656         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30657         New interncall, calls mono_debug_local_type_from_signature().
30658         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30659         calls mono_debug_method_from_token().
30660
30661 2002-03-23  Martin Baulig  <martin@gnome.org>
30662
30663         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30664         specifies the number of bytes to be converted, not the array size.
30665         Return the number of chars, not the number of bytes.
30666         (ves_icall_iconv_get_chars): The `byteCount' argument
30667         specifies the number of bytes to be converted, not the array size.
30668
30669 2002-03-23  Martin Baulig  <martin@gnome.org>
30670
30671         * reflection.h (MonoReflectionSigHelper): New type.
30672
30673         * reflection.c (mono_reflection_sighelper_get_signature_local),
30674         (mono_reflection_sighelper_get_signature_local): New functions.
30675
30676         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30677         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30678         interncalls.
30679
30680 2002-03-23  Martin Baulig  <martin@gnome.org>
30681
30682         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30683         is_writeable is set.
30684         (mono_raw_buffer_update): New function to write the modified map
30685         back to disk.
30686
30687         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30688
30689         * debug-symfile.c (mono_debug_update_symbol_file): Call
30690         mono_raw_buffer_update() when done writing.
30691
30692 2002-03-23  Martin Baulig  <martin@gnome.org>
30693
30694         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30695
30696         * debug-symfile.c: Added support for arguments and local variables.
30697
30698 2002-03-23  Dick Porter  <dick@ximian.com>
30699
30700         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30701         protected by ifdefs, hence breaking the w32 build.
30702
30703 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30704
30705         * object.c: implement is_interned() the right way.
30706
30707 2002-03-21  Martin Baulig  <martin@gnome.org>
30708
30709         * debug-symfile.[ch]: New files to handle debugging information
30710         files. There's also support to dynamically update these symbol
30711         files to include machine dependent information.
30712
30713 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30714
30715         * threads.c (mono_thread_create): new function to create thread
30716         from C
30717
30718 2002-03-20  Martin Baulig  <martin@gnome.org>
30719
30720         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30721         method is a constructor.
30722         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30723         points to ves_icall_InternalInvoke().
30724
30725 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30726
30727         * file-io.c: Flush shouldn't throw exceptions.
30728
30729 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30730
30731         * file-io.c: FileStream flush support; FileSetLength now
30732         restores file pointer.
30733
30734 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30735
30736         * class.c: set image for pointer classes.
30737
30738 2002/03/19  Nick Drochak <ndrochak@gol.com>
30739
30740         * sysmath.c: Forgot one.
30741
30742 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30743
30744         * sysmath.c: Avoid redefining existing names.
30745
30746 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30747
30748         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30749         handled by runtime as icall rather than dllimport from libm.so
30750         * file-io.c, file-io.h: fixed handle argument type.
30751
30752 2002-03-18  Dick Porter  <dick@ximian.com>
30753
30754         * reflection.c (mono_image_get_type_info): rename interface to
30755         iface, because of "#define interface struct" on windows.
30756
30757 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30758
30759         * class.c, class.h: rename and export mono_ptr_class_get().
30760         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30761         * reflection.c, reflection.h, icall.c: better/saner type name
30762         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30763         method signatures.
30764
30765 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30766
30767         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30768
30769         * icall.c (ves_icall_InternalInvoke): impl.
30770
30771 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30772
30773         * reflection.c: output the interface map table, too.
30774
30775 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30776
30777         * class.c (class_compute_field_layout): separate computation of 
30778         static field layout
30779
30780 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30781
30782         * icall.c: added System.Buffer support.
30783         * file-io.c: moved file icalls from PAL to FileStream.
30784
30785 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30786
30787         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30788
30789 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30790
30791         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30792
30793 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30794
30795         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30796
30797 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30798
30799         * debug-helpers.{c,h}: moved here from monograph some useful functions
30800         to locate a method by name/signature in a class or image. Included
30801         also a small and flexible IL disassembler.
30802
30803 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30804
30805         * reflection.c: fixup tokens in methods with small header size, too.
30806
30807 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30808
30809         * object.c (mono_string_to_utf8): remove assert(!error), instead
30810         print a warning. 
30811
30812 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30813
30814         * icall.c: update to the new mono_Array_class_get interface.
30815
30816 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30817
30818         * appdomain.c, object.c: Boehm-GC enable.
30819         * icall.c: make get_data_chunk() support split data requests.
30820         Ensure a class is initialized in more cases. Return only the first
30821         property found in GetProperties() or the compiler gets confused. 
30822         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30823         * reflection.h, reflection.c: add fixup mechanism for field and method
30824         tokens. Initialize assembly->typeref in a single place. Output
30825         properties after events. Support custom attributes for events, too.
30826         Typo fix for paramter custom attrs.
30827
30828 2002-03-07  Martin Baulig  <martin@gnome.org>
30829
30830         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30831
30832 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30833
30834         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30835
30836 2002-03-06  Martin Baulig  <martin@gnome.org>
30837
30838         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30839         non-zero lower bounds. See testcases #F10-#F13.
30840
30841 2002-03-05  Martin Baulig  <martin@gnome.org>
30842
30843         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30844
30845         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30846         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30847         here.
30848         (ves_icall_System_Array_SetValue): Likewise.
30849         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30850         as argument and does the actual work. This function is used when copying a
30851         multi-dimensional array.
30852         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30853         now do all the widening conversions of value types.
30854         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30855
30856 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30857
30858         * class.c: remove some magic numbers and use the smbolic names,
30859         instead. Added init_events() to load event info at class init time.
30860         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30861         and mono_metadata_methods_from_event().
30862         * reflection.h, reflection.c: added support for writing out the evnets
30863         related information.
30864
30865 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30866
30867         * reflection.h, icall.c: use a different method (GetInterfaces)
30868         to gather interface info and add isbyref, isprimitive and
30869         ispointer to the ves_icall_get_type_info() return value.
30870
30871 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30872
30873         * class.h: stared adding support for events.
30874         * icall.c: split find_members implementation. Added debug icall to get
30875         the address of an object.
30876         * reflection.c: handle TypeBuilders in mono_type_get_object().
30877
30878 2002-03-01  Martin Baulig  <martin@gnome.org>
30879
30880         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30881         ArgumentOutOfRangeException(), not an ArgumentException().
30882         (ves_icall_System_Array_GetLowerBound): Likewise.
30883         (ves_icall_System_Array_GetValue): Improved argument checking.
30884         (ves_icall_System_Array_SetValue): Improved argument checking.
30885
30886 2002-03-01  Martin Baulig  <martin@gnome.org>
30887
30888         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30889         called with invalid arguments rather than just dying with g_assert().
30890         (ves_icall_System_Array_SetValue): Likewise.
30891         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30892         raise a NotImplementedException instead.
30893         (ves_icall_System_Array_GetLength): Added argument checking.
30894         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30895
30896 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30897
30898         * object.h (mono_assert): new macros mono_assert and
30899         mono_assert_not_reached
30900
30901 2002-02-28  Martin Baulig  <martin@gnome.org>
30902
30903         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30904         and "System::String::IsInterned" to "System::String::_IsInterned".
30905
30906 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30907
30908         * icall.c: remove hacks for typebuilder. Added icall to create a
30909         modified type from a tybebuilder.
30910         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30911         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30912         to create a backing MonoClass for a TypeBuilder.
30913
30914 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30915
30916         * class.c, class.h: more refactoring of class init.
30917         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30918
30919 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30920
30921         * marshal.c, marshal.h: start of marshaling interface.
30922
30923 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30924
30925         * icall.c: fix order in assembly qualified name icall.
30926
30927 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30928
30929         * class.c: do not free str, since we store it in the hash table.
30930         * reflection.h: add label field to MonoILExceptionInfo.
30931         * reflection.c: handle references to more than one assembly. Handle
30932         case when there isn't a module created in the assembly.
30933
30934 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30935
30936         * class.c: Fix typo. Start refactoring of class init code.
30937
30938 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30939
30940         * appdomain.c: exit with 1 on error.
30941         * class.c: we already have the name in MonoClassField.
30942         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30943         MonoStreamHeader instead of an offset of image->raw_metadata.
30944
30945 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30946
30947         * appdomain.c (mono_init): Be even more descriptive about the error.
30948
30949 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30950
30951         * appdomain.c: give the user an informative message when corlib can't
30952         be loaded.
30953
30954 2002-02-26  Martin Baulig  <martin@gnome.org>
30955
30956         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30957         New icall to get the time zone data.
30958
30959 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30960
30961         * reflection.c: set virtual and raw size of section correctly.
30962         * threads.c: transfer domain information to newly created threads.
30963
30964 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30965
30966         * class.c: when instancing a class in a domain, load the default
30967         vaules for static fields from the constant table. Fix System.Enum to
30968         not be an enum.
30969         * icall.c: implement Object::GetType() internalcall. Implemented
30970         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30971         Fixed checking of binding flags in find_members().
30972         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30973         * reflection.c: handle enumerations when writing to the constant
30974         table. Use a different object cache for types.
30975
30976
30977 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30978
30979         * object.c (mono_object_isinst): fix for arrays
30980
30981         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30982
30983 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30984
30985         * object.c: don't use mprotect ()  and fix intern pool hash table
30986         lookup for big endian systems.
30987
30988 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30989
30990         * icall.c: change type_is_subtype_of () signature.
30991
30992 2002-02-21  Mark Crichton  <crichton@gimp.org>
30993
30994         * rand.c, rand.h: Added random number generator for
30995         System.Security.Cryptography classes.
30996
30997         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30998
30999         * icall.c: Added System.Security.Cryptography calls.
31000
31001 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
31002
31003         * class.c, icall.c, metadata.c: better support for pointer types.
31004         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
31005         * reflection.c: Add support for getting custom attrs for properties
31006         and simplify some code.
31007
31008 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
31009
31010         * icall.c: change getToken () and add custom attribute GetBlob()helper
31011         method.
31012         * reflection.h: add custom attrs array to the reflection builder structures.
31013         * reflection.c: encode and emit custom attributes for all the relevant
31014         reflection objects. Cache fieldref and methodref tokens. Change
31015         mono_image_create_token() interface to take a MonoDynamicAssembly.
31016         More complete custom attributes decoder. Load custom attributes for
31017         Assembly, Field, Method and Constructor objects, too. Make the
31018         returned array an Attribute[] one, not object[]. Added
31019         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
31020         custom attribute constructor.
31021
31022 2002-02-20  Dick Porter  <dick@ximian.com>
31023
31024         * icall.c:
31025         * rawbuffer.c:
31026         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
31027         problem code out for now).
31028
31029 2002-02-19  Radek Doulik  <rodo@ximian.com>
31030
31031         * object.c (mono_ldstr): use hash table to avoid multiple swapping
31032
31033 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
31034
31035         * icall.c: register the GetCustomAttributes method.
31036         * object.c, object.h: add mono_string_new_len ().
31037         * reflection.h, reflection.c: added mono_runtime_invoke(),
31038         mono_install_runtime_invoke(). Added
31039         mono_reflection_get_custom_attrs () to load custom attributes and
31040         create the attribute objects.
31041
31042 2002-02-19  Dick Porter  <dick@ximian.com>
31043         * threads-dummy-types.c:
31044         * threads-dummy-types.h:
31045         * threads-dummy.c:
31046         * threads-dummy.h:
31047         * threads-pthread-types.c:
31048         * threads-pthread-types.h:
31049         * threads-pthread.c:
31050         * threads-pthread.h:  Deleted obsolete files
31051
31052 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
31053
31054         * class.c (mono_class_vtable): runtime init the class when we
31055         allocate static class data.
31056
31057         * icall.c (ves_icall_System_Array_SetValue): check for null values.
31058
31059         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
31060         and String - but we will need generic marshalling support in the
31061         future. 
31062         (mono_init): set the domain name in a ms compatible way
31063
31064         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
31065         String[].
31066
31067 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
31068
31069         * object.c (mono_array_clone): use alloca() instead of g_malloc  
31070         for sizes
31071
31072         * appdomain.c (mono_domain_unload): impl.
31073
31074 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31075
31076         * appdomain.c, object.c: fix intern pool implementation.
31077         * class.c: fix alignment code.
31078
31079 2002-02-16  Radek Doulik  <rodo@ximian.com>
31080
31081         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
31082         and s2 > s1, just copy lower bytes to be compatible with little
31083         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
31084         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
31085
31086         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
31087         force big_endian to be 1 for big endian machines 
31088         (ves_icall_iconv_new_decoder): ditto
31089
31090 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
31091
31092         * socket-io.c (convert_sockopt_level_and_name): If the system
31093         doesn't define SOL_IP or SOL_TCP, get them by hand using
31094         getprotobyname() and caching the values (because this could be a
31095         slow operation).
31096         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
31097         Use the appropriate struct when the system does support it. Ie,
31098         not all systems have struct ip_mreqn so use struct ip_mreq when
31099         appropriate.
31100
31101 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
31102
31103         * reflection.c: handle finally clauses.
31104
31105 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
31106
31107         * socket-io.c: use g_snprintf() instead of snprintf.
31108
31109 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
31110
31111         * reflection.c (mono_param_get_objects): Cast second argument to
31112         mono_method_get_param_names to a const char** to silence the
31113         compiler warning.
31114
31115         * appdomain.c (mono_domain_assembly_open): Put parens around the
31116         truth statement in the for-loop.
31117
31118         * unicode.c (iconv_convert): Got rid of a compiler warning about
31119         int i being unused when the system has a new iconv.
31120         (iconv_get_length): Same.
31121
31122         * image.c (load_class_names): Cast the second argument to
31123         g_hash_table_insert() to char* to hush compiler warnings about the
31124         arg being a const.
31125         (mono_image_open): Same here.
31126
31127         * socket-io.c: Don't conditionally include sys/filio.h or
31128         sys/sockio.h here anymore since we now get them from
31129         io-layer/io-layer.h
31130         (inet_pton): If the system doesn't support inet_aton, implement
31131         using inet_addr and also #define INADDR_NONE if it isn't defined
31132         by the system.
31133
31134 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
31135
31136         * metadata.c, metadata.h: added function to get packing and size info
31137         of a typedef.
31138         * reflection.h, reflection.c: handle field RVA data. Save info about
31139         the table layout if needed. Assign typedef indexes to all the types
31140         before dumping the info about them to avoid forward reference problems.
31141
31142 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
31143
31144         * socket-io.c (convert_sockopt_level_and_name): ifdef
31145         SO_ACCEPTCONN because it is not defined on my system (old debian)
31146
31147 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
31148
31149         * opcode.c: use stddef.h to get NULL.
31150
31151 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
31152
31153         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
31154         for FIONBIO, FIONREAD and SIOCATMARK.
31155         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
31156         define INADDR_NONE and besides, inet_addr() is deprecated and
31157         should not be used. Use inet_pton() instead - it also has the
31158         added bonus that it can easily handle IPv6 addresses as well.
31159         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
31160
31161 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
31162
31163         * decimal.c: remove _MSC_VER conditional.
31164
31165 2002-02-13  Dick Porter  <dick@ximian.com>
31166
31167         * socket-io.c: 
31168         * icall.c: Internal calls for Blocking, Select, Shutdown,
31169         GetSocketOption and SetSocketOption
31170
31171 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31172
31173         * assembly.cs: better resolver: use it instead of some kludgy
31174         code.
31175
31176 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
31177
31178         * reflection.c: the best way to speed-up the compiler is to avoid
31179         infinite loops.
31180
31181 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
31182
31183         * class.c (mono_class_vtable): changed the object layout
31184         (obj->vtable->class). 
31185         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
31186
31187 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31188
31189         * assembly.c: look for assemblies in the assembly dir, too.
31190
31191 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31192
31193         * class.c: fix thinko in mono_class_from_type().
31194
31195 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31196
31197         * exception.h, exception.c: added TypeLoadException.
31198         * object.h, object.c: added mono_array_clone ().
31199         * icall.c: handle throwOnError in AssemblyGetType().
31200         Added Array.Clone().
31201         * opcode.h, opcode.c: use a single value for the opcode val.
31202         Compile fix for non-gcc compilers.
31203
31204 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
31205
31206         * opcodes.c, opcodes.h: export interesting info about opcodes.
31207
31208 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
31209
31210         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
31211         icalls. 
31212
31213         * class.c (class_compute_field_layout): set element_class for enums
31214         (mono_class_create_from_typedef): set element_class for normal classes
31215
31216         * icall.c (ves_icall_System_Enum_get_value): impl.
31217
31218         * class.c (mono_class_create_from_typedef): do not set valuetype
31219         flag for System.ValueType and System.Enum
31220
31221 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
31222
31223         * unicode.c (iconv_convert): fix big endian problem.
31224
31225 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31226
31227         * class.c: add asserts if we are ever going to scribble over memory.
31228         * socket-io.c: not all systems have AF_IRDA defined.
31229
31230 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
31231
31232         * class.c (class_compute_field_layout): do not consider static
31233         fields to compute alignment
31234
31235 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
31236
31237         * appdomain.c (mono_appdomain_get): impl.
31238         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
31239
31240 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
31241
31242         * icall.c: ignore "file://" prefix when loading an assembly.
31243
31244 2002-01-23  Dick Porter  <dick@ximian.com>
31245
31246         * socket-io.c:
31247         * icall.c:
31248         * Makefile.am: Added socket support
31249
31250 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31251
31252         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
31253         code back.  This should return the assemblies that are loaded by
31254         the runtime on behalf of an application domain. 
31255
31256         The current implementation is still broken, it just returns every
31257         assembly loaded, but until we get real applications domain this
31258         will do.
31259
31260 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
31261
31262         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
31263         AppDomain object.
31264
31265 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31266
31267         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
31268         the mono_class_from_name lookup.
31269         (ves_icall_get_parameter_info): ditto.
31270         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
31271         method.
31272         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
31273
31274 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
31275
31276         * class.c: load also nested classes on class init.
31277         System.ValueType instance methods gets passed boxed
31278         values, unless methods in derived classed that get a pointer to the
31279         data.
31280         * icall.c: use better name parsing code in GetType().
31281         * image.c, image.h: add mono_image_loaded ().
31282         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
31283         * reflection.c, reflection.h: added mono_reflection_parse_type().
31284
31285 2002-01-22  Veronica De Santis <veron78@interfree.it>
31286
31287         * icall.c : Added mapping of internal calls for Manual and Auto reset events
31288         * threads.c : Added the implementation of internal calls for events
31289         * threads.h : Added prototypes of internal calls for events
31290         
31291 2002-01-21  Radek Doulik  <rodo@ximian.com>
31292
31293         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
31294
31295 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
31296
31297         * class.c (mono_class_init): set min_align to 1 (instead of 0)
31298         (mono_class_value_size): use min_align
31299
31300 2002-01-20  Dick Porter  <dick@ximian.com>
31301
31302         * threads.h:
31303         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
31304         so it compiles on w32.
31305
31306 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
31307
31308         * metadata.c (mono_type_stack_size): impl.
31309
31310         * class.c (mono_class_get_field): impl. memberref token
31311
31312 2002-01-16 Veronica De Santis <veron78@@interfree.it>
31313
31314         * icall.h : Added the internal calls mapping for CreateMutex_internal
31315                     and ReleaseMutex_internal.
31316         * threads.h : Added the prototype of mutexes internal calls.
31317         * threads.c : Added the implementations of mutexes internal calls.
31318
31319 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31320
31321         * metaparse.h: removed unused file.
31322         * reflection.c, reflection.h: added stream_data_align () function 
31323         to align data in streams and keep stream aligned. Add support for
31324         exception support in method headers.
31325
31326 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
31327
31328         * unicode.c: make iconv_convert () return the number of bytess written
31329         in the output buffer.
31330
31331 2002-01-15  Dick Porter  <dick@ximian.com>
31332         * threads.c: Make the runtime's idea of infinite timeouts coincide
31333         with the class library's
31334
31335         Fix a particularly egregious bug in mono_thread_cleanup(). That
31336         code was so utterly bogus it must have been written on a Monday.
31337
31338 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31339
31340         * reflection.h: add subtypes field to TypeBuilder.
31341         * reflection.c: encode constants for literal fields.
31342         Handle subtypes. Fix user string token (and add a zero byte)
31343         at the end.
31344         
31345 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
31346
31347         * class.c (mono_class_init): bug fix: assign slot numbers for
31348         abstract methods.
31349
31350 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31351
31352         * reflection.c: don't try to output a code RVA for abstract methods.
31353         Small fixes for method header format. Output parameter info to the
31354         ParamDef table. Save method overriding info to MethodImpl table.
31355         Fix property support. Allow typedef.extends to be a type in the
31356         building assembly.
31357         * verify.c: fix off-by-one error.
31358
31359 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
31360
31361         * class.c: fix mono_class_from_mono_type () for szarray types.
31362         Remove unused cache check in mono_class_from_type_spec().
31363         * icall.c: *type_from_name () functions handle simple arrays and byref.
31364         * reflection.c: handle byref and szarray types. Handle methods without
31365         body (gets P/Invoke compilation working). Handle types and fields in
31366         get_token ().
31367         * reflection.h: add rank to MonoTypeInfo.
31368
31369 2002-01-10  Dick Porter  <dick@ximian.com>
31370
31371         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
31372         internal calls
31373
31374 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31375
31376         * icall.c: initialize class in type_from_handle ().
31377         Loop also in parent classes for get_method ().
31378         * reflection.c: properly encode class and valuetype types.
31379         Start on encoding TypeBuilder types. Handle fieldrefs.
31380         Use correct length when registering a user string.
31381         Handle ConstructorBuilder and MonoMethod in get_token ().
31382         Make mono_type_get_object () aware of cached types.
31383         * object.c: back out change to mono_string_new ().
31384
31385 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
31386         * object.c: mono_string_new should return a NULL when the string 
31387         passed in is NULL -- not try to deference it.
31388         
31389 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31390
31391         * icall.c: hack to make IsSubType work for TypeBuilders.
31392         * reflection.c: emit constructors before methods.
31393         Retrieve param names in mono_param_get_objects().
31394
31395 2002/01/05  Nick Drochak  <ndrochak@gol.com>
31396
31397         * Makefile.am: fix list of headers and sources so automake 1.5
31398         doesn't complain. Removed \# at end of list.
31399
31400 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31401
31402         * reflection.c: get token for a method ref. Set return type of
31403         constructor to void.
31404         * loader.c: debug message.
31405         * class.c: typo fix.
31406
31407 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
31408
31409         * icall.c: fix array init with rank > 1. FindMembers
31410         loops in parent class as well.
31411         * image.c: do not insert nested types in name cache.
31412         * reflection.c: warning fix.
31413         * reflection.h: add override method (for interface impl).
31414
31415 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
31416
31417         * metadata.c: fix customattr decoding.
31418
31419 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
31420
31421         * rawbuffer.cs: Added native Win32 implementation, avoids using
31422         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
31423
31424 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
31425
31426         * class.c: make the low-level routines handle the cache.
31427
31428 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
31429
31430         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
31431
31432 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
31433
31434         * class.c: fix mono_array_element_size() for objects.
31435         * class.h, class.c: add properties to MonoClass and load them
31436         at init time.
31437         * icall.c: check with isinst() when assigning a value to an array
31438         instead of requiring the classes to match exactly.
31439         Implemented icall for System.Type::GetType().
31440         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31441         enums. Handle bindingflags when looking for methods and fields.
31442         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31443         and mono_metadata_methods_from_property().
31444         * reflection.h, reflection.c: added structures for propreties,
31445         parameters and enums. Implemented mono_property_get_object() and
31446         mono_param_get_objects().
31447
31448 2001-12-18  Dick Porter  <dick@ximian.com>
31449
31450         * file-io.c: Use mono_string_to_utf16() instead of
31451         mono_string_chars()
31452
31453         * object.c: Added mono_string_to_utf16(), which copies the non
31454         NULL-terminated MonoString into a new double-null-terminated
31455         buffer.
31456
31457 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31458
31459         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31460
31461 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31462
31463         * file-io.c: raise exceptions if handle is invalid.
31464
31465 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31466
31467         * assembly.c: yet another check for mscorlib.
31468         * class.c, class.h: load nesting info for classes.
31469         * icall.c: many new functions to support the Reflection classes.
31470         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31471         * reflection.h, reflection.c: mono_image_create_token(),
31472         mono_assembly_get_object(), mono_type_get_object(),
31473         mono_method_get_object(), mono_field_get_object(): methods to return
31474         objects that parallel the C representation of assemblies, types,
31475         methods, fields.
31476
31477 2001-12-11  Dick Porter  <dick@ximian.com>
31478
31479         * icall.c:
31480         * file-io.c: Internal calls for file IO.
31481
31482 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31483
31484         * tabledefs.h: missing FileAttributes.
31485         * verify.h, verify.c: use is_valid_string () to simplify and check for
31486         valid strings more correctly. Fix warnings and speeling.
31487         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31488         Check code: branches, maxstack, method calls.
31489
31490 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31491
31492         * object.c (mono_object_allocate): removed static, so that the jit
31493         can allocate value types.
31494
31495         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31496
31497 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31498
31499         * class.c: init enum types right away and register the
31500         token->MonoClass map in mono_class_create_from_typedef ().
31501         * verify.h, verify.c: first cut of the verifier.
31502         * pedump.c: add --verify switch to verify metadata tables.
31503         * tabledefs.h: add some missing enums.
31504
31505 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31506
31507         * class.c (mono_install_runtime_class_init): impl.
31508         (mono_class_init): renamed mono_class_metadata_init to
31509         mono_class_init, also removed the metadata_inited flag
31510
31511         * object.c (mono_object_isinst): use faster algorithm
31512
31513 2001-11-30  Radek Doulik  <rodo@ximian.com>
31514
31515         * mono-endian.h: reverted last change
31516         added function prototypes
31517
31518         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31519         add mono-endian.c back
31520
31521         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31522         for unaligned access, I've mistaked it with endianess. I am
31523         sorry.
31524         (mono_read16): fix reverted endianess
31525         (mono_read64): ditto
31526         (mono_read32): ditto
31527
31528 2001-11-30  Dick Porter  <dick@ximian.com>
31529
31530         * exception.c: Implement mono_exception_from_name()
31531
31532 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31533
31534         * metadata.h, metadata.c: remove params_size and locals_size and their
31535         calculation from the metadata code: they are only usefult to the
31536         interp.
31537
31538 2001-11-29  Radek Doulik  <rodo@ximian.com>
31539
31540         * object.c (mono_ldstr): swap bytes here, it's probably not the
31541         best place, but works for me now, I'll redo it once I know mono
31542         better, also note that I add PROT_WRITE and don't reset back, also
31543         note that it's only affects big endians, so x86 should be OK
31544
31545         * mono-endian.h (read16): use just glib macros for both endians
31546
31547         * mono-endian.c: removed as glib macros are used in in
31548         mono-endian.h so we don't need to care about endianess for read
31549         macros as glib does that for us already
31550
31551 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31552
31553         * class.h, class.h: take minimum alignment into consideration so
31554         that the fields of a class remain aligned also when in an array.
31555
31556 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31557
31558         * loader.h, loader.c: add mono_method_get_param_names().
31559         * class.c: 0-init class fields.
31560
31561 2001-11-26  Dick Porter  <dick@ximian.com>
31562
31563         * icall.c:
31564         * threads-types.h:
31565         * threads.c: New file that handles System.Threading on all platforms
31566
31567         * object.c: 
31568         * object.h: Remove the synchronisation struct from MonoObject,
31569         replace it with a pointer that gets initialised on demand
31570
31571         * Makefile.am: Replace all the system-specific threading code with
31572         a single file that uses the new wrapper library
31573
31574 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31575
31576         * class.c, class.h: add mono_install_trampoline() so that the runtime
31577         can register a function to create a trampoline: removes the ugly
31578         requirement that a runtime needed to export arch_create_jit_trampoline.
31579         * object.h, object.c: added mono_install_handler() so that the runtime
31580         can install an handler for exceptions generated in C code (with
31581         mono_raise_exception()). Added C struct for System.Delegate.
31582         * pedump.c: removed arch_create_jit_trampoline.
31583         * reflection.c: some cleanups to allow registering user strings and
31584         later getting a token for methodrefs and fieldrefs before the assembly
31585         is built.
31586         * row-indexes.h: updates and fixes from the new ECMA specs.
31587
31588 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31589
31590         * class.h, class.c: add enum_basetype field to MonoClass.
31591         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31592         to get index in the constant table reated to a field, param or
31593         property.
31594         * reflection.h, reflection.c: handle constructors. Set public-key and
31595         version number of the built assembly to 0.
31596         * row-indexes.h: update from new ECMA spec.
31597
31598 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31599
31600         * class.h, class.c: add a max_interface_id to MonoClass.
31601         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31602         since it's used to do that. Added mono_type_type_from_obj().
31603         Make GetType() return NULL instead of segfaulting if the type was not
31604         found. Handle simple arrays in assQualifiedName.
31605         * object.h: add a struct to represent an Exception.
31606         * reflection.c: output call convention in method signature.
31607         Add code to support P/Invoke methods and fixed offsets for fields.
31608
31609 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31610
31611         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31612         the value.
31613         * icall.c: use mono_array_addr instead of array->vector: fixes the
31614         reflection image writing.
31615         * reflection.c: init call convention byte to 0 in method signature.
31616         Encode the property signature. Don't output property-related methods
31617         twice. Really process the properties for a type (don't cast a field to
31618         a property, my mom always told me that).
31619         Fix 64 bit issues in pointer alignment in a different and more
31620         readable way.
31621
31622 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31623
31624         * loader.h: Removed type class from MonoDefaults, added monotype
31625
31626         * loader.c: Loaded MonoType, removed loading of Type
31627
31628         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31629         and fills in System.Type._impl with a RuntimeTypeHandle rather
31630         than the actual MonoClass *
31631
31632         (ves_icall_type_from_handle): change from type_class to
31633         monotype_class
31634
31635         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31636         implemented
31637
31638         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31639         implemented
31640
31641         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31642
31643         (ves_icall_System_Reflection_Assembly_GetType): implemented
31644
31645         (ves_icall_System_MonoType_assQualifiedName): implemented
31646
31647         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31648
31649 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31650
31651         * assembly.c (mono_assembly_open): Implement a cache for the
31652         assemblies. 
31653
31654         (mono_assembly_close): only destroy the assembly when the last
31655         reference is gone.
31656         
31657 2001-11-09  Dick Porter  <dick@ximian.com>
31658
31659         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31660
31661 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31662
31663         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31664
31665 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31666
31667         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31668         from Martin Weindel.
31669         * object.h: add mono_string_chars ().
31670
31671 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31672
31673         * reflection.c (build_compressed_metadata): Eliminates warnings
31674         and uses 64-bit clean code.
31675
31676         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31677         (mono_type_equal): Change signature to eliminate warnings.
31678
31679 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31680
31681         * icall.c, loader.c: remove the internalcall array constructors.
31682         Changes to match the new MonoArray structure.
31683         * object.h, object.c: an array object doesn't allocate an extra
31684         vector. Add mono_array_new_full () to create jagged arrays easily.
31685
31686 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31687
31688         * metadata.h, metadata.c: add mono_metadata_field_info () to
31689         retreive all the info about a field from vairous tables.
31690         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31691         * class.h, class.c: augment MonoClassField with more info.
31692         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31693         policy and load a field's RVA if needed.
31694
31695 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31696
31697         * class.c (mono_class_metadata_init): create a trampoline for all
31698         virtual functions instead of actually compiling them.
31699
31700 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31701
31702         * class.h, class.c: include name in MonoClassField.
31703         * class.c: fix fundamental type of System.Object and System.String.
31704         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31705         tokens in ldtoken.
31706         * icall.c: remove internalcalls for the Reflection stuff that is now
31707         done in C# code.
31708         * loader.c: mono_field_from_memberref () implementation.
31709         * mono-endian.c: thinko (s/struct/union/g).
31710         * object.c, object.h: make the mono_string_* prototypes actually use
31711         MonoString instead of MonoObject.
31712         * reflection.c, reflection.h: updates for changes in the reflection
31713         code in corlib: we use C structures that map to the actual C# classes.
31714         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31715         fat method header if needed and use the info from the ILGenerator for
31716         methods. Handle fields in types. Misc fixes.
31717
31718 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31719
31720         * class.c (mono_class_metadata_init): bug fix: always allocate
31721         space for static class data
31722
31723 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31724
31725         * class.c (mono_compute_relative_numbering): use relative
31726         numbering to support fast runtime type checks.
31727
31728 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31729
31730         * class.c (mono_class_create_from_typeref): added debugging output
31731         to print class name when MonoDummy is returned instead of real class
31732
31733 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31734
31735         * class.c (mono_class_metadata_init): interface offset table now
31736         contains pointers into the vtable - this is more efficient for the jit
31737
31738 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31739
31740         * class.c (mono_class_metadata_init): use a temporary vtable (the
31741         old algorithm only worked for the interpreter, but not for the jit)
31742
31743 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31744
31745         * loader.c (method_from_memberref): use mono_class_get to get the
31746         class of an array instead of using System.Array directly.
31747         (mono_get_method): also add MEMBERREF methods to the method cache
31748         which usefull for arrays.
31749
31750 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31751
31752         * pedump.c (arch_compile_method): added to compute vtable entry
31753
31754         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31755         number of interfaces.
31756         
31757         * class.h: merged MonoArrayClass into MonoClass
31758
31759         * class.c (mono_class_create_from_typedef): compute the vtable size and
31760         allocate space to include the vtable inside MonoClass
31761         (mono_class_metadata_init): initialize the vtable
31762
31763 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31764
31765         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31766         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31767         * image.c: endian fixes by Laurent Rioux.
31768         * object.h, object.c: rename MonoStringObject to MonoString and
31769         MonoArrayObject to MonoArray. Change some function names to conform to
31770         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31771         guint16* as first argument, so don't use char*.
31772         Provide macros to do the interesting things on arrays in a portable way.
31773         * threads-pthread.c: updates for the API changes and #include <sched.h>
31774         (required for sched_yield()).
31775         * icall.c: updates for the API changes above.
31776         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31777         platforms that need them.
31778
31779 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31780
31781         * class.c: set the correct type for all the fundamental
31782         type when loading the class.
31783
31784 2001-10-05  Dick Porter  <dick@ximian.com>
31785
31786         * threads-pthread.c (pthread_mutex_timedlock): Simple
31787         compatibility version for C libraries that lack this call.
31788
31789 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31790
31791         * class.c: MonoTypes stored in MonoClass are stored as
31792         fundamental MonoTypes when the class represents a
31793         fundamental type (System.Int32, ...).
31794         The TypeHandle return by ldtoken is a MonoType*.
31795         * icall.c: ves_icall_get_data_chunk () write out all the
31796         PE/COFF stuff. Implement ves_icall_define_method (),
31797         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31798         * image.c: properly skip unknown streams.
31799         * loader.h, loader.c: add type_class to mono_defaults.
31800         * metadata.c, metadata.h: export compute_size () as
31801         mono_metadata_compute_size () with a better interface.
31802         Typo and C&P fixes.
31803         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31804         * reflection.c, reflection.h: many cleanups, fixes, output method
31805         signatures and headers, typedef and typeref info, compress the metadata
31806         tables, output all the heap streams, cli header etc.
31807         * row-indexes.h: typo fixes.
31808
31809 2001-10-04  Dick Porter  <dick@ximian.com>
31810
31811         * object.h: Add a synchronisation mutex struct to MonoObject
31812
31813         * object.c (mono_new_object): Initialise the object
31814         synchronisation mutexes
31815
31816         * icall.c: System.Threading.Monitor internal calls
31817         
31818         * threads-pthread.h:
31819         * threads-pthread.c: System.Threading.Monitor internal calls
31820
31821         * threads-types.h: New file, includes the system-specific thread
31822         structures
31823         
31824         * threads-pthread-types.h:
31825         * threads-pthread-types.c: New files, handle pthread-specific
31826         synchronisation types
31827
31828         * threads-dummy-types.h: 
31829         * threads-dummy-types.c: New files of dummy support for
31830         thread-specific types
31831
31832         * metadata.c:
31833         * image.c:
31834         * pedump.c: include mono-endian.h not endian.h
31835         
31836         * Makefile.am: More threads files.
31837         Name mono-endian.h not endian.h
31838
31839 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31840
31841         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31842         stuff and implement a few more bits.
31843         * icall.c: a field needs to be dereferenced twice. Do not use the same
31844         name for two variables in the same scope.
31845         * image.c, image.h: cleanups.
31846
31847 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31848
31849         * class.c (mono_class_metadata_init): bug fix: compute the right size
31850
31851 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31852
31853         * icall.c: implemented some of the Reflection internalcalls.
31854         * image.c, image.h: start writing out the PE/COFF image.
31855         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31856         that does the reverse than decode_blob_size ().
31857         * object.c: use mono_metadata_encode_value (). Move here
31858         temporary implementation of mono_string_to_utf8 ().
31859         * rawbuffer.c: make malloc_map static.
31860
31861 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31862
31863         * metadata.c: fix type comparison for arrays.
31864         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31865         Added a couple of new classes to monodefaults.
31866         * icall.c: added a couple of Reflection-related internalcalls.
31867         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31868         Added a byval_arg MonoType to MonoClass.
31869
31870 2001-09-28  Dick Porter  <dick@ximian.com>
31871
31872         * icall.c:
31873         * threads-pthread.h: 
31874         * threads-pthread.c: Implemented internal calls for
31875         LocalDataStoreSlot operations.  Applied mutexes around all shared
31876         data.  Reworked the thread creation and Start() operations to
31877         avoid a race condition.
31878         
31879         * threads-dummy.h:
31880         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31881
31882 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31883
31884         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31885
31886 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31887
31888         * class.c, loader.c: warn and return NULL instead of erroring out.
31889         * icall.c: added System.AppDomain::getCurDomain().
31890         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31891
31892 2001-09-25  Dick Porter  <dick@ximian.com>
31893
31894         * threads-pthread.h:
31895         * threads-pthread.c: Implemented timed thread joining and added
31896         System.Threading.Thread::Join_internal internal call
31897
31898         * icall.c: Added System.Threading.Thread::Join_internal internal call
31899
31900         * threads-dummy.h:
31901         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31902
31903 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31904
31905         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31906         mono_string_intern () to implement the semantics of the ldstr opcode
31907         and the interning of System.Strings.
31908         * icall.c: provide hooks to make String::IsIntern and String::Intern
31909         internalcalls.
31910
31911 2001-09-23  Dick Porter  <dick@ximian.com>
31912
31913         * threads-dummy.c: 
31914         * threads-dummy.h: New files of dummy threading routines
31915
31916         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31917         support code based on system specifics
31918
31919         Rename PTHREAD_LIBS to THREAD_LIBS
31920         
31921 2001-09-23  Dick Porter  <dick@ximian.com>
31922
31923         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31924         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31925         internal calls.
31926         (mono_thread_init): Set up a Thread object instance to return when
31927         the main thread calls Thread.CurrentThread
31928         (mono_thread_cleanup): Wait for all subthreads to exit
31929
31930         * icall.c: New internal calls for System.Threading.Thread::Sleep
31931         (including Schedule) and CurrentThread
31932
31933         * threads.h: New file, to insulate thread-specific stuff from the
31934         rest of the code
31935
31936 2001-09-21  Dick Porter  <dick@ximian.com>
31937
31938         * threads-pthread.h: 
31939         * threads-pthread.c: New file, for handling pthreads-style
31940         threading support.  Start() now starts a new thread and executes
31941         the ThreadStart delegate instance.
31942
31943         * icall.c: Added the internalcall for
31944         System.Threading.Thread::Start_internal
31945
31946         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31947
31948 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31949
31950         * loader.c: work around the different signatures for delegates
31951         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31952
31953 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31954
31955         * class.h, class.c: add mono_class_get_field_from_name ().
31956         * *: Fix C comments and other ANSI C issues.
31957
31958 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31959
31960         * endian.h, assembly.c: fix some endianness issues.
31961
31962 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31963
31964         * loader.h, load.c: add delegate_class to mono_defaults.
31965         Handle runtime provided methods in mono_get_method ().
31966
31967 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31968
31969         * loader.c (mono_get_method): use pinvoke for internal call
31970
31971         * icall.c: use pinvoke for internal call
31972
31973         * loader.c (method_from_memberref): set the method name
31974
31975 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31976
31977         * metadata.c: help the compiler generate better code for
31978         mono_class_from_mono_type ().
31979
31980 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31981
31982         * class.c (mono_class_metadata_init): delayed computing of the
31983         class size to mono_class_metadata_init ()
31984
31985 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31986
31987         * class.c, class.h: add an interfaces member to MonoClass.
31988         * image.c, image.h: add assembly_name field to MonoImage
31989         from the assembly table.
31990         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31991
31992 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31993
31994         * class.c: Handle Array in mono_class_from_mono_type ().
31995         * metadata.c, pedump.c: some endian fixes.
31996
31997 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31998
31999         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
32000         * metadata.c: fix small problem introduced with the latest commit.
32001
32002 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
32003
32004         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
32005         We don't need a MonoMetadata pointer anymore to compare signatures in
32006         mono_metadata_signature_equal (), update callers.
32007         Reduced memory usage an number of allocations for MonoMethodHeader and
32008         MonoMethodSignature.
32009
32010 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
32011
32012         * metadata.c: added compare for szarray.
32013
32014 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
32015
32016         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
32017         and add a couple more types to it and mono_defaults. Give an hint on
32018         classes that need implementing in our corlib and are referenced
32019         in mscorlib.
32020
32021 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
32022
32023         * class.h, class.c: keep track if a class is also an Enum.
32024         * loader.c: Implement a couple more types for use in libffi
32025         marshalling. Gives better diagnostics when failing to dlopen
32026         a library. Set method->klass for P/Invoke methods, too.
32027
32028 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
32029
32030         * class.c, class.h: add a MonoType this_arg to MonoClass that
32031         represents a pointer to an object of the class' type that
32032         can be used by the interpreter and later the type cache.
32033         Add best guess alignment info for valuetype objects.
32034
32035 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
32036
32037         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
32038         into MonoType: one less level of indirection and allocation and
32039         simplifies quite a bit of code. Added cache for MonoTypes that are
32040         used frequently, so that we don't need to allocate them all the time.
32041
32042 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
32043
32044         * class.c (mono_class_create_from_typedef): System.Enum is also a
32045         value type, although it does not derive from System.ValueType
32046         (maybe a bug in the ms compiler?)
32047
32048         * metadata.c (mono_type_size): return the right size for value types
32049
32050         * loader.c (mono_get_method): only initialize method header if not abstract
32051
32052         * class.c (mono_class_from_mono_type): use mono_default values. 
32053
32054 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
32055
32056         * *: use MonoClass pointers instead of <type_tokens>
32057         
32058         * class.h: new flag: metadata_inited.
32059
32060         * class.c (mono_class_metadata_init): impl.
32061         (mono_class_instance_size): impl.
32062         (mono_class_data_size): impl.
32063
32064 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
32065
32066         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
32067         MonoClass now has the name and name_space fields. 
32068         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
32069         mono_get_method () takes and optional MonoClass as argument.
32070         Removed mono_typedef_from_name() and added mono_class_token_from_name()
32071         instead that takes advantage of a map from class names to typedef
32072         tokens in MonoImage.
32073
32074 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
32075
32076         * metadata.c: zero is not a valid alignment boundary.
32077         Merge MONO_TYPE_VOID in default decoding code.
32078
32079 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
32080
32081         * image.h: merged MonoMetadata into MonoImage
32082
32083         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
32084         identify the type of elements.
32085
32086 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
32087
32088         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
32089         * cil-coff.h: split MonoMSDOSHeader and add size info.
32090         * image.c: add some consistency checks.
32091         * metadata.c: fix row size computation: one programmer
32092         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
32093         add explanation for the locator routine.
32094         Fix decoding of size in method header.
32095         
32096 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
32097
32098         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
32099         (g_concat_dir_and_file): Bring g_concat_dir_and_file
32100         function from gnome-libs.  This uses the right path separator
32101         based on the OS, and also works around a bug in some systems where
32102         a double slash is not allowed. 
32103         (default_assembly_name_resolver): Use g_concat_dir_and_file
32104         (mono_assembly_open): ditto.
32105
32106 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
32107
32108         * metadata.c (mono_metadata_signature_equal): impl.
32109
32110         * *: void is now a realy MonoType (instead of using NULL)
32111         
32112         * metadata.c (do_mono_metadata_parse_type): use
32113         mono_metadata_parse_type to parse void value.
32114
32115 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
32116
32117         * metadata.c, metadata.h: in the signature and method header store
32118         only the space required for holding the loca vars and incoming arguments.
32119
32120 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
32121
32122         * metadata.c (do_mono_metadata_parse_type): treat void like any
32123         other type (instead of assigning NULL);
32124
32125 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
32126
32127         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
32128
32129 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
32130
32131         * image.c (do_mono_image_open): added a cache for arrays.
32132
32133 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
32134
32135         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
32136         decode a single column from a row in a metadata table and changes
32137         to take advantage of it in the typedef locator (gives a nice speed up).
32138         Store offset info for function params.
32139
32140 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
32141
32142         * image.h (MONO_IMAGE_IS_CORLIB): removed 
32143
32144 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
32145
32146         * assembly.c: how could mono_assembly_close () had ever worked?
32147         * metadata.c, metadata.h: provide offset info for local vars.
32148         Implement mono_type_size () to take care of alignment as well
32149         as size (it was mono_field_type_size in cli/class.c before).
32150
32151 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
32152
32153         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
32154
32155         * assembly.h (CORLIB_NAME): set to corlib.dll
32156
32157         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
32158
32159 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
32160
32161         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
32162         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
32163         tokentype.h: massive namespace cleanup.
32164
32165 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
32166
32167         * metadata.h, metadata.c: decode exception clauses when parsing method header.
32168
32169 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
32170
32171         * metadata.c (mono_metadata_free_type): added check for type !=
32172         NULL (void) before calling mono_metadata_free_type()
32173
32174 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
32175
32176         * metadata.h, row_indexes.h: added header with enumerations to use
32177         to index in the columns from tables in metadata and to decode coded
32178         tokens: we should start using this instead of embedding magic numbers
32179         all over the code.
32180
32181 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
32182
32183         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
32184         Move metadata_t info from cli_image_info_t to MonoImage, where
32185         it's easily accessible. Changed all the uses accordingly.
32186         Added the method and class caches to MonoImage.
32187         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
32188         and mono_metadata_decode_value () signature to be more consistent
32189         with the other parse functions (and simplify code). Taken advantage
32190         of zero-length array allocation with GCC. Removed reduntant (and
32191         wrong) MonoFieldType struct and use MonoParam instead. Changed
32192         mono_metadata_parse_field_type () to use common code for parsing.
32193         Added mono_metadata_typedef_from_field () and
32194         mono_metadata_typedef_from_method () to lookup a typedef index from a
32195         field or method token.
32196         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
32197
32198 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
32199
32200         * metadata.c (mono_metadata_parse_field_type): Implement. 
32201         (do_mono_metadata_parse_type): Split engine from
32202         mono_metadata_parse_type, so that we can create smaller structures
32203         for things that just have one pointer to the MonoType (look at
32204         the MonoFieldType)
32205
32206 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
32207
32208         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
32209         as Jan Gray found out, it is incorrect. 
32210
32211 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
32212
32213         * assembly.c: Implement asssembly loading.  This loads an image
32214         and loads all the referenced assemblies.  Come to think of it, we
32215         could always do lazy loading of the assemblies. 
32216
32217         * image.c (mono_image_open): Keep loaded images in a hashtable.
32218
32219         * image.h (MonoImage): Add reference count.
32220
32221 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
32222
32223         * assembly.c (mono_assembly_open): Keep track of the file name in
32224         case the assembly has no ASSEMBLY table.
32225
32226         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
32227         from get.c here.
32228
32229 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
32230
32231         * metadata.c, metadata.h: decode local vars in method header
32232         parse function. Change callers accordingly.
32233
32234 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
32235
32236         * metadata.h, cil-coff.h: protect against multiple inclusion.
32237         Added some new structures to hold information decoded from metadata:
32238         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
32239         and relevant decoding/free functions.
32240         * metadata.c: implement decoding functions. Add warning for out of bounds
32241         index in mono_metadata_locate(). Implement mono_get_method () to retreive
32242         all the info about a method signature and invocation. Remove check on
32243         uninitialized local var in parse_mh() and fix memory leak.
32244
32245 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
32246
32247         * metadata.h: More macros.
32248
32249         * tokentype.h: New file.
32250
32251 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
32252
32253         * assembly.c: added a consistency check and initialize
32254         some structures with g_new0().
32255         * metadata.c: fixed a couple more bugs in table size computation
32256         and add other checks for out-of bound access to metadata.
32257
32258 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
32259
32260         * metatada.c: fix bugs computing table sizes. Spew a
32261         warning when index in string heap is out of bounds.
32262
32263 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
32264
32265         * metadata.h: Add a couple of macros to manipulate tokens. 
32266
32267 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
32268
32269         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
32270         cli_section_tables).
32271
32272 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
32273
32274         * metadata.c (mono_metadata_user_string): New function, provides
32275         access to the UserString heap. 
32276
32277 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
32278
32279         * metadata.c: Add inline documentation.
32280
32281 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
32282
32283         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
32284         files. 
32285
32286 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
32287
32288         * typeattr.h: New file, TypeAttribute flags. 
32289
32290 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
32291
32292         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
32293         mono_assembly_ensure_section): Section loading code.
32294         (load_section_tables): Load the sections.
32295
32296         * mono/metadata/metadata.c (mono_metadata_locate_token,
32297         mono_metadata_locate): Functions to locate the information
32298         definition given a token or a table and an index.
32299         (mono_metadata_compute_table_bases): New.
32300         (compute_size): New function to compute the sizes of the various
32301         tables.
32302
32303         * mono/metadata/metadata.h: Finish listing the different index
32304         types. 
32305
32306         * mono/metadata/pedump.c: Improve to dump new information.
32307
32308 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
32309
32310         * mono/metadata/metadata.c: Entered all the tables matching
32311         Beta2. 
32312
32313         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
32314
32315
32316
32317