Do TLS using pthreads if __thread keyword not supported.
[mono.git] / mono / metadata / ChangeLog
1 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2
3         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
4         supported.
5
6 2009-06-04  Mark Probst  <mark.probst@gmail.com>
7
8         * sgen-gc.c: Disable TLA and managed allocation if the __thread
9         keyword is not supported.
10
11 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
12
13         * marshal.c (get_wrapper_target_class): New helper function.
14         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
15         the <Module> class of the image. Fixes #509049.
16
17 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
18
19         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
20         Check if the thread was interrupted and proccess it straight away.
21         Makes abortion much more responsive.
22
23 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
24
25         * threads.c (mono_thread_execute_interruption): Use atomic cas with
26         MonoThread::interruption_requested to match it's counterpart.
27
28         Fixes a hang in abort-stress-1 on a 2 core x86.
29
30         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
31         Fix warning.
32
33 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
34
35         Change MonoImage::name_cache to be protected by the image lock
36         instead of the loader lock.
37
38         * appdomain.c (deregister_reflection_info_roots): Protect access
39         to name_cache.
40
41         * class.c (mono_image_init_name_cache): Change from the loader lock
42         to the image lock. Check if the cache wasn't already created.
43
44         * class.c: Change from the loader to the image lock.
45
46         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
47         the code to hold the image lock while iterating over name_cache and
48         not go into mono_array_new holding it.
49
50         * metadata-internals.h: Add a comment about this change.
51
52 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
53
54         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
55         Under the 2.0 profile raise the loader error.
56
57         Fixes #508532.
58
59 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
60
61         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
62         of ldind opcode for generic instances so we don't fail for direct wrappers.
63         This only affect direct calls.
64
65 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
66
67         * reflection.c (create_dynamic_mono_image): Fix warnings.
68
69         * generic-sharing.c (other_info_equal): Ditto.
70         
71 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
72
73         * metadata-verify.c: Implement field signature check.
74
75 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
76
77         * metadata-verify.c: Implement standalone signature check.
78
79 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
80
81         * metadata-verify.c: Implement methodref signature check.
82
83 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
84
85         * object-internals.h (MonoRuntimeCallbacks): New structure containing
86         callbacks supplied by the runtime.
87
88         * object.c (mono_install_callbacks): New internal function to install
89         the callbacks.
90
91         * object.c (mono_create_ftnptr): Move the implementation of this to
92         mini/.
93
94         * object.c (mono_get_addr_from_ftnptr): Ditto.  
95
96 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * metadata-verify.c (parse_return_type): Proper byref check.
99         * metadata-verify.c (is_valid_method_signature): Check for zero arity
100         generic signatures and method params.
101
102 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
103
104         * metadata-verify.c (decode_signature_header): Fix bounds check.
105
106         * metadata-verify.c (parse_custom_mods): Check custom mods.
107
108         * metadata-verify.c (parse_type): Do initial basic verification
109         of valid values.
110         
111         * metadata-verify.c (is_valid_method_signature): Parse the generic
112         param count.
113
114 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
115
116         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
117         discarded based on their most specific definition so we set the method_slots
118         array before checking if the method is acceptable or not.
119
120         Fixes #506757.
121
122 2009-05-26  Mark Probst  <mark.probst@gmail.com>
123
124         * icall.c: Free the old array when resizing a mono_ptr_array.
125
126 2009-05-26  Mark Probst  <mark.probst@gmail.com>
127
128         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
129         for the hashes whose keys are managed objects.
130
131 2009-05-26  Mark Probst  <mark.probst@gmail.com>
132
133         * object-internals.h, threads.c: Set the execution context on
134         thread start here, not in corlib.
135
136         * appdomain.c: Bump corlib version.
137
138 2009-05-27  Martin Baulig  <martin@ximian.com>
139
140         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
141         if `_mono_debug_using_mono_debugger' is set to make things work
142         properly when embedding Mono.
143
144 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
145
146         * class.c (mono_class_setup_fields): Don't mark simd types as having
147         16 bytes alignment as the whole runtime doesn't support.
148
149 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
150
151         * metadata-verify.c (safe_read): Use endian safe read macros.
152
153 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
154
155         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
156         it is read-only when using full aot.
157
158 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
159
160         * metadata-verify.c (is_valid_method_signature): Verify parts
161         of the return type. Provide an error message in case of failure.
162
163 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
164
165         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
166
167 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
168
169         * metadata-verify.c: Include the size prefix in the bounds check.
170
171 2009-05-22  Miguel de Icaza  <miguel@novell.com>
172
173         * icall.c: Remove warnings.
174
175         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
176         prevent auto-detection based on GCC defines.
177
178         Add PS3
179
180         * metadata-verify.c: Do not include signal.h
181
182         * generic-sharing.c, marshal.c: Add returns to avoid some warning
183         messages.  Not sure why the g_assert_not_reached is not enough to
184         quiet the compiler.
185         
186
187         * appdomain.c: Remove code that is not used when
188         DISABLE_SHADOW_COPY is set.
189
190         * image.c: use g_getenv
191
192 2009-05-21  Miguel de Icaza  <miguel@novell.com>
193
194         * reflection.c: Remove code that it not used with
195         DISABLE_REFLECTION_EMIT is defined.
196
197 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
198
199         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
200         invoke wrappers.
201
202 2009-05-20  Miguel de Icaza  <miguel@novell.com>
203
204         * socket-io.c
205         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
206         the ifdef here and instead put that on io-layer
207
208 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * metadata-verify.c: Verify the generic param constraint table.
211
212 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
213
214         * metadata-verify.c (verify_generic_param_table): Fix
215         thinko on the valid flags bits for generic params.
216
217 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
218
219         * metadata-verify.c: Verify the methodspec table.
220
221 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
222
223         * metadata-verify.c: Verify the generic param table.
224
225 2009-05-19  Mark Probst  <mark.probst@gmail.com>
226
227         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
228
229 2009-05-19  Mark Probst  <mark.probst@gmail.com>
230
231         * sgen-gc.c: Use generation enum more consistently and use the
232         correct generation in mono_gc_register_for_finalization().
233
234 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
235
236         * metadata-verify.c: Verify the nested class table.
237
238 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
239
240         * metadata-verify.c: Verify the manifest resource table.
241
242 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
243
244         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
245
246 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
247
248         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
249         wrappers, this is now done in the JIT.
250         
251         * class.c (mono_set_generic_sharing_supported): New internal function.
252         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
253
254 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
255
256         * metadata-verify.c: Verify the exported type table.
257
258 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
261
262 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
263
264         * metadata-verify.c: Verify the file table.
265
266 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
267
268         * metadata-verify.c (verify_assembly_table): Fix an error message.
269
270         * metadata-verify.c: Verify the assemblyref table.
271
272 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
273
274         * metadata-verify.c (verify_assembly_table): Fix the valid
275         bits mask for flags.
276
277 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
278
279         * debug-helpers.c (mono_method_full_name): Print generic parameters of
280         generic methods as well.
281
282 2009-05-15  Geoff Norton  <gnorton@novell.com>
283
284         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
285         use-case and is significantly more performant than the wapi layer.
286
287 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
288
289         * metadata-verify.c: Verify the assembly table.
290
291 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
292
293         * metadata-verify.c: Fix rows limit check.
294
295 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
296
297         * metadata-verify.c: Verify the fieldrva table.
298
299 2009-05-13  Mark Probst  <mark.probst@gmail.com>
300
301         * sgen.c: Speed up weak links and finalizers by grouping them by
302         generation.
303
304 2009-05-13  Mark Probst  <mark.probst@gmail.com>
305
306         * marshal.c (delegate_hash_table_add): When overwriting an entry,
307         free the old GCHandle (only applies to SGen).
308
309 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
310
311         * loader.c (mono_get_method_from_token): Avoid the expensive call to
312         mono_metadata_load_generic_params () for non-generic methods.
313
314 2009-05-12  Mark Probst  <mark.probst@gmail.com>
315
316         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
317         New function for returning a monitor's weak link if it has one.
318
319         * sgen-gc.c: Remove an object's monitor's weak link (if it has
320         one) when clearing a domain.  These can still be around because
321         the object might not have been collected.
322
323 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
324
325         * gc.c: Fix a warning.
326
327 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
328
329         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
330         prevous wait that resulted in a deadlock on Windows when initializing
331         the runtime form DllMain. Also results in improved startup time.
332         (finalizer_thread): Get rid of thread_started_event.
333         * threads.c, threads-types.h (mono_thread_create_internal): Return the
334         resulting MonoThread.
335
336         Contributed under MIT/X11 license.
337
338 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
339
340         * metadata-verify.c: Verify the implmap table.
341         Don't require that #US and #Strings be present.
342
343 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
344
345         * security-core-clr.c: Delegate checks are done at creation time,
346         not a invocation time. Fix exception for Telerik Silverlight demo
347
348 2009-05-11  Mark Probst  <mark.probst@gmail.com>
349
350         * sgen-gc.c (need_remove_object_for_domain): Remove the special
351         case for the Thread class.
352
353         * threads.c: Do clean-up of abort exception/state in
354         thread_cleanup() instead of Thread.free_internal().  Also clean up
355         current_appcontext.  The reason we have to do that is because
356         those references might point into another domain and if that
357         domain is unloaded before the thread is finalized, they point to
358         invalid data.
359
360 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
361
362         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
363         stub signatures.
364         
365         Contributed unter MIT/X11 license.
366
367 2009-05-09  Miguel de Icaza  <miguel@novell.com>
368
369         * verify.c, metadata-verifier.c: Add support for disabling the
370         verifier in some builds.
371
372         [ Sorry, my previous commit accidentally commited some work in
373         progress ]
374
375 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
376
377         * class.c (mono_class_setup_fields): Set class->field.first for
378         generic instances.
379
380 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * metadata-verify.c: Verify the typespec table.
383
384 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * metadata-verify.c: Verify the module table.
387
388 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
389
390         * metadata-verify.c: Verify the methodimpl table.
391
392 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
393
394         * metadata-verify.c: Verify the property table.
395
396 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
397
398         * debug-helpers.c (mono_method_desc_match): Add support for generic
399         glob patterns.
400
401 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
402
403         * metadata-verify.c: Verify the propertymap table.
404
405 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
406
407         * metadata-verify.c: Verify the event table.
408
409         * metadata-verify.c (search_sorted_table): Fix offset
410         calculation.
411
412 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
413
414         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
415
416 2009-05-01  Mark Probst  <mark.probst@gmail.com>
417
418         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
419         because mono_delegate_free_ftnptr() needs it.
420
421 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
422
423         * metadata-verify.c: Verify the eventmap table.
424
425 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
426
427         * metadata-verify.c: Verify the standalonesig table.
428
429 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
430
431         * metadata-verify.c: Verify the field layout table.
432
433 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
434
435         * class.c (mono_type_get_name_recurse): Don't crash
436         for ownerless generic params.
437
438         * debug-helpers.c (mono_type_get_desc): Correct the format
439         for ownerless generic params.
440
441 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
442
443         * metadata-verify.c: Verify the class layout table.
444
445 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
446
447         * metadata-verify.c: Verify the decl security table.
448
449 2009-04-30  Mark Probst  <mark.probst@gmail.com>
450
451         * domain.c (mono_domain_set_internal_with_options): Don't do
452         anything if the old domain is the same as the old one.  Fixes
453         #499326.
454
455 2009-04-30  Mark Probst  <mark.probst@gmail.com>
456
457         * appdomain.c: Deregister the reflection_info roots when unloading
458         a domain.
459
460         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
461         memory allocated by a domain and frees its disappearing links.
462
463         * boehm-gc.c, null-gc.c: Empty implementation of
464         mono_gc_clear_domain().
465
466 2009-04-30  Mark Probst  <mark.probst@gmail.com>
467
468         * appdomain.c (clear_cached_vtable): Free the static fields memory
469         block.
470
471 2009-04-30  Mark Probst  <mark.probst@gmail.com>
472
473         * gc.c: Set the correct domain when invoking finalizers.
474
475         * appdomain.c: Set the correct domain when creating threads.
476
477 2009-04-30  Mark Probst  <mark.probst@gmail.com>
478
479         * sgen-gc.c: Fix skip size for vectors.
480
481 2009-05-03  Martin Baulig  <martin@ximian.com>
482
483         * mono-debug-debugger.c
484         (mono_debugger_check_breakpoints): Check class init handlers even
485         if we don't have any method load handers.
486
487 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
488
489         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
490         returning refonly assemblies if refonly is FALSE. Fixes #499013.
491
492 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * metadata-verify.c: Verify the field marshal table.
495
496 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * metadata-verify.c: Verify the custom attribute table.
499
500 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
501
502         * metadata-verify.c: Verify the constant table.
503
504 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
505
506         * metadata-verify.c: Verify the memberef table.
507
508 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
509
510         * metadata-verify.c (get_coded_index_token): Remove
511         dead argument.
512
513 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
514
515         * metadata-verify.c: Verify the interfaceimpl table.
516
517 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
518
519         * verify.c: Improve error message.
520
521         * debug-helpers.c (mono_type_get_desc): Harden the code that
522         deals with VAR and MVAR.
523
524 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
525
526         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
527         part of #498692.
528
529 2009-04-23 Tom Hindle <tom_hindle@sil.org>
530
531         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
532         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
533
534 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
535
536         * security-core-clr.c: Avoid redundant checks for platform code, 
537         e.g. check for method and for class (very common) and check
538         for class and outer class (less common)...
539
540 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
541
542         * reflection.c: Avoid returning random cattrs for synthetic methods.
543         Fixes #498545.
544
545 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
546
547         * assembly.c: assemblies in the GAC should never be shadow-copied.
548
549 2009-04-26  Mark Probst  <mark.probst@gmail.com>
550
551         * domain.c, domain-internals.h: Disable
552         track_resurrection_{objects,handles}_hash in MonoDomain if using
553         SGen.
554
555 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
556
557         * metadata-verify.c: Verify the param table.
558
559 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
560
561         * metadata-verify.c (verify_typedef_table): Range check FieldList and
562         MethodList.
563
564         * metadata-verify.c (verify_method_table): Proper check the ParamList
565         field.
566
567 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
568
569         * metadata-verify.c (verify_method_table): Check for runtime
570         implemented functions such as delegate .ctors. Remove spurious
571         printf.
572         
573 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
574
575         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
576
577 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
578
579         Don't allocate MonoGenericInfo for ownerless generic params.
580         * class-internals.h (MonoGenericParam::info): Move field to ...
581         (MonoGenericParamFull): ... this.  New struct.
582         (MonoGenericContainer::type_params): Change type to
583         MonoGenericParamFull.
584         (MonoGenericParam, MonoGenericContainer): Update accessors.
585         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
586         'info' field for ownerless generic param.
587         (mono_metadata_load_generic_params): Update to changes.
588         * reflection.c (mono_reflection_create_generic_class): Likewise.
589         (reflection_methodbuilder_to_mono_method): Likewise.
590         (mono_reflection_initialize_generic_parameter): Likewise.
591
592 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
593
594         Don't use MonoGenericParamInfo for ownerless generic params.
595         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
596         use ParamInfo class at all.
597         (mono_class_from_generic_parameter): Use them.
598         (make_generic_param_class): Fix a couple of instances where 'pinfo
599         == NULL' wasn't handle.
600
601 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
602
603         * class.c (make_generic_param_class): Carve out of ...
604         (mono_class_from_generic_parameter): ... here.
605
606 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
607
608         Simplify mono_class_from_generic_parameter
609         * class-internals.h (MonoGenericParamInfo::token): New field.
610         * metadata.c (mono_metadata_load_generic_params): Initialize it
611         from metadata.
612         * class.c (mono_class_from_generic_parameter): Use it instead of
613         searching through metadata.
614
615 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
616
617         * metadata-verify.c: Add verification of the method table.
618
619 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
620
621         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
622         Delegate::Invoke optimization.
623
624 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
625
626         * appdomain.c (mono_domain_create_appdomain_internal): Free the
627         string returned by get_shadow_assembly_location_base.
628
629         * appdomain.c (get_shadow_assembly_location_base): Add a comment
630         about caller's ownership.
631
632 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
633
634         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
635         reflection memory on domain unload.
636
637         * domain.c (mono_domain_free): Don't free refobject_hash, let the
638         reflection cleanup code do it.
639
640         * domain-internals.h: Add mono_reflection_cleanup_domain.
641
642         This fixes a memory leak for managed mirrors of reflection objects
643         on domain unload. 
644
645 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
646
647         * metadata-verify.c: Implement more verification of the field table.
648
649 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
650
651         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
652         doesn't try to parse the input assembly, which can be broken.
653
654 2009-04-23  Mark Probst  <mark.probst@gmail.com>
655
656         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
657         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
658         by using the lowest bit in the link to store whether the link is
659         tracked.  Move the track_resurrection hashes into boehm-gc.c.
660
661 2009-04-22  Miguel de Icaza  <miguel@novell.com>
662
663         * Makefile.am: Split the console support in platform specific code
664         and put together a framework for making this easy in the future so
665         that we can start splitting code instead of having a mess of PLATFORM_WIN32
666
667 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
668
669         * pedump.c: Fix a warning.
670
671 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * verify.c (mono_delegate_type_equal): Compare valuetypes using
674         mono_class_from_mono_type to avoid bad interactions with the dual representation
675         of the generic type definition.
676
677 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
678
679         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
680         get the MonoClass for the call context type as it might be a generic
681         instance.
682
683         Fixes #491483.
684
685 2009-04-21  Mark Probst  <mark.probst@gmail.com>
686
687         * object-internals.h: The Thread object has no execution_context
688         member anymore.
689
690         * threads.c, threadpool.c, threads-types.h: Accessor functions for
691         the execution context.
692
693         * appdomain.c: Bump corlib version.
694
695 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
696
697         * verify.c (do_newobj): Improve error message.
698
699 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
700
701         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
702         is nested in the filter block.
703
704         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
705         block is not fully nested.
706
707         Fixes #495656.
708
709 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
710
711         * verify.c (verify_type_compatibility_full): Compare MonoClass and
712         not MonoType to check for equality of valuetypes as the generic type
713         definition allows for two different encodings: the generic type definition
714         class or a generic instance over the GTD arguments.
715
716         Fixes #496175.
717
718 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
719
720         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
721
722         * verify.c (do_initobj): Improve error message.
723
724 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
725
726         * metadata-verify.c: Enable pe verification as the issue with #496453
727         is that the authenticode data directory have a different unspecified
728         format. Ignore it for now.
729
730         * pedump.c: Run the metadata verifier together with the IL verifier.
731
732         Fixes ##496453.
733
734 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
735
736         * metadata-verify.c: Temporarily disable pe verification due to #496453.
737
738 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
739
740         * class.c (can_access_type): Check visibility against
741         the element type for pointers and arrays.
742
743         Fixes #496150.
744
745 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * metadata-verify.c: Fix cli and table verification to use information
748         from the MonoImage. A lot of duplicated code got killed.
749
750 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
751
752
753         This patch starts to integrate the metadata verifier with the runtime code.
754
755         This patch causes major regression in functionality for the metadata verifier
756         as cli and table verification are disabled since they require to be ported to
757         use MonoImage information.
758
759         * image.c (do_mono_image_load): Split the code in this function
760         into mono_image_load_pe_data and mono_image_load_cli_data.
761         Add     care_about_pecoff parameter to not load pecoff data.
762         Call into the metadata verifier for pecoff and cli verification.
763
764         * image.c (mono_image_open_raw): New function that doesn't perform
765         any parsing of the image contents.
766         
767         The reason for the 3 new functions is to give pedump better control
768         into the interaction with the verifier.
769
770         * metadata-internals.h: Add new functions from image.c as part of the
771         internal mono API.
772
773         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
774         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
775         to make those functions work together with the runtime.
776
777         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
778         true if the image needs to be verified.
779
780         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
781
782         * pedump.c: Use new metadata verifier API.
783
784 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
785
786         * object.c (mono_install_vtable_trampoline): Make this receive a
787         trampoline creation function instead of trampoline, allowing the JIT
788         to use a different trampoline for each vtable.
789
790 2009-04-18  Mark Probst  <mark.probst@gmail.com>
791
792         * object.c (mono_raise_exception): Don't reset the thread abort
793         exception state here.
794
795 2009-04-18  Mark Probst  <mark.probst@gmail.com>
796
797         * icall-def.h: New icall for getting the thread abort exception
798         state for a thread.
799
800         * object.c, thread.c, object-internals.h: A thread's abort
801         exception state is now a GC handle.  To get the object it stands
802         for, we must move it into the current app domain, if it's
803         different than the one where it originated from.
804
805         * appdomain.c: Bump corlib version.
806
807         * domain.c, domain-internals.h: New function for setting the
808         domain and migrate the thread abort exception or not.
809
810 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
811
812         * metadata-verify.c: Add initial verification of the
813         field table.
814
815 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
816
817         * metadata-verify.c: Add a macro to conditionally enable
818         dumping of verification information. Add  make_coded_token
819         and search_sorted_table to enable search sorted tables
820         by a given coded token.
821
822 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
823
824         * metadata-verify.c: Add array mapping from table index
825         to description offset. Add get_col_offset and get_col_size
826         functions.
827
828 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
829
830         * metadata-verify.c: Add remaining table descriptions offsets.
831         Add remaining coded index descriptions.
832
833 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
834
835         * metadata-verify.c: Fixed constant table description.
836         Fixed calculation of HasCustomAttribute coded index size.
837         Fixed calculation of size for many table indexes. 
838
839 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
840
841         * pedump.c (dump_metadata): Dump table offset instead
842         of useless pointer in memory.
843
844 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
845
846         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
847
848 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
851         a missing of for interface types.
852
853 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
854
855         * metadata-verify.c (verify_pe_optional_header): Add comment of why
856         the code is commented.
857
858         * metadata-verify.c (verify_resources_table): Remove spurious printf
859         and don't fail if there are unmanaged resources. Gmcs generates a useless
860         one     for all assemblies - I bet it's some MS compatibility junk.
861
862 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
863
864         * metadata-verify.c (verify_typedef_table): Verify the extends field.
865
866         * metadata-verify.c (mono_image_verify): Add a is_corlib.
867
868         * verify-internals.h: Same.
869
870         * pedump.c: Fix for mono_image_verify new signature.
871
872 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
873
874         * metadata-verify.c (verify_typedef_table): Verify for some invalid
875         flags combinations.
876
877 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
878
879         * metadata-verify.c (verify_module_table): Ignore the generation field.
880
881 2009-04-15  Martin Baulig  <martin@ximian.com>
882
883         * debug-mono-symfile.c
884         (mono_debug_symfile_lookup_location): Don't print a warning for
885         unknown extended opcodes if they're within 0x40 and 0x7f.
886
887 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
888
889         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
890         invoke signatures returning an enum. Fixes #494847.
891
892 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
893
894         * metadata-verify.c: Initial code to verify the typedef table.
895
896 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
897
898         * verify.c (mono_method_verify): Don't fail if an unconditional branch
899         with non empty stack happens before the beginning of a try block.
900
901         Fixes #494812.
902
903 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * metadata-verify.c: Verify typename and typenamespace fields of
906         the typeref table.
907
908 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
909
910         * metadata-verify.c: Initial code to verify the typeref table.
911
912 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
913
914         * verify.c (verify_delegate_compatibility): Fix error message.
915
916 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
917
918         * security-core-clr.c: Fix typo
919
920 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
921
922         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
923         a MonoGHashTable to keep its values alive.
924         (emit_marshal_boolean): Fix a warning.
925
926 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
927
928         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
929         not have any interface configured for IPv4/IPv6.
930
931 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
932
933         * assembly.c: fix typo in error message.
934
935 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
936
937         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
938         allocating the location holding the this argument to prevent
939         'too many root sets' errors.
940
941         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
942         to mark fields as special static.
943         (mono_field_static_get_value): Handle special static fields.
944         (mono_field_static_set_value): Ditto.
945
946         * class-internals.h (struct _MonoClassField): Document this.
947
948 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
949
950         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
951           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
952           case.  This will handle when managed code returns null to native code.
953
954         Code is contributed under MIT/X11 license.
955
956 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
957
958         * object.c (build_imt_slots): Changing a free to a g_free to match
959           the g_malloc0 in add_imt_builder_entry that allocated this memory.
960
961         Code is contributed under MIT/X11 license.
962
963 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
964
965         * marshal.c (emit_marshal_boolean): Adding code to ensure that
966           the correct TRUE value is passed through the marshaling layer.
967
968         Code is contributed under MIT/X11 license.
969
970 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
971
972         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
973         correctly. Fixes #492330.
974         
975         * marshal.c: Fix the embedding of object pointers into JITted code in
976         the native-to-managed wrappers by allocating some GC tracked memory, and
977         embedding the address of that.
978
979 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
980
981         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
982         pointers into the vtable.
983
984 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
987
988         * verify.c (verify_ldftn_delegate): Improve error message.
989
990 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
991
992         * reflection.c (my_mono_class_from_mono_type): Remove.
993
994 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
995
996         Prepare to reduce memory usage of owner-less generic parameters (1/n)
997         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
998         and constraints fields into ...
999         (MonoGenericParamInfo): ... this.
1000         (mono_generic_param_info, mono_generic_container_get_param_info):
1001         New accessors.
1002         * class.c, debug-helpers.c, icall.c: Update to changes.
1003         * metadata.c, reflection.c, verify.c: Likewise.
1004
1005 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
1008
1009         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
1010         
1011         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
1012         booleans with sbytes.
1013
1014 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1015
1016         * class.c (can_access_instantiation): Verify accesibility of element types
1017         for arrays and pointers.
1018
1019         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
1020
1021         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
1022
1023         Fixes #493068.
1024
1025 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
1026
1027         * verify.c (do_invoke_method): Improve error messages.
1028
1029 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
1030
1031         * verify.c:  Fixing the MSVC build.
1032
1033         Code is contributed under MIT/X11 license.
1034
1035 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
1036
1037         * security-core-clr.c: Simplify get_reflection_caller not to call
1038         mono_method_get_last_managed (another stack walk) and adjust the
1039         callers to handle a (should not happen) NULL return value.
1040
1041 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1042
1043         Add accessors to some MonoGenericParam fields
1044         * class-internals.h (mono_generic_param_owner): New accessor.
1045         (mono_generic_param_num): Likewise.
1046         (mono_type_get_generic_param_owner): New helper.
1047         (mono_type_get_generic_param_num): New helper.
1048         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
1049
1050 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1051
1052         * class-internals.h (mono_generic_container_get_param): New wrapper.
1053         * class.c, icall.c, metadata.c, verify.c: Use it.
1054
1055 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
1056
1057         Fix gtest-252.cs
1058         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
1059         the standard case/loop.  In particular, don't complain about
1060         references to generic type definitions.
1061
1062 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * debug-helpers.c (dis_one): Decode string arguments.
1065
1066 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1067
1068         * pedump.c (dump_verify_info): Dump type name correctly.
1069
1070 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
1073         are larger than code size.
1074
1075         This can happen in valid code if the try/catch block is not followed by any instruction
1076         and do a backward branch on the leave instruction.
1077
1078         Fixes #492494.
1079
1080 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
1081
1082         * security-core-clr.c: Fix typo while comparing second method names
1083         in can_avoid_corlib_reflection_delegate_optimization
1084
1085 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1086
1087         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
1088
1089         Fixes #487738.
1090
1091 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
1092
1093         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
1094         a MVAR using a class context.
1095
1096         Fixes #490335.
1097
1098 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
1099
1100         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
1101
1102         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
1103
1104         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
1105         functions supplied by the JIT for the SGEN GC.
1106
1107         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
1108         
1109 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1110
1111         monitor.c (mono_monitor_try_enter_internal):
1112         Added calls to profile monitor contentions.
1113         Also duplicated a small piece of code (the "get the monitor" logic)
1114         from the fast path to the slow path, and changed the relevant goto
1115         statements, so that monitor acquisition events can be emitted from the
1116         slow path (this is by Paolo Molaro).
1117
1118 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
1119
1120         * profiler.c, profiler.h, profiler-private.h:
1121         Added support for profiling monitor contentions.
1122
1123 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
1124
1125         * metadata-verify.c: Verify the modules table.
1126
1127 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
1128
1129         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
1130         using the context of the method been verifier and not of the method been called.
1131
1132         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
1133         safely inflate generic types. 
1134
1135 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1136
1137         * security-core-clr.c: Change the strategy for checking the 
1138         "reflection using delegates optimization" to avoid unneeded 
1139         attributes in multiple class libraries.
1140
1141 2009-04-02  Mark Probst  <mark.probst@gmail.com>
1142
1143         * sgen-gc.c: Remove object element in the disappearing link struct
1144         by storing the object pointer in the link.
1145
1146 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1147
1148         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
1149
1150 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1151
1152         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
1153
1154         * verify.c (mono_method_verify): Do proper bounds checking of exception
1155         clause ranges.
1156
1157 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1158
1159         * loader.c (mono_field_from_token): Don't crash if the field parent could
1160         not be decoded.
1161
1162 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1163
1164         * sgen-gc.c: Execute critical finalizers after ordinary
1165         finalizers.
1166
1167         * class-internals.h, domain.c: Add CriticalFinalizerObject to
1168         mono_defaults.
1169
1170 2009-03-31 Jb Evain <jbevain@novell.com>
1171
1172         * verify.c (do_ldstr): don't check if a string is in the user strings
1173         heap if the current image is dynamic.
1174
1175 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1176
1177         * sgen-gc.c: Wait until the last finalizer has executed when
1178         returning from WaitForPendingFinalizers.
1179
1180 2009-03-31  Martin Baulig  <martin@ximian.com>
1181
1182         * mono-debug-debugger.h (MonoDebuggerEvent): Add
1183         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
1184         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
1185         (mono_debugger_event_create_appdomain): New function.
1186         (mono_debugger_event_unload_appdomain): New function.
1187
1188         * appdomain.c (mono_domain_create_appdomain_internal): Call
1189         mono_debugger_event_create_appdomain().
1190
1191 2009-03-31  Martin Baulig  <martin@ximian.com>
1192
1193         * mono-debug-debugger.c
1194         (mono_debugger_register_class_init_callback): Also register the
1195         class init callback if the class is already initialized to make
1196         things work with shadow copied assemblies.
1197
1198 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
1199
1200         * security-core-clr.c
1201         (mono_security_core_clr_ensure_reflection_access_field): Let 
1202         critical code access the field (just like we do for methods). Use
1203         check_field_access helper.
1204         (mono_security_core_clr_ensure_reflection_access_method): Use 
1205         check_field_access helper.
1206
1207 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1208
1209         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
1210         call the run-finalize function directly.
1211
1212         * gc.c, gc-internal.h: Make run_finalize() non-static.
1213
1214 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1215
1216         * sgen-gc.c: Use a separate struct for disappearing links.
1217
1218 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1219
1220         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
1221         * MaxIOVectorLength enabled, just ignore them.
1222         Fixes bug #349688.
1223
1224 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1225
1226         * metadata-verify.c: Fix eglib build.
1227
1228 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * threads-types.h: Fix the win32 build.
1231
1232 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
1233
1234         * class.c: move coreclr inheritance/override checks to 
1235         security-core.clr.c
1236         * security-core.clr.c|h: add code from class.c with additional
1237         documentation. Fix override check when the method is not critical.
1238
1239 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
1242         (match_class): Ditto.
1243
1244 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1245
1246         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
1247
1248         * metadata-verify.c: Implement table layout row size calculation. Verify
1249         the total size of the tables.
1250
1251 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1252
1253         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1254
1255 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1256
1257         * appdomain.c:
1258         * console-io.[ch]: added new mono_console_init() to make sure that
1259         file descriptors 0, 1 and 2 are opened.
1260         Bug #489019 fixed.
1261
1262 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1263
1264         * appdomain.h: Export a new callback type and a new function to
1265         set this callback. This allow a mono host to provide it's own
1266         definition for "platform code".
1267         * metadata-internals.h: Add a core_clr_platform_code flag on 
1268         _MonoImage to (cache and) know if it is representing platform 
1269         code.
1270         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1271         on platform code images.
1272         * security-core-clr.c|h 
1273         (mono_security_set_core_clr_platform_callback): Allow the host
1274         to provide it's own platform check definition.
1275         (mono_security_core_clr_determine_platform_image): Detect if an 
1276         image is platform code (using the specified callback).
1277         (mono_security_core_clr_is_platform_image): Return cached value 
1278         for platform code.
1279
1280 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1283         which has different parameter types for the 'tid' argument in windows and
1284         the io-layer.
1285
1286         * appdomain.c attach.c threads.c: Use the new helper.
1287
1288 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1289
1290         * metadata-verify.c: Verify valid table bits.
1291
1292 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1293
1294         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1295
1296         * metadata-verify.c: Add initial table schema verification.
1297
1298 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1301         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1302         #488383.
1303
1304         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1305
1306         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1307
1308 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1309
1310         * security-core-clr.c: Add/update documentation
1311
1312 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1313
1314         * marshal.c (emit_marshal_object): Generate code to throw an exception
1315         instead of throwing it. Fixes #488670.
1316
1317 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1318
1319         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1320         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1321         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1322         and add a call to mono_security_core_clr_ensure_delegate_creation
1323         to do the extra checks required by CoreCLR.
1324         * security-core-clr.c|h: Add function to check delegate creation,
1325         both in the binding and accessibility, under CoreCLR.
1326
1327 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1328
1329         * reflection.c (mono_reflection_create_dynamic_method): when 
1330         coreclr is enabled make sure that every resolved object are
1331         checked (e.g. field and method access).
1332         * security-core-clr.c|h: Add function to check objects resolved
1333         when a dynamic method is created.
1334
1335 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1336
1337         * metadata-verify.c: Cache directory rva translations.
1338
1339         * metadata-verify.c: Add cli-header and streams verification.
1340
1341 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1342
1343         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1344         the wrong offset (8 instead of 6).
1345
1346 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1347
1348         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1349         methods, return the native function address itself. Fixes
1350         #487758.
1351
1352 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1353
1354         * console-io.c: some of the values for control characters might not be
1355         present.
1356
1357 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1358
1359         * exception.c|h: Add helpers to create [Field|Method]AccessException
1360         * icall.c: Add required coreclr check calls for field reflection.
1361         Move the existing (method) check logic into security-core-clr.c
1362         * security-core-clr.c: Add functions to check if the access of a
1363         field or method is allowed when reflecting under coreclr. This is
1364         mostly done using a stack walk to find the "real" caller: i.e. the
1365         code that is calling the reflection
1366
1367 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * gc-internal.h: Change location of gc_wrapper.h
1370
1371 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1372
1373         * class.c: Simplification to coreclr checks for overrides that
1374         makes it easier to set breakpoints.
1375
1376 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1377
1378         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1379         mono_security_core_clr_method_level): Avoid potential 
1380         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1381         user/application code) and make it easier to set breakpoints
1382
1383 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1384
1385         * metadata-verify.c: Reject cli header tables that mono don't handle.
1386
1387 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1388
1389         * pedump.c: Fix CLI header dumping.
1390
1391 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1392
1393         * metadata-verify.c: More CLI header verification.
1394
1395 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1398
1399 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1400
1401         * metadata-verify.c: Initial verification of the CLI header.
1402
1403 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1404
1405         * metadata-verify.c (verify_resources_table): Fix verification of zero
1406         sized resource section and id entries count.
1407
1408 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1409
1410         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1411
1412 2009-03-17  Jb Evain  <jbevain@novell.com>
1413
1414         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1415
1416 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1419         (mono_gc_make_descr_for_array): Ditto.
1420
1421 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1422
1423         * verify.c (mono_verifier_is_class_full_trust): Add support for
1424         CoreCLR security mode where trusted assemblies are defined as
1425         "platform code".
1426
1427 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1428
1429         * metadata-verify.c: Add minimal PECOFF resource verification.
1430
1431 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1432
1433         * metadata-verify.c: Be less restrictive with some coff fields.
1434
1435 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1436
1437         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1438         params as boxed values on stack. Fixes #485706.
1439
1440 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1441
1442         * console-io.c: the termios values may vary in different flavors of unix.
1443
1444 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1445
1446         * console-io.[ch]: return the entire set of control characters when
1447         initializing the terminal.
1448         * appdomain.c: bump corlib version.
1449
1450 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1451
1452         * mono-perfcounters.c: added support for in-process custom
1453         performance counters.
1454
1455 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1456
1457         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1458
1459 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1460
1461         * metadata-verify.c: Verify the data pointed by the import table. 
1462
1463 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1464
1465         * metadata-verify.c (load_data_directories): Store data
1466         directory contents.
1467
1468         * metadata-verify.c: Verify the import table. 
1469
1470 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1471
1472         * metadata-verify.c: Verify data directories.
1473
1474 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1475
1476         * metadata-verify.c: Check section header flags.
1477
1478 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1479
1480         * appdomain.c: if the assembly name is a shadow-copied file, return
1481         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1482         in mono_make_shadow_copy.
1483         * icall.c: if the assembly name is a shadow-copied file, replace it
1484         with the original assembly path.
1485
1486         Bug #484244 fixed. NUnit tests for corlib can be run without
1487         --noshadow now.
1488
1489 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1492         entries when the table is reallocated.
1493
1494         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1495         mono_gc_alloc_fixed () since it contains GC refs.
1496
1497 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * reflection.c (ensure_complete_type): New helper function to call
1500         type resolve handlers for unfinished dynamic types.
1501         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1502
1503 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1506         #483247.
1507
1508 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1509
1510         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1511
1512 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1515         between GCHandles of type WeakTrackResurrection and the objects they
1516         point to.
1517
1518         * gc.c: Partly implement the sematics of GCHandles of type 
1519         WeakTrackResurrection: these handles should only be cleared after the
1520         finalizer of the object they are pointing to has ran.
1521
1522 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1523
1524         * icall.c: Partially revert r126631 because using the jump
1525         trampolines for generic shared methods makes it superfluous.
1526
1527 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * threads.c (handle_store): Create the 'threads' hash table with the proper
1530         MONO_HASH_VALUE_GC type.
1531
1532 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1533
1534         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1535         FIRST_GC_TRACKED.
1536
1537         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1538         and LAST_GC_TRACKED as a GC root.
1539
1540         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1541
1542         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1543         the static data even if it consists of 1 reference.
1544
1545         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1546         if there is a GC descriptor.
1547
1548         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1549         instead of through the GC since they contain no object references.
1550
1551 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1552
1553         * generic-sharing.c (instantiate_other_info): Always return a jump
1554         trampoline for method code.
1555
1556 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1557
1558         * culture-info-tables.h: generated to include the en-tt culture.
1559
1560 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1561
1562         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1563         capture the thread context.
1564
1565         * object.c (mono_async_result_new): Cache the invoke wrappers to
1566         ExecutionContext::Capture.
1567
1568 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1569
1570         * marshal.h: Add a prototype for what mono_compile_method returns
1571         for invoke wrappers.
1572
1573         * gc.c: Use the new prototype declaration.
1574
1575 2009-03-04  Geoff Norton  <gnorton@novell.com>
1576
1577         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1578         * gc-internal.h:
1579         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1580
1581 2009-03-04  Martin Baulig  <martin@ximian.com>
1582
1583         * mono-debug.h
1584         (mono_debugger_runtime_invoke): Removed.
1585
1586         * mono-debug-debugger.c
1587         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1588
1589 2009-03-02  Martin Baulig  <martin@ximian.com>
1590
1591         * mono-debug.h
1592         (mono_debugger_unhandled_exception): Removed.
1593         (mono_debugger_handle_exception): Removed.
1594         (mono_debugger_throw_exception): Removed.
1595
1596         * mono-debug.c
1597         (mono_debug_debugger_version): Bump to 5.
1598
1599         * mono-debug-debugger.c: Moved the exception handling code to
1600         ../mini/debug-mini.c
1601
1602 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1605         finalize_objects_hash.
1606
1607         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1608         
1609         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1610         field.
1611
1612         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1613         cache.
1614
1615         * image.c (mono_image_close): Free it.
1616         
1617         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1618         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1619         on the this argument.
1620
1621         * gc.c (run_finalize): Optimize the calling of the finalizers.
1622
1623 2009-03-03  Martin Baulig  <martin@ximian.com>
1624
1625         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1626         of the `MonoGenericInst' changes.
1627
1628 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1629
1630         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1631         mono_array_class_get_cached to reduce locking contention. Extract
1632         a domain var.
1633
1634         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1635         intermediary managed arrays. Use caching version of mono_array_new
1636         to allocate the result array.
1637
1638         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1639
1640         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1641
1642         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1643         to reduce locking contention.
1644
1645 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1646                 
1647         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1648         thunk builder code for the non-interface case.
1649
1650 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * object.c (get_generic_virtual_entries): New helper function to collect
1653         the virtual generic method instances which need to be added to an IMT
1654         thunk.
1655         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1656         Instead of creating a new IMT thunk, reset the vtable slot to the
1657         trampoline, the thunk will be created the next time the trampoline is called.
1658         (build_imt_slots): Add support for virtual generic methods in interfaces by
1659         adding to the IMT thunk all the methods registered using 
1660         mono_method_add_generic_virtual_invocation ().
1661
1662         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1663         (struct _MonoIMTCheckItem): Ditto.
1664
1665         * object.c (mono_method_add_generic_virtual_invocation): Take a
1666         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1667         the IMT thunk to include all items.
1668         
1669         * object.c (mono_class_create_runtime_vtable): Add a missing
1670         mono_loader_unlock ().
1671
1672 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1673
1674         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1675
1676         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1677
1678 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1679
1680         * object-internals.h: Rename _MonoReflectionEvent to
1681         MonoReflectionMonoEvent so it reflects the right managed type.
1682         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1683
1684         * icall.c:
1685         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1686         type.
1687
1688 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1689
1690         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1691         intermediary managed arrays. Use caching version of mono_array_new
1692         to allocate the result array.
1693
1694 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * reflection.c: Use cached version of mono_array_new alongside
1697         the mono_reflection_get_custom_attrs_by_type call path.
1698
1699 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1700
1701         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1702         intermediary managed arrays. Use caching version of mono_array_new
1703         to allocate the result array.
1704
1705         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1706
1707 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1708
1709         * icall.c: Add small implementation of a growable stack bound array.
1710
1711         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1712
1713         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1714         intermediary managed arrays. Use caching version of mono_array_new
1715         to allocate the result array.
1716
1717 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1718
1719         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1720         helps Enum::CompareTo to be implemented without reboxing all enums
1721         to their underlying type.
1722 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1723
1724         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1725         since it acquires a global lock leading to scalability problems.
1726
1727         * profiler.c: Make the stat profiler work with multiple appdomains, this
1728         currently only works when no appdomains are unloaded.
1729
1730 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1731
1732         * appdomain.c: make the check to avoid copying when the assembly is
1733         already shadow copied actually work.
1734
1735 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1738
1739         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1740         changes to the managed side.
1741
1742 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1745         classes + a separate lock for it, as it is used frequently at runtime, not
1746         just during metadata loading/JIT compilation.
1747
1748         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1749         for szarrays.
1750         
1751         * object-internals.h (mono_class_from_name_cached): New macro to cache
1752         the results of the lookup locally without having to declare a static
1753         variable to hold it.
1754         (mono_class_get_field_from_name_cached): Ditto.
1755         (mono_array_class_get_cached): Ditto.
1756
1757         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1758         the new macros.
1759         
1760         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1761         slower search in metadata.
1762
1763         * pedump.c: Fix a warning.
1764
1765 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * reflection.c (encode_locals): Add checks for user types.
1768         (method_encode_clauses): Ditto.
1769         (method_encode_code): Ditto.
1770         (mono_image_create_token): Ditto.
1771
1772         * object-internals.h: Change the type of more fields from MonoReflectionType*
1773         to MonoObject*.
1774
1775 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1776
1777         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1778         the a thread does not suspend within 100ms.
1779
1780         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1781         in addition to StopRequested as well.
1782
1783         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1784
1785         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1786         search the method_hash before inserting a new entry, to avoid crashes when
1787         the same method is inserted multiple times, causing the old 
1788         MonoDebugMethodInfo structure to be freed by the value dtor function.
1789
1790 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1791
1792         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1793         SO_EXLUSIVEADDRUSE where available.
1794
1795 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1798         runtime invoke wrappers, this time it is string ctor wrappers, which
1799         pass a dummy string as 'this' instead of their obj argument. Fixes
1800         #478473.
1801
1802 2009-02-21  Jb Evain  <jbevain@novell.com>
1803
1804         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1805         only get create_culture once.
1806
1807 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1808
1809         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1810         check before the locking.
1811         
1812         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1813         (mono_reflection_create_runtime_class): Ditto.
1814         (mono_reflection_sighelper_get_signature_local): Ditto.
1815         (mono_reflection_sighelper_get_signature_field): Ditto.
1816
1817         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1818         is a System.MonoType object or similar.
1819         (monotype_cast): New helper function to cast a MonoObject to a 
1820         MonoReflectionType object.
1821
1822         * object-internals.h: Change MonoReflectionType* members in structures to
1823         MonoObject* members to force the usage of the monotype_cast () function.
1824
1825         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1826         structures/arrays. This causes us to assert instead of crashing when 
1827         instances of user defined subclasses of System.Type are encountered.
1828
1829 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1830
1831         * cil-coff.h:
1832         * icall-def.h:
1833         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1834         win32 resource loaded from a PE file.
1835
1836         * image.c: fix mono_image_lookup_resource.
1837
1838 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1839
1840         * icall-def.h:
1841         * threads-types.h:
1842         * threads.c: added internal call for WaitHandle.SignalAndWait.
1843
1844 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1845
1846         * cominterop.c : Adding cominterop_type_from_handle and 
1847           registering it as an icall.  Replacing all references
1848           to type_from_handle.
1849
1850         Code is contributed under MIT/X11 license.
1851
1852 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1853
1854         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1855
1856         * appdomain.c: Call the tracer init function.
1857
1858         * domain-internals.h: Enable the tracer for the domain locks.
1859
1860         * image.c: Enable the tracer for image locks.
1861
1862         * loader.c: Enable the trace for the loader lock.
1863
1864         * lock-tracer.h:
1865         * lock-tracer.c: Initial implementation of the lock trace utility.
1866         The tracer requires a compile time define to be enabled and a env var
1867         to be enabled at runtime.
1868
1869 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1870
1871         * domain.c (mono_domain_code_foreach): Improve documentation.
1872
1873 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1874
1875         * appdomain.c:
1876         * generic-sharing.c:
1877         * object.c:
1878         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1879         comes first.
1880
1881 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1882
1883         * domain.c: Add mono_domain_code_* functions that perform locking
1884         around the domain codeman.
1885
1886         * domain-internals.h: Export those functions.
1887
1888         * object.c: Use new functions instead of acquiring the domain lock.
1889
1890 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1893         delegate. Fixes #477396.
1894
1895 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1896
1897         * reflection.c (create_custom_attr): Get rid of alloca.
1898
1899 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1900
1901         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1902           Adding exception handling for all CCW calls.
1903
1904         Code is contributed under MIT/X11 license.
1905
1906 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1909
1910         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1911         native->managed marshalling code. Fixes #476247.
1912
1913 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * class.c (mono_class_get_vtable_entry): Move the addition of
1916         static rgctx invoke wrappers for vtable methods here, this simplifies
1917         a lot of code and causes fewer rgctx wrappers to be created.
1918
1919         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1920         name of the statistics to begin with an uppercase.
1921
1922 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1923
1924         * reflection.c: Revert previous change as it breaks the build.
1925         
1926 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1927
1928         * verify.c: Properly handle SZARRAY element type.
1929
1930         Fixes #474271.
1931
1932 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1933
1934         * reflection.c (mono_image_create_method_token): Correctly encode
1935         MethodDef MemberRefParent token.
1936
1937         Fixes #472845.
1938
1939 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * image.c (mono_image_close): Delete the critical section before
1942         freeing the memory holding it.
1943
1944 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1945
1946         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1947         Fixes #476257.
1948
1949 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1950
1951         * pedump.c (main): Call mono_marshal_init so pedump
1952         doesn't crash.
1953
1954 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1955
1956         * loader.c (method_from_memberref): Properly fix #474271 and
1957         don't break the runtime bad.
1958
1959 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1962         (mono_domain_alloc0): Ditto.
1963
1964 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1965
1966         * loader.c (method_from_memberref): Don't abort if the array
1967         method is not found. A regular loader failure is more informative
1968         and correct.
1969
1970         Fixes #474271.
1971
1972 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1973
1974         *loader.c: Guard MonoImage::method_cache/methodref_cache
1975         using the image lock instead of the loader lock.
1976
1977         * metadata.h: Add comments about which fields are protected by
1978         the image lock.
1979
1980 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1981
1982         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1983
1984         * generic-sharing.c (mono_method_construct_object_context): Remove the
1985         wrapper_type == NONE assert, it is not needed.
1986
1987 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * reflection.c (clear_cached_object): New helper function.
1990         (mono_method_clear_object): New function to clear the cached reflection
1991         objects for a dynamic method.
1992
1993         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1994         Partly fixes # 463323.
1995         
1996 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1997
1998         * class.c:
1999         * loader.c:
2000         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
2001
2002 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
2003
2004         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
2005         take the image lock instead of the loader lock.
2006
2007         * metadata-internals.h: Export new functions.
2008
2009 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2010
2011         * domain.c (app_config_parse): Remove another use of stat that is
2012         not necessary as g_file_get_contents already does the presence
2013         check. 
2014
2015 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
2018
2019         * marshal.c: Move the bstr handling code to cominterop.c.
2020
2021         * marshal.c: Remove some COM interop code missed previously.
2022
2023 2009-02-12  Miguel de Icaza  <miguel@novell.com>
2024
2025         More Paolo patches from the Wii port:
2026         
2027         * security.c: Remove ves_icall_System_Environment_get_UserName
2028         from here.
2029
2030         * icall.c: And put ves_icall_System_Environment_get_UserName
2031         here. 
2032
2033         * appdomain.c (mono_set_private_bin_path_from_config): Remove
2034         redundant call to stat that was only used to test for the file
2035         existence.   Patch from Paolo.
2036
2037         * gc.c (run_finalize): If COM is disabled, do not link in
2038         mono_marshal_free_ccw.
2039
2040         * generic-sharing.c: Use alloca.h here as well.
2041
2042 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
2043
2044         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
2045
2046 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * cominterop.c cominterop.h: New files.
2049
2050         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
2051         function/typedefs which are needed by cominterop.c global.
2052
2053 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2054
2055         * generic-sharing.c: Don't take the loader lock to guard image
2056         mempool allocs.
2057
2058 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2059
2060         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
2061         called without the loader lock which is required to guard MonoImage:tokens.
2062
2063 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2064
2065         * class.c:
2066         * metadata.c:
2067         * method-builder.c:
2068         * marshal.c:
2069         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
2070
2071 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2072
2073         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2074         Rework the code to use regular mono_image_alloc/0.
2075
2076         * loader.c: Rework the code to use regular mono_image_alloc/0.
2077
2078         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
2079
2080 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
2081
2082         * object-internals.h : Fixing a typo in the 
2083           MonoReflectionComVisibleAttribute struct.
2084
2085         * marshal.c (cominterop_com_visible): Check the implemented 
2086           interfaces for ComImport.
2087
2088         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
2089           assume that bools should be treated as VARIANTBOOLs.
2090
2091         * marshal.c (emit_marshal_boolean): Adding cases for 
2092           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
2093
2094         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
2095           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
2096
2097         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
2098           should be treated as VARIANTBOOLs.    
2099
2100         Code is contributed under MIT/X11 license.
2101
2102 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2103
2104         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
2105         allocation with the image lock.
2106
2107 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2108
2109         This patch is the last of a series to remove explicit reference of MonoImage::mempool
2110         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
2111
2112         * object.c: Add mono_string_to_utf8_image.
2113
2114         * object-internals.h: Export mono_string_to_utf8_image.
2115
2116         * reflection.c: Rework all explicit references to the the image mempool to go thought
2117         the mono_image_alloc set of functions.
2118
2119 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2120
2121         This patch is the third of a series to remove explicit reference of MonoImage::mempool
2122         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
2123         and generics-sharing.c.
2124
2125         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
2126         as first argument. Note that this function remains broken as it doesn't perform locking around the
2127         mempool allocation.
2128
2129         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
2130
2131         * image.c: Add g_slist_append_image.
2132
2133         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
2134         the supplied image for allocation. Move code into mono_metadata_field_info_full.
2135
2136         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
2137         Fix all related code to do the same.
2138
2139         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
2140
2141         * metadata-internals.h: Fix the signatures.
2142
2143 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2144
2145         This patch is the second of a series to remove explicit reference of MonoImage::mempool
2146         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
2147         and similar to work using MonoImage.
2148
2149         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
2150         MonoMemPool.
2151
2152         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
2153
2154         * class.c (mono_metadata_signature_deep_dup): Same.
2155
2156         * class.c (inflate_generic_type): Same.
2157
2158         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
2159
2160         * metadata.c (mono_metadata_signature_dup_full): Same.
2161
2162         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
2163         mono_metadata_signature_dup_full.
2164
2165         * metadata.c (mono_metadata_type_dup): Same.
2166
2167         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
2168
2169         * reflection.c: Same.
2170
2171         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
2172
2173         * metadata-internals.h: Fix the signatures.
2174
2175         * class-internals.h: Same.
2176
2177 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2178
2179         This patch is the first of a series to remove explicit reference of MonoImage::mempool
2180         and use mono_image_alloc set of functions instead. 
2181
2182         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
2183         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
2184         of a MonoMemPool.
2185
2186         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
2187
2188         * class.c (g_list_prepend_mempool): Removed.
2189
2190         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
2191
2192         * image.c: Add g_list_prepend_image.
2193
2194         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
2195
2196         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
2197
2198
2199 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2200
2201         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
2202         mono_image_unlock.
2203
2204         * image.c (mono_image_init): Init the lock field.
2205  
2206         * image.c (mono_image_init): Cleanup the lock field.
2207
2208         * image.c: Add mono_image_(un)lock functions.
2209
2210 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2211
2212         * class.c, class-internals.h: mono_method_get_context_general()
2213         combines the functionality of mono_method_get_context() and
2214         mini_method_get_context().
2215
2216         * generic-sharing.c, domain-internals.h:
2217         mono_method_construct_object_context() and
2218         mono_domain_lookup_shared_generic() moved from mini.
2219
2220         * icall.c (ves_icall_InternalInvoke): Handle the case where the
2221         method doesn't have the correct instantiation because it's shared
2222         generic code.  Fixes #473999.
2223
2224 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
2227
2228         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
2229         
2230 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2231
2232         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
2233
2234         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
2235
2236         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
2237         and recheck the cache for dups after it.
2238
2239         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
2240
2241         Fixes one of the deadlocks found in #473150.
2242
2243 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
2244
2245         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
2246           For Win32, add additional break conditions for accept.
2247
2248         Code is contributed under MIT/X11 license.
2249
2250 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2253         lazily initialize the native wrapper cache.
2254         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2255         cache, since they are different from the normal wrappers.
2256
2257         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2258
2259         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2260         AOT compiled native wrappers.
2261
2262 2009-02-09  Geoff Norton  <gnorton@novell.com>
2263
2264         * appdomain.h:
2265         * security-core-clr.c: Allow enabling core-clr from the embedding
2266         API.
2267
2268 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2269
2270         * socket-io.c: when requesting all the local ips, if there are no
2271         interfaces up and running, MS returns 127.0.0.1.
2272
2273 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2274
2275         * mono-perfcounters-def.h: processor time is an inverse time.
2276         Fixes bug #468625.
2277
2278 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2279
2280         * socket-io.c: an empty host name returns the list of local IPs.
2281         Fixes bug #386637 part 1/2.
2282
2283 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * verify.c (mono_class_interface_implements_interface): Call
2286         mono_class_setup_interfaces ().
2287         (merge_stacks): Ditto.
2288
2289 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2292         klass->interfaces.
2293         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2294         (mono_generic_class_get_class): Ditto.
2295
2296 2009-02-06  U-QUACK\miguel  <miguel@quack>
2297
2298         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2299         they live in security.c
2300
2301         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2302         another bit from Paolo's code.
2303
2304 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2307         methods which will be discarded by add_imt_builder_entry ().
2308
2309         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2310         need to be boxed.
2311
2312         * loader.c: Add a statistics for the size of the memberref signature cache.
2313         
2314         * loader.c (find_cached_memberref_sig): New helper function.
2315         (cache_memberref_sig): Ditto.
2316
2317         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2318         they will be parsed again for every generic instantiation, leading to unbounded
2319         memory growth.
2320
2321 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2324         parameters of generic methods.
2325
2326         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2327         after the original method is copied to the inflated method.
2328         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2329
2330         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2331         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2332
2333         * class.c metadata.c: Update after the changes above.
2334
2335 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2336
2337         * metadata-verify.c: Simplified error handling and added
2338         section table validation.
2339
2340 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * class-internals.h (MonoClassExt): New structure containing rarely used
2343         fields of MonoClass.
2344         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2345         through a new 'ext' field.
2346
2347         * class.c (mono_class_alloc_ext): New helper function to allocate 
2348         class->ext.
2349
2350         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2351
2352 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2353
2354         * object.c (mono_object_get_virtual_method): Properly inflate
2355         generic methods.  Fixes #472692.
2356
2357 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2358
2359         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2360         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2361         for the parent type, the created type must be ready to be used on a generic
2362         instantiation.
2363         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2364         we won't have duplicated entries in generic_inst_cache.
2365
2366         Fixes #469553.
2367
2368 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2369
2370         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2371         replace with plain BSD per the comments on the bug MONO77637.
2372
2373 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * class.c (mono_class_get_generic_class): New accessor function.
2376         (mono_class_get_generic_container): Ditto.
2377
2378         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2379         fields, similar to the ones in MonoMethod.
2380
2381         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2382         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2383
2384         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2385         
2386         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2387         the same information as element_class->byval_arg.
2388
2389         * class.c reflection.c: Remove references to class->byval_arg.
2390
2391         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2392         klass->enum_basetype directly.
2393
2394         * verify.c metadata.c object.c icall.c reflection.c: Use 
2395         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2396         directly.
2397
2398 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2399
2400         * icall-def.h: Remove internal calls for sockets when
2401         DISABLE_SOCKET is defined, file system writing features when the
2402         OS only support reading and not writing data and Policy support if
2403         the Policy is disabled.
2404         
2405         * image.c (do_mono_image_open): Apply Paolo's patches for using
2406         mono_file_map_ APIs here.
2407
2408         * assembly.c: Add support for platforms to avoid prefix
2409         auto-detection. 
2410
2411 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2414         warning.
2415
2416         * class.c (mono_class_inflate_generic_class): New helper function.
2417
2418         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2419         statistics for inflated methods/classes.
2420
2421         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2422
2423         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2424         the call is made from Delegate.CreateDelegate () for the invoke method of
2425         a delegate.
2426
2427         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2428
2429         * metadata.c (mono_metadata_signature_size): New helper function.
2430
2431         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2432         generic instances.
2433
2434         * metadata.c (inflated_method_in_image): Avoid calling 
2435         mono_method_signature () if the method does not already have a signature.
2436
2437 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2438
2439         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2440         valuetype is compatible with target type, check by inheritance as a
2441         VT is not really compatible with System.ValueType, for example.
2442
2443         * verify.c (do_invoke_method): Improve error message.
2444
2445         * verify.c (do_box_value): If boxing a nullable, use the type argument
2446         on stack instead.
2447
2448         * verify.c (do_newobj): Improve error message.  
2449
2450         Fixes #469549.
2451
2452 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2453
2454         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2455
2456 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2457
2458         * generic-sharing.c: Don't hold domain lock when calling
2459         instantiate_other_info().  Fixes #471958.
2460
2461         * domain-internals.h, loader.c: Describe locking policy of domain
2462         lock vs loader lock.
2463
2464 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2465
2466         * verify.c (mono_delegate_signature_equal): Make it possible to check
2467         first-arg-bound delegates to static method.
2468
2469         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2470         static methods with the first arg bound.
2471
2472         Fixes #469529.
2473
2474 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2475
2476         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2477         errors.
2478
2479         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2480         under strict mode. Any type, when boxed can be seen as a reference type.
2481
2482         Fixes #469528.
2483
2484 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2485
2486         * object.h: The lower bound of an array is a signed integer value.
2487         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2488         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2489
2490         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2491         calculate the upper bound.
2492         
2493         Fixes #471252.
2494
2495 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2496
2497         From Paolo's work, refactored, cleared up:
2498         
2499         * threadpool.c, icall.c: ifdef code that requires a working socket
2500         stack.
2501
2502         * metadata.c (mono_metadata_field_info): Do not attempt to return
2503         a value from a function declared as void.
2504
2505         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2506         from the console stack.
2507
2508         * assembly.c: use strrchr instead of rindex.
2509
2510         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2511         alloca.h on systems that have it.
2512
2513         * environment.c: Avoid code that uses stuff from
2514         HAVE_SYS_UTSNAME_H
2515         
2516         * appdomain.c: Include sys/time.h.
2517
2518         * console-io.c: include sys/ioctl.h if it is available.
2519
2520 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2521
2522         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2523
2524         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2525         the method builder.
2526
2527         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2528         after it was created and cached, as the later is not thread safe.
2529         
2530 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2533         called while the debugging module is not initialized. Fixes #471669.
2534
2535 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2536
2537         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2538
2539         Fixes #471255.
2540
2541 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2542
2543         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2544         loader lock is not taken while the templates lock is held.  Fixes
2545         #471089.
2546
2547 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2548
2549         * metadata.c (type_in_image): Added a check to fix a monodis
2550         crash.
2551
2552 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2555         nullable arguments.
2556
2557         * object.c (mono_runtime_invoke_array): Ditto.
2558         
2559         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2560         freeing wrappers of dynamic methods.
2561
2562         * loader.c (mono_free_method): Call it. Fixes #463323.
2563         
2564         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2565         methods taking vtype/byref arguments, to fix yet another bug caused by
2566         the sharing of runtime invoke wrappers. Partly fixes #471259.
2567
2568 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2571         <first file in file table>:1 when the IL offset does not have an associated
2572         line number.
2573
2574 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2577         variable info for a method.
2578
2579         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2580         
2581 2009-01-30  Jb Evain  <jbevain@novell.com>
2582
2583         * pedump.c: reuse code from monodis to make sure pedump honors
2584         MONO_PATH, which is needed to verify net_2_1 assemblies.
2585
2586 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2589         there is no line number info.
2590
2591 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2592
2593         Avoid some MonoType allocations
2594         * reflection.c (mono_reflection_initialize_generic_parameter):
2595         Reuse MonoType from param->pklass rather than allocating one.
2596         (mono_dynamic_image_free): Update to changes.
2597
2598 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2599
2600         Rearrange some code to improve consistency
2601         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2602         (mono_reflection_initialize_generic_parameter): ... here.
2603
2604 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2605
2606         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2607         with type constraints as an experiment.
2608
2609         * boehm-gc.c (on_gc_notification): Update mono_stats.
2610
2611 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2612
2613         Avoid some allocations
2614         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2615         pointer to tail array to avoid extra allocation.
2616         * metadata.c (free_generic_inst): Update to changes.
2617         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2618         on-stack struct.
2619
2620 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2623         return TRUE if the two type objects are the same.
2624
2625 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2628         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2629         klass->min_align, since klass->min_align contains the managed alignment,
2630         while the native alignment can be different, like for longs on x86.
2631         Fixes #469135.
2632
2633         * class-internals.h (MonoMarshalType): Add a min_align field.
2634
2635 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2636
2637         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2638         the 1.0 format.
2639
2640 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2643         some comments about the usage of the used_regs field.
2644
2645         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2646         Fixes #469217.
2647
2648 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2649
2650         * appdomain.c: return NULL instead of throwing FileNotFoundException
2651         when LoadAssembly() fails.
2652
2653 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2654
2655         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2656         image if the owner is NULL.  Fixes the AOT failures.
2657
2658 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2661         MonoGenericParam structure using memset so the image field is initialized
2662         as well.
2663
2664 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2665
2666         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2667         a plain store.
2668
2669 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * class.c (mono_class_setup_vtable_general): In the generic instance
2672         optimization, set method->slot for abstract virtual methods. Fixes part of
2673         #467834.
2674
2675 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2676
2677         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2678         which signals that the unloading has started but all appdomain services must
2679         remain operational.
2680
2681         * appdomain.c (mono_domain_unload): The initial state for unloading now
2682         is unloading_start and we switch to unloading after the managed call to
2683         AppDomain::DomainUnload has finished.
2684
2685         The new unloading state has to be created because managed code in the
2686         DomainUnload event can depend on things like the threadpool still working.
2687         The domain must remain fully functional while the event executes.
2688
2689         This shown as an issue due to Process::WaitForExit, which waits for
2690         async reads of stdout and stderr to complete. Since those are processed
2691         in the threadpool the code deadlocks because the DomainUnload callback 
2692         waits for the async read finished event, which should have been set by a
2693         threadpool job but has been discarded due to the domain been in unload
2694         state.
2695
2696 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2697
2698         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2699         image must match.
2700
2701 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2702
2703         * reflection.c (resolve_object): For fields, inflate the class and
2704         then get the field in the inflated class.
2705
2706 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2707
2708         * object-internals.h (struct _MonoException): Added a comment
2709         explaining the new use of trace_ips.
2710
2711 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2712
2713         * generic-sharing.c (inflate_other_data): Inflate array methods
2714         correctly.
2715
2716         * loader.c, class-internals.h: Rename search_in_array_class() to
2717         mono_method_search_in_array_class() and make it non-static.
2718
2719 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2722         Hopefully fixes #458168.
2723
2724 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2725
2726         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2727         as it is performed elsewhere.
2728
2729         Code is contributed under MIT/X11 license
2730
2731 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2732
2733         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2734         requests queued.
2735         * object.c (mono_raise_exception): Increment the exceptions total
2736         counter when an exception is thrown.
2737         * class-internals.h: Add a location for storing the total number of
2738         asp.net requests served.
2739         * mono-perfcounters.c: Implement update support for asp.net counters
2740         from the class libraries. Implement read support for asp.net counters
2741         and exceptions total counter.
2742
2743 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2744
2745         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2746         accessing klass->methods. Fixes #467385.
2747
2748 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2749
2750         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2751         for byval arguments without an [Out] attribute. Fixes #467212.
2752
2753         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2754         Fix compilation under android.
2755         
2756         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2757         processed, scan them directly after they are copied, to achieve better locality
2758         and cache usage.
2759
2760         * socket-io.c: Applied patch from Koushik Dutta
2761         (koush@koushikdutta.com). Disable IPV6 when running under android.
2762
2763 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2764
2765         * icall.c (ves_icall_InternalExecute): Add write barriers.
2766
2767         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2768         the GC code.
2769
2770         * sgen-gc.c: Implement write barriers in IL code.
2771
2772 2009-01-17  Geoff Norton  <gnorton@novell.com>
2773
2774         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2775
2776 2009-01-17  Geoff Norton  <gnorton@novell.com>
2777
2778         * image.c: When unloading the image->references table, there can be gaps
2779         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2780         when unloading an appdomain.
2781
2782 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2783
2784         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2785         speed up ptr-in-nursery checks.
2786
2787         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2788         threads_lock () to prevent deadlocks.
2789
2790         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2791         does not need to be scanned during minor collections, since writes to it
2792         must use write barriers.
2793
2794 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2795
2796         * metadata-verify.c: Add pe nt header verification.
2797         
2798 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * gc.c: Fix a few warnings when using SGEN.
2801
2802 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2803
2804         * metadata-verify.c: Add pe optional header verification.
2805
2806 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2807
2808         * sgen-gc.c: Add support for user defined marker functions, used by
2809         MonoGHashTable to avoid registering a GC root for every hash node.
2810
2811 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2814         non-pinned roots into separate hashes to avoid having to traverse them
2815         in functions which are only interested in one kind.
2816
2817 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2818
2819         * metadata-verify.c: Add pe header machine field verification.
2820         
2821 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2822
2823         * metadata-verify.c: Add pe header size verification.
2824
2825 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2828         using the GC, they don't contain references.
2829
2830         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2831
2832 2009-01-13  Geoff Norton  <gnorton@novell.com>
2833
2834         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2835         AppDomains created on the native side can be cleaned up on the native side.
2836
2837 2009-01-13  Geoff Norton  <gnorton@novell.com>
2838
2839         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2840         as well as the managed api.
2841
2842 2009-01-13  Geoff Norton  <gnorton@novell.com>
2843
2844         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2845         with a MonoAppDomain initialized against it.
2846
2847 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2848
2849         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2850         
2851         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2852
2853         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2854         into the wrapper caches. Fixes #465700.
2855
2856         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2857         method builder.
2858         (mono_mb_create_method): Set the clauses from the method builder.
2859
2860 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2861
2862         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2863         Patch from Makoto Kishimoto.
2864
2865 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2868         encoding them as ROOT_DESC_COMPLEX.
2869         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2870
2871 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2874         no longer point to the nursery.
2875
2876         * sgen-gc.c: Add a few comments/FIXMEs.
2877         
2878         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2879
2880         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2881         initialization of the various _method variables thread safe. Fixes
2882         #465377.
2883
2884 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2885
2886         * domain.c, domain-internals.h: Remove the shared_generics_hash
2887         and its lookup functions.
2888
2889 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2890
2891         * socket-io.c:  Fixing the MSVC build. 
2892
2893         Code is contributed under MIT/X11 license.
2894
2895 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2896
2897         * metadata-verify.c: Add pe header watermark verification.
2898
2899 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2900
2901         * metadata-verify.c: Add lfanew verification.
2902
2903 2009-01-12  Jb Evain  <jbevain@novell.com>
2904
2905         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2906         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2907
2908 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2909
2910         * socket-io.c: Fix the build.
2911
2912         * environment.c: Fix an #ifdef.
2913
2914 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * threadpool.c (async_invoke_thread): Handle the wait function returning
2917         WAIT_IO_COMPLETION as well.
2918         (async_invoke_io_thread): Ditto.
2919
2920 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2921
2922         * threads.c: Fixing the Windows build.
2923
2924         Code is contributed under MIT/X11 license.
2925
2926 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2927  
2928         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2929         interrupt a wait.
2930         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2931         the thread to wait again.
2932
2933 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2934
2935         * metadata-verify.c: Initial skeleton of the metadata verifier.
2936
2937         * pedump.c: Add support for the metadata verifier.
2938
2939         * verify-internal.h: Export the whole assembly metadata verifier function.
2940
2941 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2942
2943         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2944
2945 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * Makefile.am: Upgrade dtrace-prelink.sh location.
2948
2949 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2950
2951         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2952         well. Otherwise the shutdown deadlock that happens on unix will can happen
2953         as well.
2954         If the main thread code finishes too fast it's possible that the finalizer
2955         thread won't have executed yet, won't record itself as the finalizer thread
2956         and the shutdown sequence will wait on it forever.
2957
2958 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2959
2960         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2961         with MSVC.
2962
2963 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2964
2965         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2966         Robert Jordan for pointing this out.
2967
2968 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2969
2970         * icall.c
2971         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2972         ves_icall_System_IO_DriveInfo_GetDriveType.
2973
2974 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2975
2976         * icall.c: Wrap calls to mono_strtod in CriticalSection
2977         invocations when using eglib, to work around #464316.
2978
2979 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2980
2981         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2982         return value of GetCurrentDirectory to never access unitialized memory.
2983
2984 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2985
2986         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2987         return value of GetCurrentDirectory and expand the buffer if needed.
2988
2989         Fixes #459094.
2990
2991 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2992
2993         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2994           Adding a call to mono_init_com_types.
2995
2996         Code is contributed under MIT/X11 license.
2997
2998 2009-01-07  Geoff Norton  <gnorton@novell.com>
2999
3000         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
3001         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
3002         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
3003         be the value of the ip buffer.
3004
3005 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3006
3007         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
3008         interfaces_packed here.
3009
3010         Fixes part of #463294.
3011
3012 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3013
3014         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
3015
3016         Fixes part of #463294.
3017
3018 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3019
3020         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
3021         is a boxed complex as well.
3022
3023         Fixes part of #463294.
3024
3025 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
3026
3027         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
3028         control if a methodspec should be created for the generic method definition from external assemblies.
3029         Caching of methodspec is done using the handleref hash table.
3030
3031         Fixes #462592.
3032
3033 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
3034
3035         * loader.c (find_method): When searching the interfaces of a class
3036         check the transitive closure of implemented interfaces.
3037
3038         Fixes #463303.
3039
3040 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3041
3042         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
3043         
3044 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
3047         interfaces calculation to fill_valuetype_array_derived_types.
3048
3049         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
3050         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
3051         for example.
3052
3053         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
3054         interfaces for valuetypes if needed.    
3055
3056         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
3057         for their basetype as well. Types are array expanded if rank is > 0.
3058
3059         Fixes #400716.
3060
3061 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
3062
3063         * socket-io.h : Changing the signature of
3064           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
3065           the blocking state.
3066
3067         * icall-def.h :  Changing the signature of
3068           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
3069
3070         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
3071           For Windows only.  Avoid blocking when calling accept by
3072           querying for a connection via select.  The loop also queries
3073           the thread state every 1000 micro seconds for the thread
3074           stop state.  This will avoid the process hanging on shutdown
3075           when using a TcpChannel that is never connected to.
3076
3077         Code is contributed under MIT/X11 license.
3078
3079 2008-12-30  Marek Safar  <marek.safar@gmail.com>
3080
3081         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
3082
3083 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3084
3085         * class.c (get_implicit_generic_array_interfaces): Extract common
3086         code to a helper function making it a lot easier on the eyes.
3087
3088 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
3089
3090         * class.c (get_implicit_generic_array_interfaces): If the internal
3091         enumerator is an interface inflate System.Object instead of itself.
3092
3093         Fixes #461261.
3094
3095 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
3096
3097         * object.c (mono_runtime_invoke_array): Don't assert with
3098         byref nullable types.
3099
3100         * marshal.c (mono_marshal_get_runtime_invoke): To handle
3101         byref nullables we unbox the object and store it on the
3102         stack. 
3103         We can't use the boxed object since it is the T of Nullable<T>
3104         and the boxed representation of a nullable it's underlying type
3105         or null.
3106         We could cheat and create a boxed nullable and use the same
3107         machinery of other byref VTs but this feels like a hack and
3108         using the stack has the bonus of reducing heap pressure.
3109
3110         Fixes #461941.
3111
3112 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
3113
3114         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
3115         return value.
3116
3117         Fixes #461867.
3118
3119 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
3120
3121         * icall-def.h : Adding an internal call definition for 
3122           System.Environment.internalBroadcastSettingChange.
3123
3124         * icall.c : Adding a Windows only implementation to broadcast a 
3125           WM_SETTINGCHANGE when an environment variable has changed.
3126
3127         Code is contributed under MIT/X11 license.
3128
3129 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3130
3131         * class.c, class-internals.h: Made
3132         mono_class_has_parent_and_ignore_generics() non-static.
3133
3134 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
3135
3136         * image.c: deal with the mmap failing when loading an image.
3137
3138 2008-12-17  Geoff Norton  <gnorton@novell.com>
3139
3140         * threadpool.c: Ensure that the io_queue_lock is initialized
3141         in all circumstances, as we always attempt to cleanup against it.
3142
3143 2008-12-17  Miguel de Icaza  <miguel@novell.com>
3144
3145         * icall.c (ves_icall_System_Environment_get_Platform): For
3146         compatibility reasons for existing client code we will keep
3147         returning 4 for a while.   
3148
3149         For how long will depend on the documentation being updated, and
3150         for us to give client code a chance to be updated.
3151
3152         This reverts the original decison on #433108 since we did not
3153         catch roughly 33 instances of the broken code in our own source
3154         code base, we did not catch failures on the buildbots, and QA did
3155         not bring this as a problem.
3156
3157         Only today I found some customer's code breaking due to our own
3158         class libraries not being fully updated and tracked it down to
3159         this change.  I am reverting it because if we could not even get
3160         our story straight in our own code base, how can we hope that our
3161         end user code be fixed?
3162
3163         As of this morning, our Wiki page that documents how to detect
3164         Unix had not been fixed.    
3165
3166 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
3167
3168         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
3169
3170         * class.c (mono_class_get_fields): Handle loading errors.
3171
3172 2008-12-12 Mark Mason <mmason@upwardaccess.com>
3173
3174         * 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.
3175         
3176 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3177
3178         * mono-perfcounters.c: avoid warning.
3179
3180 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3181
3182         * reflection.c (ensure_runtime_vtable): Work on generic instances and
3183         make sure all interfaces have MonoClass::interface_id set.
3184
3185         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
3186         method table is property set.
3187
3188 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3189
3190         * class.c: New function mono_class_setup_interface_id that setup
3191         MonoClass::interface_id if needed.
3192
3193         * class-internals.h: Export new function.
3194
3195 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3196
3197         * class.c: Add code to sanity check the vtable after setup_vtable_general
3198         has done it's work.
3199
3200 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3201
3202         * icall.c: make Assembly.GetExecutingAssembly work properly when
3203         reflection is used to invoke the method.
3204         Bug #321781 fixed.
3205
3206 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3207
3208         * metadata/generic-sharing.c: Look for constraints in all type
3209         arguments, not just the first one.
3210
3211 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3212
3213         * appdomain.c: return the correct CodeBase for an Assembly instance
3214         that was loaded from the shadow-copy directories.
3215         Bug #458190 fixed.
3216
3217 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3218
3219         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
3220
3221         * sgen-gc.c (check_object): New debugging helper function.
3222
3223         * object.c: Fix calls to mono_value_copy_array ().
3224
3225 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * class.c (mono_class_setup_fields): If working on an inflated class
3228         first check if the generic definition did init with success.
3229
3230         Fixes #445361.
3231
3232 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3233
3234         pedump.c (main): Fix a warning.
3235
3236 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
3237
3238         * object-internals.h : Adding a definition for 
3239           MonoReflectionComVisibleAttribute.
3240
3241         * marshal.c (cominterop_com_visible) :  Method added to check the 
3242           ComVisible attribute of a class.
3243
3244         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
3245           cominterop_raise_hr_exception added to consolidate common code 
3246           to raise hr exceptions.
3247
3248         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3249           if a managed class should support IDispatch.
3250
3251         * marshal.c 
3252           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3253           Added additional checks for managed object when getting 
3254           an IDispatch interface.
3255
3256         Code is contributed under MIT/X11 license.
3257
3258 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3259
3260         pedump.c (main): Handle mono_get_method () returning NULL. 
3261
3262 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * marshal.h: Fix a warning.
3265
3266 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3267
3268         * marshal.c : Adding cominterop_release_all_rcws to release all
3269           runtime callable wrappers held by the runtime.
3270
3271         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3272           
3273         Code is contributed under MIT/X11 license.
3274
3275 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * metadata.c (mono_image_alloc_lock): New helper function.
3278         (mono_image_alloc0_lock): Ditto.
3279
3280         * metadata.c: Use the alloc_lock () helper functions for allocating
3281         memory from the image mempool.
3282
3283 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3284
3285         * class.c (mono_class_from_generic_parameter): Document it's
3286         locking behavior. Fix double checked locking here, we stored in
3287         param->pklass a partially initialized MonoClass and no membar was used.
3288
3289 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3290
3291         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3292         (3) functions are present in the C library use them to do the
3293         job. If they are absent, make sure that the sum of int_part and
3294         dec_part is rounded before returning. This is necessary due to the
3295         division of dec_part by the power of 10 before the final addition
3296         is performed - if the result is not rounded in some cases it will
3297         yield invalid results.
3298
3299 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3302         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3303         instruction instead of a pointer constant.
3304
3305 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3306
3307         * loader.c (mono_method_get_header): Do most of the work outside the
3308         loader lock, to avoid assembly load hook deadlocks.
3309
3310         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3311         (mono_metadata_parse_type_full): Ditto.
3312
3313 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3316         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3317         funtions. Finally, use a lock to produce well ordered output.
3318
3319         The lock looks silly, as all calls to the corlib mempool should be guarded
3320         with the loader lock, but for some reason this fact doesn't help. 
3321
3322         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3323
3324 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3325
3326         * socket-io.c: 64 bit big-endian fixes.
3327
3328 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3329
3330         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3331         targets that require strict compatibility between the types.
3332
3333         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3334         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3335         Kill the strict argument and create a new one valuetype_must_be_boxed.
3336
3337         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3338         state that all valuetypes must be boxed.
3339
3340         Fixes #448560.
3341
3342 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3343
3344         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3345         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3346
3347         Contributed under MIT/X11 license.
3348
3349 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3352         the inflate_generic_type machinery should handle it.
3353
3354         This avoids a crash when the field's flags is zero and it's type is
3355         a primitive.
3356         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3357         is zero and will return one of the cached built-in primitive types. Since
3358         those types live in read-only memory, the code that copies it crashes.  
3359
3360 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3361
3362         * object.c: Don't put function descriptors into generalized IMT
3363         thunks.
3364
3365 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3366
3367         * class.c: Enable generic code sharing on PPC64.
3368
3369 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3370
3371         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3372         from mini/mini.c.
3373
3374         * generic-sharing.c: Allocate the method template slists from the
3375         image mempool so it doesn't leak.
3376
3377 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3378
3379         * class.c (generic_array_methods): Release the linked list.
3380
3381 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3382
3383         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3384         invocation to g_utf16_to_utf8().
3385
3386 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3387
3388         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3389         arguments on big endian archs.
3390
3391 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3392
3393         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3394         the type name (test added in corlib).
3395
3396 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3397
3398         * pedump.c: initialize perf. counters. Fixes a segv.
3399
3400 2008-11-25  Martin Baulig  <martin@ximian.com>
3401
3402         * mono-debug-debugger.c
3403         (mono_debugger_runtime_invoke): Return the exception object if an
3404         exception was thrown.  Visual Studio displays the exception object
3405         in the locals window.
3406
3407 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3408
3409         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3410         ftnptr.
3411
3412 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3413
3414         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3415         MONO_TYPE_U are sizeof (gpointer), too.
3416
3417 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3418
3419         * marshal.c (mono_type_native_stack_size): Fixed size and
3420         alignment for reference types.
3421
3422 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3423
3424         * class.c (mono_class_generic_sharing_enabled): Disable generic
3425         code sharing for PPC64.
3426
3427 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3428
3429         * icall.c (mono_method_get_equivalent_method): Make sure
3430         method->klass->methods is inited before looping over it.
3431
3432 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3433
3434         * object.c: when calling ExecuteAssembly in a newly created domain,
3435         the configuration file and application base are already set up.
3436         Bug #446353 take 2 fixed.
3437
3438 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3441         Fixes #444715. Fix a warning.
3442
3443 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3444
3445         * appdomain.c: write the full path of the assembly to the .ini file
3446         created when "shadow-copying"
3447         Bug #446353 fixed.
3448
3449 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3452         if signature==FALSE.
3453
3454 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3455
3456         * marshal.h : Fix the cygwin build.
3457            marshal.c:12442: undefined reference to `_IID_IMarshal'
3458           
3459         Code is contributed under MIT/X11 license.
3460
3461 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3462
3463         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3464           free threaded marshaler when QueryInterface is called on a COM callable
3465           wrapper requesting the IMarshal interface.
3466           
3467         Code is contributed under MIT/X11 license.
3468
3469 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3472
3473         * reflection.c (mono_type_get_object): Special case the very common
3474         void type.
3475
3476         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3477         hold typeof(void).
3478
3479 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3480
3481         * process.h : Adding method declaration for
3482           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3483           
3484         * process.c : Adding implementation for
3485           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3486           
3487         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3488           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3489
3490         Code is contributed under MIT/X11 license.
3491
3492 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3493
3494         * appdomain.c (unload_thread_main): Clean up threadpool by
3495         calling mono_thread_pool_remove_domain_jobs.
3496
3497         * domain-internals.h (struct _MonoDomain): Add new fields to
3498         help coordinate the cleanup of the threadpool.
3499
3500         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3501         that cleans up the threadpool of all jobs associated with an appdomain.
3502         It does that by cleaning up the queues and making sure all active
3503         threads are accounted.
3504
3505         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3506         unloaded or in the process of. Take this is such way that there is
3507         no race condition between another thread starting the unload and the
3508         current thread acknowledging it.
3509
3510         * threadpool.c (async_invoke_thread): Same.
3511
3512         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3513         firing the new thread.
3514
3515         * threadpool.c (start_tpthread): Same.
3516
3517         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3518
3519         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3520
3521 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3522
3523         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3524         Add support for DuplicateHandle.
3525         
3526         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3527         Add support for DuplicateHandle.
3528         
3529         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3530         Add support for DuplicateHandle.
3531
3532         Code is contributed under MIT/X11 license.
3533
3534 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3535
3536         * class-internals.h: Make min_align into a whole byte.
3537
3538         * class.c: Set min_align for SIMD types to 16.
3539
3540 2008-11-05  Geoff Norton  <gnorton@novell.com>
3541
3542         * attach.c: Default the attacher to enabled for all cases including
3543         embedded.
3544
3545 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3546
3547         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3548         change r117650.
3549
3550 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3551
3552         * monitor.c, monitor.h: New function for querying offsets of
3553         members of MonoThreadsSync.
3554
3555 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3558         to speed up this function and to avoid the boundless memory growth caused by
3559         the signature_dup () calls.
3560
3561 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3564         wrapper.
3565
3566         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3567         by 1 bit.
3568
3569         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3570
3571 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3572
3573         * appdomain.c:
3574         * domain-internals.h: made mono_set_private_bin_path_from_config()
3575         "internal".
3576         * object.c: call the above function after setting the configuration
3577         file path for the root domain.
3578         Fixes bug #314478.
3579
3580 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3581
3582         * assembly.c: when the assembly is loaded from an absolute path, end
3583         basedir with a directory separator.
3584         Bug #440781 fixed.
3585
3586 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3587
3588         * monitor.c (mono_monitor_get_fast_enter_method): If
3589         CompareExchange is not available, don't create the fastpath
3590         instead of asserting.  (The method is missing in the 1.1 profile.)
3591
3592 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3593
3594         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3595
3596         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3597         Monitor.Exit IL fastpaths.
3598
3599 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3602
3603 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3604
3605         * class.c (mono_class_create_from_typedef): Added Vector2l.
3606
3607 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3608
3609         * class.c (mono_class_create_from_typedef): Added Vector2d.
3610
3611 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3612
3613         * appdomain.c: translate \ into / for cache_path.
3614         * domain-internals.h: new mono_is_shadow_copy_enabled().
3615         * icall.c: (fill_reflection_assembly_name) do the same path
3616         manipulations that get_code_base does.
3617         (get_code_base) use mono_is_shadow_copy_enabled.
3618
3619 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3620
3621         * appdomain.c: shadow-copied assemblies go to CachePath +
3622         ApplicationName when both are set. DynamicBase has nothing to do with
3623         shadow copies.
3624         Bug #406877 fixed.
3625
3626 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3627
3628         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3629         STANDALONESIG table.
3630
3631         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3632         standalone signatures.
3633
3634         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3635         comparison code: instead of comparing the signatures using a custom
3636         equals function, transform them to a common signature and compare that. This
3637         works better with AOT.
3638
3639 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3642
3643         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3644         call for generic instances.
3645         (mono_class_setup_properties): Call setup_properties () before accessing
3646         gklass->properties.
3647
3648         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3649         over the virtual methods of a class using metadata if possible, avoiding the
3650         creation of MonoMethod's for non-virtual methods.
3651         
3652         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3653         get_virtual_methods () to iterate over the virtual methods of classes.
3654
3655 2008-10-25  Martin Baulig  <martin@ximian.com>
3656
3657         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3658
3659 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3660
3661         * class.c (mono_class_create_from_typedef): Added Vector4i.
3662
3663 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3664
3665         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3666         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3667         special-casing applies to eliminate the call completely.
3668
3669 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3670
3671         * class.c (mono_class_create_from_typedef): Added Vector8s.
3672
3673 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3674
3675         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3676
3677 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3678
3679         * icall.c: get rid of annoying warning.
3680
3681 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3682
3683         * threadpool.c: in 1.x, if you change the background status of the
3684         threadpool thread, it's not reset.
3685         Remove unnecessary calls to SetState.
3686
3687 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3688
3689         * threadpool.c: asynchronously create a set of idle threads upon first
3690         use of the threadpool. SetMinThreads will now start the appropriate
3691         number of idle threads if they are not already running. The default is
3692         1 threadpool thread per CPU. Increased the maximum number of threads
3693         per CPU to 10.
3694
3695 2008-10-22  Martin Baulig  <martin@ximian.com>
3696
3697         Revert r116521 from Zoltan, it breaks the debugger:
3698
3699         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3700         over the virtual methods of a class using metadata if possible, avoiding the
3701         creation of MonoMethod's for non-virtual methods.
3702         
3703         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3704         get_virtual_methods () to iterate over the virtual methods of classes.
3705
3706 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3707
3708         * threads.c: when creating a threadpool thread, set its state to
3709         'background'.
3710         * threadpool.c: reset the background state of a threadpool thread
3711         after finishing each work item
3712         Bug #437888 fixed.
3713
3714 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3715
3716         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3717         
3718         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3719         generic instances which works by inflating the methods in the container
3720         class's vtable.
3721
3722         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3723         variant which doesn't make a copy if no inflation was done.
3724         (mono_class_setup_fields): Use it.
3725
3726         * metadata.c (mono_metadata_get_shared_type): New helper function to
3727         return a shared instance of a given MonoType.
3728
3729         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3730         a copy of most non-generic types.
3731
3732 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3733
3734         * threadpool.c: remove one more GetSystemInfo () call.
3735
3736 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3737
3738         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3739         use the code in mono-proclib.h to get processor information.
3740
3741 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3742
3743         * appdomain.c: fixed the logic that determines whether assemblies in a
3744         directory are "shadow-copied" or not. Bug #433483 fixed.
3745
3746 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3749         warning.
3750
3751 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3752
3753         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3754         returning a vtype.
3755
3756         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3757         reflection.c: Use mono_field_get_name () for accessing a field's name.
3758
3759         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3760         class.c
3761
3762         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3763         field.
3764
3765         * loader.c (find_method_in_class): Reenable the metadata optimization by
3766         not using it for generic instances.
3767
3768         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3769         data/def_type fields from MonoClassField into a separate structure.
3770         (struct MonoClassField): Remove data/def_type fields.
3771         (struct _MonoClass): Add a 'field_def_values' array to store the default
3772         values/RVA for fields.
3773
3774         * class.c reflection.c: Update after the changes.
3775         
3776         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3777         for accessing field->data.
3778
3779         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3780
3781         * loader.c (find_method_in_class): Revert the last change for now as
3782         it breaks Mono.C5 unit tests.
3783
3784         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3785         'field_generic_types' and 'field_objects' which contain the information
3786         previously stored in MonoInflatedField.
3787         (MonoInflatedField): Delete.
3788         (struct _MonoClassField): Delete 'generic_info' field.
3789
3790         * reflection.c: Store the information which was previously in 
3791         field->generic_info in MonoDynamicGenericClass instead.
3792
3793         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3794         MonoClassField changes.
3795
3796 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3797
3798         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3799         store the value inside the data array of the MonoMethodWrapper.
3800         This saves memory, is faster and fixes the lifetime issues (methods
3801         were never removed from the hash previously). May also fix bug#436996.
3802
3803 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3804
3805         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3806         generic instances, compute the type from the generic definition instead of
3807         looking in field->generic_info.
3808
3809         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3810         for inflated fields, the only user was get_fieldref_token () which no
3811         longer needs it.
3812
3813         * class.c (mono_class_init): Revert the last change as it seems to cause
3814         crashes.
3815
3816         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3817         bytes on 64 bit platforms.
3818
3819         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3820         
3821         * object.c (mono_class_create_runtime_vtable): Don't initalize
3822         field->data/field->def_type here, it is done lazily by 
3823         mono_class_get_field_default_value ().
3824
3825         * icall.c (ves_icall_get_enum_info): Call 
3826         mono_class_get_field_default_value () instead of directly accessing
3827         field->data and field->def_type.
3828
3829         * object.c (get_default_field_value): Ditto.
3830
3831         * class.c (mono_field_get_data): Ditto.
3832         
3833         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3834         call for generic instances.
3835
3836         * loader.c (find_method_in_class): If klass != from_class, then inflate
3837         the method with the context of from_class, since the caller assumes this.
3838
3839 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3840
3841         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3842         for accessing method->slot.
3843
3844 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3845
3846         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3847
3848 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * class.c (mono_method_get_vtable_index): Use
3851         mono_method_get_vtable_slot () for accessing method->slot.
3852
3853         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3854         accessing klass->methods.
3855
3856         * class.c (mono_method_get_vtable_slot): New helper function.
3857         (mono_class_get_vtable_entry): Ditto.
3858         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3859         accessing method->slot.
3860
3861         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3862         method to get_inflated_method ().
3863
3864         * class.c (mono_class_get_inflated_method): New helper method to obtain
3865         a method of an inflated class without calling setup_methods ().
3866         (mono_class_get_cctor): Use get_inflated_method.
3867
3868         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3869         
3870         * marshal.c image.c: Lazily create all the marshal caches.
3871
3872         * image.c (mono_image_init): Move initialization of runtime_invoke
3873         caches to marshal.c.
3874
3875         * marshal.c (get_cache): New helper function to lazily initialize a 
3876         wrapper cache.
3877         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3878
3879         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3880
3881 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3882
3883         * loader.c: fixed check for interface type.
3884
3885 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3886
3887         * appdomain.c: check for NULL setup before it's referenced.
3888
3889 p
3890 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3891
3892         * class.c: remove the unused old vtable setup code.
3893
3894 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3895
3896         * class.c: don't depend on interface order in
3897         setup_interface_offsets (bug #435777).
3898         * reflection.c: sort the InterfaceImpl table (patch from
3899         Jb Evain  <jbevain@novell.com>).
3900
3901 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3902
3903         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3904         the low level assemblies lock.
3905
3906 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3907
3908         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3909         object.c, reflection.c, socket-io.c, threads.c: introduced
3910         mono_framework_version () to return the major framewrok version,
3911         changed the code that was using more complex patterns to use it.
3912         Return the correct value for PlatformID for OSX.
3913
3914 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3915
3916         * icall-def.h, process.h, process.c: added an icall to get info about
3917         processes using mono-proclib.
3918
3919 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3920
3921         * mono-perfcounters.c: use the mono-proclib functions to
3922         access process information.
3923
3924 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3925
3926         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3927         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3928         reflection.c: remove rawbuffer usage: mmap support is more sanely
3929         provided by utils/mono-mmap.
3930
3931 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3932
3933         * gc.c: use posix semaphores when possible so that
3934         mono_gc_finalize_notify() is signal safe.
3935
3936 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3939         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3940         be #ifdef-ed out, the linker will remove the rest.
3941
3942         * marshal.c: Implement DISABLE_COM.
3943
3944         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3945
3946 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3947
3948         * locales.c (string_invariant_compare_char): Optimization: do not
3949         call g_unichar_type unless we actually need the information.
3950
3951 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3952
3953         * object.c, class-internals.h: Also create remoting trampolines
3954         for generic methods.  Pass the domain to the remoting trampoline
3955         creation function, too.
3956
3957 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3960
3961 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3962
3963         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3964         Vector4ui.
3965
3966 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3967
3968         * assembly.c:
3969         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3970
3971 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3972
3973         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3974         for the least possible amount of time (extending the fix in r113458).
3975
3976 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3979
3980 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3981
3982         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3983         as possible simd intrinsic types.
3984         Optimized the test to check for the common prefix first.
3985
3986 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3987
3988         * class.c: back out part of a broken optimization committed on
3989         May 23th (bug #433908).
3990
3991 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3992
3993         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3994         Win32.  Should fix #432388 for most cases until we have the new
3995         profiler on Win32.
3996
3997 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3998
3999         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
4000         instead of using inst->id so the hash is stable for AOT.
4001
4002 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4003
4004         * appdomain.c:
4005         * icall.c: create a .ini file for shadow-copied assemblies that
4006         contains the location of the original assembly. Use this to return the
4007         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
4008         Also fix the number of '/' for windows when returning the CodeBase.
4009         Fixes bug #430920.
4010
4011 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4012
4013         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
4014
4015         Code is contributed under MIT/X11 license.
4016
4017 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4018
4019         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
4020           if if the class vtable needs initialized.
4021
4022         Code is contributed under MIT/X11 license.
4023
4024 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
4025
4026         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
4027           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
4028           STRING->BSTR, and CLASS->INTERFACE.
4029
4030         Code is contributed under MIT/X11 license.
4031
4032 2008-10-07  Marek Habersack  <mhabersack@novell.com>
4033
4034         * sysmath.h: changed the declaration of the
4035         ves_icall_System_Math_Round2 icall by adding an extra
4036         away_from_zero parameter.
4037
4038         * sysmath.c (ves_icall_System_Math_Round2): added support for
4039         away from zero rounding. The icall now takes an extra boolean
4040         parameter to signal that away from zero operation is requested.
4041
4042 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
4043
4044         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
4045         the delegate klass so it can work with full-aot.
4046         (mono_marshal_get_delegate_end_invoke): Ditto.
4047         (mono_marshal_get_delegate_invoke): Ditto.
4048
4049 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
4050
4051         * gc.c, attach.h, attach.c: remove a bad pattern:
4052         add_finalizer_callback () is not implemented correctly, it can't
4053         without adding more overhead to the finalizer loop and it's not
4054         even needed, since we know exactly what we need to call, so there is
4055         no need to do so through an expensive function pointer.
4056
4057 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
4058
4059         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
4060         for the no-gc case.
4061         * attach.c (mono_attach_init): Remove the #ifdef.
4062
4063 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
4064
4065         * attach.c (mono_attach_init): Don't use
4066         mono_gc_add_finalizer_thread_callback when compiling without GC.
4067         Fixes #432306.
4068         
4069         Code is contributed under MIT/X11 license.
4070
4071 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
4072
4073         * class.c (mono_class_create_from_typedef): Remove the 
4074         #ifndef DISABLE_SIMD stuff.
4075
4076 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
4077
4078         * class-internals.h (MonoClass): Added simd_type bit field.
4079
4080         * class.c (mono_class_create_from_typedef): Check if type is a simd
4081         intrinsic.
4082
4083 2008-10-03  Mark Probst  <mark.probst@gmail.com>
4084
4085         * object.c (mono_method_add_generic_virtual_invocation): Only add
4086         instantiations to the thunk whose count is at least as large as
4087         the threshold.
4088
4089 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
4090
4091         * icall.c: changed the Type of the exception thrown when trying to
4092         invoke a constructor on an abstract class. Part of the fix for bug
4093         #324185.
4094
4095 2008-10-02  Mark Probst  <mark.probst@gmail.com>
4096
4097         * class.c, class-internals.h (mono_method_get_vtable_index): New
4098         function which returns the index into the vtable and properly
4099         handles inflated virtual generic methods.
4100
4101 2008-10-01  Mark Probst  <mark.probst@gmail.com>
4102
4103         * object.c, domain.c, object-internals.h, domain-internals.h:
4104         Generalize IMT thunk machinery to also handle thunks for virtual
4105         generic method invokes.  When a virtual generic method is invoked
4106         more than a number of times we insert it into the thunk so that it
4107         can be called without lookup in unmanaged code.
4108
4109         * generic-sharing.c, class-internals.h: Fetching a
4110         MonoGenericInst* for a method from an (M)RGCTX.
4111
4112 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
4113
4114         * marshal.c (emit_marshal_string): Applied a variant of a patch by
4115         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
4116         marshalling. Fixes #431304.
4117
4118 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
4119
4120         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4121           handle when ref is specified without In or Out.
4122
4123         Code is contributed under MIT/X11 license.
4124
4125 2008-09-30  Mark Probst  <mark.probst@gmail.com>
4126
4127         * loader.c (mono_get_method_constrained): Don't expand method with
4128         the class's context, because it's already a method of that class.
4129
4130 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
4131
4132         * attach.c : should be correct build fix.
4133
4134 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4135
4136         * attach.c: Fix the previous change.
4137
4138 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
4139
4140         * attach.c : quick w32 build fix.
4141
4142 2008-09-27  Miguel de Icaza  <miguel@novell.com>
4143
4144         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
4145         crashes MonoDevelop: #430455.
4146
4147 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * domain-internals.h (struct _MonoDomain): Move most fields used only by
4150         the JIT do MonoJitDomainInfo in ../mini/mini.h.
4151
4152         * domain.c: Remove initialization/cleanup of the removed fields.
4153
4154 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4155
4156         * class.c (mono_class_generic_sharing_enabled): Enable generic
4157         code sharing for PPC.
4158
4159 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
4160
4161         * attach.c : Fixing the Windows builds.
4162
4163         Code is contributed under MIT/X11 license.
4164
4165 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4166
4167         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
4168         the default generic sharing mode to 'all'.
4169
4170 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4171
4172         * generic-sharing.c, class-internals.h: New function for checking
4173         whether a method needs a static RGCTX invoke wrapper.  A few
4174         funtions moved from mini/generic-sharing.c.
4175
4176         * icall.c: New function used.
4177
4178 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4179
4180         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4181         Static RGCTX invoke wrapping applies to value type methods, too.
4182
4183         * class.c (mono_class_setup_vtable_general): In generic-shared
4184         value types, wrap methods with a static RGCTX invoke wrapper.
4185
4186 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
4189         osx build.
4190
4191 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
4194         register a callback which is called when the finalizer thread is woken
4195         up.
4196         (finalizer_thread): Call the callback if it exists.
4197
4198         * attach.h attach.c: New files, implementing the attach mechanism.
4199
4200         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
4201         
4202         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
4203         by the previous change.
4204
4205 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4206
4207         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
4208         loader.c, marshal.c, metadata-internals.h, metadata.c,
4209         method-builder.c, object.c, reflection.c: introduced specific functions
4210         to allocate from the domain and image mempools and cleaned up most of
4211         the code to use them (still missing a few in reflection.c).
4212         Keep the loader bytes counter updated.
4213
4214 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
4215
4216         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
4217         loader-related counters.
4218
4219 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
4220
4221         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
4222         added more MS-compatible counters.
4223
4224 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4225
4226         * class.c (mono_class_setup_fields): Call setup_fields before accessing
4227         class->blittable. Fixes #428217.
4228
4229 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * reflection.c (mono_image_get_field_on_inst_token): Call 
4232         field_encode_signature () since that handles custom modifiers too.
4233         Fixes #424663.
4234
4235 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
4236
4237         * reflection.c (add_custom_modifiers): New helper function to merge custom
4238         modifiers stored in objects to a MonoType.
4239         (fieldref_encode_signature): Encode custom modifiers.
4240         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
4241         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
4242
4243 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
4244
4245         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
4246         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
4247         64-bit IL only images because imports are not resolved for IL only images.
4248         Special thanks to Bill Holmes for finding this bug and testing the patch.
4249         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4250
4251         Contributed under MIT/X11 license.
4252
4253 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4254
4255         * mono-config.c (dllmap_start): Add support for the bits keyword
4256         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4257
4258 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4259
4260         * reflection.c (inflate_mono_method): When the class the method is
4261         to be inflated for is itself not inflated, just return the method.
4262
4263 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4264
4265         * mono-perfcounters.c: use more user friendly process instance names.
4266
4267 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4268
4269         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4270           handle "[in] ref" and "[in][out] ref" cases.
4271
4272         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4273           to mono_mb_create_method.  This was causing problems calling native to
4274           managed passing Variants by value.
4275
4276         Code is contributed under MIT/X11 license.
4277
4278 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4281         before accessing the friend_assembly_names field.
4282
4283         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4284         times.
4285         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4286         called lazily when it is needed.
4287
4288         * metadata-internals.h (struct _MonoAssembly): Add 
4289         'friend_assembly_names_inited' flag.
4290
4291 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4292
4293         * mono-perfcounters-def.h: fix the types of a few counters.
4294         * mono-perfcounters.c: implemented the instance names getter
4295         and a few bugfixes.
4296
4297 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4298
4299         * culture-info-table.h : regenerated.
4300
4301 2008-09-17  Robert Jordan  <robertj@gmx.net>
4302
4303         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4304         context bound objects. Fixes #415577.
4305
4306         Code is contributed under MIT/X11 license.
4307
4308 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4309
4310         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4311         implementation (bug #423582).
4312
4313 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4316         is not set. Fixes #426309.
4317
4318 2008-09-16  Jb Evain  <jbevain@novell.com>
4319
4320         * class.c (mono_class_from_name): fix the exported type look up
4321         when the type is defined in a referenced assembly.
4322
4323 2008-09-16  Jb Evain  <jbevain@novell.com>
4324
4325         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4326         increment the next index counter on each iteration to make that work
4327         for more than one type forwarder. Unmanaged part to fix #422929.
4328
4329 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4330
4331         * object-internals.h: enum ComInterfaceType in
4332         MonoInterfaceTypeAttribute is guint32, not guint16.
4333
4334 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4335
4336         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4337         writing code.
4338
4339 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4340
4341         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4342         not gboolean.
4343
4344 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4345
4346         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4347         Endianness fixes for MonoSymbolFileOffsetTable.
4348
4349 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4350
4351         * process.c (complete_path) : Removing quotes from the 
4352           input path.  The glib file routines do not handle file paths
4353           that have quotes around them.
4354
4355         Code is contributed under MIT/X11 license.
4356
4357 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4358
4359         * socket-io.h : Adding a comment to provide locations where 
4360           changes to MonoSocketAsyncResult need to be synced.
4361
4362         Code is contributed under MIT/X11 license.
4363
4364 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4367         parameters as well. Fixes #425001.
4368
4369 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4370
4371         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4372         windows build.
4373
4374 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4375
4376         * console-io.c: Add support for tracking the window size if it
4377         changes.
4378
4379         The setup is very simple: the TtySetup function will now return a
4380         pointer to a location in memory that tracks the current console
4381         size.  The managed code checks its current value every time its
4382         queried against the last value set, and updates accordingly.
4383
4384         With this setup we can work with multiple consoles, and we do not
4385         require to poke into managed code from a signal handler.
4386
4387         Additionally, the environment for COLUMNS and LINES is now handled
4388         in unmanaged code.
4389
4390         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4391
4392 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4393
4394         * marshal.c (mono_type_native_stack_size): Treat
4395         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4396
4397 2008-09-04  Jb Evain  <jbevain@novell.com>
4398
4399         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4400         to nullables.
4401
4402 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4403
4404         * verify.c (verify_type_compatibility_full): Revert change
4405         to allow converting a native int to unmanaged pointer be verifiable
4406         under non-strict mode.
4407         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4408
4409         * verify.c: Added some TODOs.
4410
4411 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4412
4413         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4414           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4415           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4416
4417         Code is contributed under MIT/X11 license.
4418
4419 2008-09-02  Jb Evain  <jbevain@novell.com>
4420
4421         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4422
4423 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4424
4425         reflection.c (typebuilder_setup_fields): Handle classes with
4426         explicit size.
4427
4428 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4429
4430         class.c (mono_class_setup_events): Add memory barrier due to
4431         double checked locking.
4432         
4433         class.c (mono_class_setup_properties): Same.
4434
4435 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * class.c (mono_class_is_assignable_from): Fix the build.
4438         
4439         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4440         before accessing klass->interface_bitmap. Fixes #421744.
4441
4442 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4445         the runtime into no-exec mode, useful when running the AOT compiler.
4446
4447         * appdomain.c gc.c object.c: Avoid executing managed code when running
4448         in no-exec mode.
4449         
4450         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4451
4452         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4453         special case when the mono_assembly_loaded () returns NULL because the 
4454         search hook is not installed.
4455
4456 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4459         crashes in bstr marshalling on linux.
4460
4461 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4462
4463         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4464         with more than one parameter.
4465
4466 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4467
4468         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4469         start/stop flow control as well when turning off ICANON (allows
4470         C-s and C-q to be read by Console.ReadKey).
4471
4472 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * class.c (mono_class_init): Move the initialization of nested classes
4475         into mono_class_get_nested_types (). Fixes #418433.
4476
4477         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4478         flag.
4479
4480         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4481         iterating tough the nested classes of a class.
4482
4483 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4484
4485         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4486         on arm.
4487
4488 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4489
4490         * console-io.c (sigcont_handler): Support signal chaining for
4491         SIGCONT.
4492
4493         (console_set_signal_handlers): Use best practices with sigaction,
4494         clear the structure before using it. 
4495
4496 2008-08-22  Robert Jordan  <robertj@gmx.net>
4497
4498         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4499         Fix the Windows build.
4500
4501 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * class.c (mono_class_generic_sharing_enabled): Make the default
4504         sharing mode 'corlib'.
4505
4506 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * console-io.c (console_set_signal_handlers): Fix a warning.
4509
4510         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4511         method normally, the JIT will take care of avoiding recursion.
4512
4513 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4514
4515         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4516
4517         Code is contributed under MIT/X11 license.
4518
4519 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4520
4521         * console-io.c (sigcont_handler): We need to restore the entire
4522         termios state, not only the original settings, as things like echo
4523         can be controlled after this (Booish exposes this issue with its
4524         own ReadLine implementation).
4525
4526         Additionally, we need to set the terminal back into keypad_xmit
4527         mode.
4528         
4529         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4530         string as a paramter as well.   Otherwise we get different
4531         keyboard sequences.
4532
4533 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4534
4535         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4536         delegates with byref out parameter passing. Fixes #351520.
4537
4538         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4539         a generic context.
4540         (mono_type_get_desc): Add the type arguments for GENERICINST.
4541         (mono_method_full_name): Stringify the class name using mono_type_full_name
4542         so it picks up generic arguments.
4543
4544 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4545
4546         * console-io.c: Removed debug output.
4547
4548 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4549
4550         reflection.c (mono_reflection_create_runtime_class): Alloc
4551         the nested classes linked list using the dynamic image mempool.
4552         Fixes leak in corlib compilation.
4553
4554 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4555
4556         * console-io.c: Fix incredibly annoying behavior on the console
4557         after resuming execution after control-z.   This affected every
4558         console application.
4559
4560 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4561
4562         * mempool-internals.h: Header for mono private mempool functions. The first
4563         two function are for allocating glib linked lists using pools.
4564
4565         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4566
4567         * Makefile.am: Added mempool-internals.h.
4568
4569 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4572         (mono_domain_free): Ditto.
4573
4574         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4575         be used by the JIT to store its domain-specific information, instead of putting
4576         it directly into MonoDomain.
4577
4578         * domain.c (mono_install_create_domain_hook): New helper function to install
4579         a hook which initializes domain->runtime_info.
4580
4581         * domain.c (mono_install_free_domain_hook): Ditto.
4582         
4583 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4586         asserting if the ares parameter is null.
4587
4588         * mono-perfcounters.c: Fix warnings.
4589
4590         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4591         is not needed, don't check for interruptions either.
4592         (mono_marshal_get_delegate_end_invoke): Ditto.
4593
4594 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4595
4596         * mono-perfcounters.c (predef_readonly_counter): added support for
4597         reading the ASP.NET Requests Queued counter from another process.
4598
4599 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4602         MonoImage to simplify the AOT code.
4603
4604 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4607         marshalling. Fixes #416078.
4608
4609 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4610         
4611         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4612         it is set, looking up the icall address is deferred to the JIT, since 
4613         in embedded scenarios, the icall might not be registered in the runtime
4614         doing the AOT compilation. Backported from the 2.0 branch.
4615
4616 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4617
4618         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4619         Fixes #415621.
4620
4621 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4622
4623         * Makefile.am: added support for cross-compilation.
4624
4625 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4628
4629 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4630
4631         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4632
4633 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4634
4635         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4636         mono-perfcounters.c: performance counters implementation.
4637
4638 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4639
4640         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4641         to gpointer, letting the AOT code decide what to store in it.
4642
4643 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4644
4645         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4646           mono_class_setup_methods if the methods are not initialized.
4647
4648         Code is contributed under MIT/X11 license.
4649
4650 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4651
4652         * verify.c: Remove some debug code I commited by accident.
4653
4654         * verify.c (mono_method_is_valid_in_context): Change the return value
4655         to make possible to distinguish between invalid and unverifiable.
4656
4657         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4658         methods.
4659
4660 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4663         constraints. Fixes regression in gtest-253.
4664
4665 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * verify.c (mono_verifier_verify_class): Don't allow generic types
4668         with explicit layout.
4669
4670         * verify.c (mono_method_verify): Check locals and argument types.
4671
4672 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4673
4674         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4675         wait if the thread is in StopRequested state.
4676
4677         * class.c (mono_class_from_name): Refactor the module searching code into
4678         a separate function so it can be reused in the AOT case too.
4679
4680 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4683         Check both the type and it's generic type definition for loader errors.
4684         
4685         * verify.c (mono_method_is_valid_in_context): Don't generate another
4686         error when a type errors occur, this leads to the wrong exception been
4687         thrown.
4688
4689 2008-07-28  Dick Porter  <dick@ximian.com>
4690
4691         * icall-def.h
4692         * process.c
4693         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4694         New internal calls to duplicate and close a process handle.
4695
4696 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4697
4698         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4699
4700 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4701
4702         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4703
4704 2008-07-27  Robert Jordan  <robertj@gmx.net>
4705
4706         * class.c (mono_class_init): Don't compute class.has_finalize for
4707         valuetypes. Fixes #412477.
4708
4709 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4710
4711         * verify.c: Implement constraint equivalence checking.
4712         This is required when a generic parameter is used as
4713         argument to a constrained one.
4714
4715         Fixes #410637.
4716
4717 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4720
4721         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4722
4723         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4724         synch with managed object layout.
4725
4726 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4727
4728         * verify.c (do_branch_op): Handle valuetypes and generic
4729         arguments properly.
4730
4731         * verify.c (do_cmp_op): Same.
4732
4733         Fixes #410383.
4734
4735 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4736
4737         * generic-sharing.c: Fix memory leaks.
4738
4739         * class.c, class-internals.h: Make
4740         mono_class_inflate_generic_type_with_mempool() non-static.
4741
4742 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4743
4744         * pedump.c (dump_verify_info): Dump full class name.
4745
4746 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4747
4748         * generic-sharing.c: Removed some old code that didn't do anything.
4749
4750 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4751         * profiler.c: Added runtime_initialized_event,
4752         mono_profiler_install_runtime_initialized and
4753         mono_profiler_runtime_initialized. This new hook tells the profiler
4754         when the runtime is sufficiently initialized to be able to call
4755         mono_thread_attach on the root appdomain.
4756         * profiler.h, profiler-private.h: Likewise.
4757
4758 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4759
4760         * verify.c (do_cast): Do boxing for generic arguments as well.
4761
4762         * class.c (is_nesting_type): Drop generic instantiations before
4763         checking for nesting.
4764
4765         * class.c (can_access_instantiation): Allow access to generic
4766         arguments.
4767
4768 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4769
4770         * verify.c (verify_class_for_overlapping_reference_fields):
4771         On some cases, the field size might be zero, guard against that.
4772         Fix the explicit layout check to work as expected.
4773
4774 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4775
4776         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4777         mono_thread_resume () during shutdown, since the thread we want to abort
4778         might be suspended.
4779
4780 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4783         warning.
4784
4785         * debug-mono-symfile.c: Fix a warning.
4786
4787         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4788
4789         * object.c (mono_class_vtable): Check if exception_type is set, and return
4790         NULL as defined by the function comments.
4791
4792 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4793
4794         * mempool.c: Use malloc for every single mempool allocation if the
4795         configure option is set.  This makes it easier to track mempool
4796         allocations with tools like Valgrind.
4797
4798 2008-07-22  Jb Evain  <jbevain@novell.com>
4799
4800         * reflection.c (create_dynamic_mono_image): emit the same
4801         metadata version that SL2 does when creating a SL2 image.
4802
4803 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         * icall-def.h:
4806         * icall.c: New icall System.Enum:get_hashcode. This function
4807         avoids the overhead of boxing the enum to the underlying type.
4808
4809 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4810
4811         * reflection.c (mono_method_get_object): Don't let static RGCTX
4812         invoke wrappers get into MonoReflectionMethods.
4813
4814 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4815
4816         * object-internals.h:
4817         * object.c: New mono_runtime_class_init_full function
4818         that makes throwing the exception optinal.
4819
4820         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4821         for the case where the exception object is supplied.
4822
4823 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4824
4825         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4826         old ld versions.
4827
4828         Contributed under MIT/X11 license.
4829
4830 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * string-icalls.c (ves_icall_System_String_InternalSplit):
4833         Optimize array allocation by caching the MonoClass of the
4834         array type.
4835
4836         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4837
4838         * reflection.c (mono_param_get_objects): Same.
4839
4840 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4841
4842         * icall-def.h:
4843         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4844         It inflates the given type using the class context.
4845
4846 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4847
4848         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4849         the vtable if it already exists.
4850
4851         * object-internals.h: Add mono_class_try_get_vtable as part of the
4852         internal API.
4853
4854         * reflection.c (mono_type_get_object): Use the MonoObject from the
4855         vtable when possible. Reduces locking contention on reflection heavy
4856         code.
4857
4858 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4859
4860         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4861         g_bit_nth_msf () since that macro is not implemented in eglib.
4862
4863 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4864
4865         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4866         on platforms which do not support it.
4867
4868 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4871
4872 2008-07-11  Martin Baulig  <martin@ximian.com>
4873
4874         * mono-debug-debugger.h
4875         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4876
4877         * mono-debug-debugger.c
4878         (_mono_debugger_interruption_request): New global volatile variable.
4879         (mono_debugger_check_interruption): New public function.
4880
4881         * threads.c
4882         (mono_thread_current_check_pending_interrupt): Call
4883         mono_debugger_check_interruption().
4884         (mono_thread_interruption_checkpoint_request): Likewise.
4885
4886 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4887
4888         * verify.c: Add more type checks for loaded types. Verify the result
4889         handle from ldtoken.
4890
4891 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * loader.c (field_from_memberref): Don't crash if the field
4894         wasn't found.
4895
4896 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4897
4898         * verify.c: Verify if type and method instantiations
4899         don't have invalid VAR or MVAR arguments.
4900
4901 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4902
4903         * verify.c: Fix double free of function pointer list.
4904
4905 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4906
4907         * object.c (mono_string_to_utf8): Comment the new code as it
4908         breaks under eglib.
4909
4910 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4911
4912         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4913
4914 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4915
4916         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4917           is not throw too many times.
4918
4919         Code is contributed under MIT/X11 license.
4920
4921 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4924         debugging is turned off.
4925
4926 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4927
4928         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4929
4930 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4931
4932         * class-internals.h, class.c: Added new generic sharing option:
4933         Share only stuff in System.Collections.Generic, which is now the
4934         default.
4935
4936 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4937
4938         * generic-sharing.c, class-internals.h: New function for getting a
4939         generic method in a generic class given the corresponding method
4940         for a different instantiation of the class.  Partly refactored
4941         from mini-trampolines.c.
4942
4943         * class.c: Make sure generic methods have a class_inst if they are
4944         part of a generic class.
4945
4946         * metadata.c (mono_type_stack_size_internal): Handle type
4947         variables.
4948
4949 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4950
4951         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4952         Signifies whether information on the this/vtable/mrgctx variable
4953         is available.
4954
4955 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4956
4957         * object.c, object-internals.h, icall.c: New function
4958         mono_delegate_ctor_with_method(), which does the same as
4959         mono_delegate_ctor(), but takes an explicit method argument
4960         instead of taking the method from the jit info.
4961
4962         * marshal.c: When creating a delegate with an inflated method take
4963         the "this" argument as the target class for the castclass.
4964
4965 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4966
4967         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4968         mono_jit_info_table_find() to perform very badly in some cases.
4969
4970 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * icall.c (type_from_typename): Handle 'string'.
4973
4974         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4975         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4976
4977 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4978
4979         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4980
4981         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4982         number of available managed allocator types.
4983
4984         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4985         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4986
4987 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4990         which is a low level lock protecting just the 'jit_code_hash' hash table.
4991
4992         * domain.c: Initialize+cleanup jit_code_hash_lock.
4993         
4994 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4995
4996         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4997         after initialization.
4998
4999         * coree.h: Make MonoFixupExe internal.
5000
5001         Contributed under MIT/X11 license.
5002
5003 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
5004
5005         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
5006         because that is platform independent. Check NumberOfRvaAndSizes in PE32
5007         as well.
5008         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
5009         image being loaded is a CLI image and _CorValidateImage gets called.
5010
5011         * coree.h: Add MonoLoadImage.
5012
5013         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
5014         instead of LoadLibrary.
5015
5016         Contributed under MIT/X11 license.
5017
5018 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
5019
5020         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
5021         for any primitive type.
5022
5023 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
5024
5025         * object.c (mono_array_new_specific): Optimize this and the other allocation
5026         functions a bit.
5027         
5028         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
5029         domains too if mono_dont_free_domains is set.
5030
5031         * domain-internals.h (mono_dont_free_domains): New internal option controlling
5032         whenever to free appdomain data after it has been unloaded.
5033
5034         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
5035         
5036 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
5039         (mono_method_get_equivalent_method): Fix a warning.
5040
5041         * object.c (mono_message_init): Avoid looking up array types for each call.
5042
5043 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
5044
5045         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
5046         call.
5047
5048         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
5049         even more.
5050
5051         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
5052         each iteration.
5053
5054         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
5055         fields of an enum.
5056
5057 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
5058
5059         * object.c (mono_value_box): Fix boxing of nullables.
5060
5061 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
5062
5063         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
5064         mono_module_handle that is defined by the linker; no initialization required.
5065         * coree.h: Remove mono_module_handle, add __ImageBase, update
5066         mono_image_open_from_module_handle.
5067         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
5068         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
5069         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
5070         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
5071         to 4 GB away from image base address. IA64 version is not tested but was very
5072         easy to implement and should work if we ever need it.
5073         * domain.c (mono_init_internal): Avoid system error message boxes.
5074         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
5075         with has_entry_point. Handle do_mono_image_load fauilre correctly.
5076         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
5077         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
5078         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
5079
5080         Contributed under MIT/X11 license.
5081
5082 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
5085         as part of the private mono API.
5086         
5087         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
5088         Do proper argument checking for methods that belong to generic classes.
5089         Do proper type resolution for GMFH/2.
5090         Fixes #377324.
5091         
5092 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5093
5094         * verify.c (do_switch): Fix a memory corruption bug with
5095         the jump index is out of bound.
5096
5097 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5098
5099         * verify.c: Disable debug code.
5100
5101 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
5102
5103         * reflection.c (mono_image_get_methodbuilder_token): Use
5104         mono_image_get_methodspec_token_for_generic_method_definition
5105         instead of mono_image_get_memberref_token. We cache more memberef
5106         entries now.
5107
5108 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5109
5110         * verify.c: Inflate exception clause types.
5111         Fixes #402606.
5112         
5113 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5114
5115         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
5116         name.
5117
5118         * reflection.c (mono_image_get_ctorbuilder_token): Same.
5119
5120         * reflection.c (mono_image_create_method_token): Same.
5121
5122 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
5123
5124         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
5125         It does the same as mono_image_get_methodref_token but works on
5126         MethodBuilder.
5127
5128         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
5129         and always generate a methodspec. This follows the old behavior and fixes
5130         the regressions in System.Core. 
5131
5132 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5133
5134         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
5135         don't event mono_class_get () succeeds. Fixes #402182.
5136
5137 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5138
5139         * metadata-internals.h: Added MonoDynamicImage::methodspec
5140         hashtable to store methodspec tokens created for MethodBuilders.
5141
5142         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
5143         MethodBuilders as open instantiations if a methodspec was requested.
5144
5145         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
5146
5147         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
5148
5149         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
5150
5151         Fixes bug #349190.
5152
5153 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5154
5155         * loader.c (method_from_methodspec): Avoid crashing if the
5156         method lookup fails.
5157
5158 2008-06-20  Dick Porter  <dick@ximian.com>
5159
5160         * socket-io.c (get_socket_assembly): Cope with Moonlight network
5161         classes being in a different assembly.  Fixes bug 399184.
5162
5163 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * loader.c (mono_loader_init): Make this callable multiple times.
5166         (mono_dllmap_insert): Call mono_loader_init () so this works even before
5167         the runtime is initialized. Fixes #401755.
5168
5169 2008-06-19  Dick Porter  <dick@ximian.com>
5170
5171         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
5172         Fixes bug 349688.
5173
5174 2008-06-19  Dick Porter  <dick@ximian.com>
5175
5176         * socket-io.c:
5177         * icall-def.h: Implement Socket generic Send() and Receive()
5178         methods.  Fixes bug 395168.
5179
5180 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
5181
5182         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
5183
5184         Contributed under MIT/X11 license.
5185
5186 2008-06-18  Martin Baulig  <martin@ximian.com>
5187
5188         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
5189         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
5190         set to 80.0.  The debugger <-> runtime interface is now frozen as
5191         well.   
5192
5193         * mono-debug.c
5194         (mono_debug_debugger_version): Bump to 4.
5195
5196 2008-06-18  Martin Baulig  <martin@ximian.com>
5197
5198         * debug-mono-symfile.c
5199         (load_symfile): Don't check the minor version.
5200
5201         * debug-mono-symfile.h: Bump the version number to 50.0.
5202
5203 2008-06-18  Martin Baulig  <martin@ximian.com>
5204
5205         * debug-mono-symfile.c
5206         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
5207         minimum required version.
5208
5209 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5210
5211         * reflection.c (mono_custom_attrs_from_property): Fix support for
5212         retriveving cattrs of dynamic inflated generic types.
5213
5214         * reflection.c (mono_custom_attrs_from_event): Same.
5215
5216         * reflection.c (mono_custom_attrs_from_field): Same;
5217
5218         * reflection.c (typebuilder_setup_events): Same cattrs of events.
5219
5220         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
5221         Moved to metadata.c.
5222
5223         * metadata.c: New functions to retrive the equivalent field, event
5224         of property from the generic type definition.
5225
5226         * metadata-internals.h: Added new functions from metadata.c.
5227
5228 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5229
5230         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
5231         to cached in a mempool is used.
5232
5233         * metadata.c (free_generic_class): In some situations field generic_info type
5234         is not properly dup'ed and leads to double free'ing.
5235
5236         Fixes #400643.
5237
5238 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5239
5240         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
5241         this arguments (will be needed later for generic methods).
5242         Collect stats.
5243
5244 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5245
5246         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5247         Create a static RGCTX invoke wrapper for methods which require it.
5248
5249 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5250
5251         * object.c, class-internals.h: New function for checking whether
5252         an individual field is special static.
5253
5254 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5255
5256         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5257         linear search since the table is sorted.
5258
5259         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5260         Fixes #324180.
5261
5262 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5263
5264         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5265         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5266
5267         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5268
5269         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5270         
5271         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5272         InterlockedCompareExchange to query and modify 
5273         thread->interruption_requested.
5274
5275         * object-internals.h (struct _MonoThread): Change interruption_requested
5276         to a gint32 so it can be modified by atomic operations. Add 
5277         'critical_region_level' from the managed side, change small_id to a guint32,
5278         add new set of 'unused' fields.
5279
5280         * appdomain.c: Bump corlib version.
5281
5282 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * class.c (mono_class_from_name): Search modules as well. Fixes
5285         #322332.
5286
5287 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5288
5289         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5290         templates.  Templates are generalized with an additional type_argc
5291         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5292         have type_argc>0.
5293
5294         * domain-internals.h, domain.c: New hash table for looking up
5295         MRGCTXs.
5296
5297         * metadata.c, metadata-internals.h: Rename hash and equal
5298         functions for MonoGenericInst's and make them public.
5299
5300         * class-internals.h: New data structures for the MRGCTX.  Macros
5301         for distinguishing slots in the RGCTX and the MRGCTX.
5302
5303 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5304
5305         * object.c (mono_method_get_imt_slot): Put the same methods of
5306         different instantiations of the same generic interface in the same
5307         IMT slots, to make generic sharing simpler.
5308
5309 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5310
5311         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5312
5313         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5314         This function works just like mono_metadata_field_info, but
5315         accept a mempool as argument to be used allocating memory.
5316
5317         * marshal.c (mono_marshal_load_type_info): Use new function
5318         to load marshal data into image mempool.
5319
5320 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5321
5322         * class.c (mono_class_inflate_generic_type_with_mempool):
5323         This function allows to inflate a generic type using
5324         a mempool.
5325
5326         * class.c (inflate_generic_type): Take a mempool as argument
5327         and use it to do type dup'ing.
5328
5329         * class.c (mono_class_setup_fields): Field type for generic
5330         generic classes are allocated from the image mempool.
5331
5332         * metadata.c (free_generic_class): Inflated field type is
5333         now allocated in the image mempool.
5334
5335 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * threads.c (thread_cleanup): Free MonoThread::name.
5338
5339 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5340
5341         * appdomain.c (ensure_directory_exists): avoid unnecessary
5342         mkdir(2) calls when the shadow directory already exists.
5343         (mono_make_shadow_copy): copy also satellite assemblies from the
5344         private bin directories.
5345
5346 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5347
5348         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5349         
5350         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5351         a page boundary. Fixes #396219.
5352
5353 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5354
5355         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5356         due to double-checked locking.
5357
5358 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5359
5360         * assembly.c (build_assembly_name): Release memory on failure.
5361
5362         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5363
5364 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5365
5366         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5367         memory on failure.
5368
5369 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5370
5371         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5372         memory on failure.
5373
5374 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5375
5376         * loader.c (field_from_memberref): Check if field signature type is equal
5377         to the non-inflated type of the field. Fixes #398980.
5378
5379 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * assembly.c (mono_assembly_load_from_full): Call 
5382         mono_assembly_load_friends () outside the assemblies lock, since it can
5383         acquire the loader lock. Fixes #323696.
5384
5385         * reflection.c (resolve_object): Inflate the inst with the context for
5386         FieldOnTypeBuilderInst. Fixes #399010.
5387
5388 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5389
5390         * reflection.c (mono_image_get_field_on_inst_token): Don't
5391         inflate the field to encode it's signature. If it's a
5392         VAR or MVAR it should stay that way in the signature.
5393         Fixes #399047.
5394
5395 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5396
5397         * reflection.c (resolve_object): Release memory of inflated types.
5398
5399 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5400
5401         * loader.c (mono_method_get_signature_full): Remove assert about
5402         loading a methodspec to a generic method. We have such methods, such as
5403         System.Threading.Interlocked::CompareExchange<T>.
5404         This assert was removed since it crashes the verifier when it checks
5405         methods calling CompareExchange<T>.
5406
5407 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5408
5409         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5410         of Type array and not MonoType.
5411
5412 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5413
5414         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5415         <lupus@ximian.com>
5416
5417 2008-06-10  Martin Baulig  <martin@ximian.com>
5418
5419         * debug-mono-symfile.h
5420         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5421         changes to the file format, but we were generating incorrect
5422         source file indices in the line number table due to a bug, which
5423         made backtraces report an incorrect source file.
5424
5425 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5426
5427         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5428         mini/debug-mini.c to here.
5429
5430         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5431
5432         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5433         use it to release structs returned by mono_debug_find_method.
5434
5435 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5436
5437         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5438         since it needs to set method->slot for all interface methods.
5439
5440 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5441
5442         * class-internals.h: Forgot to add.
5443
5444 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5445
5446         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5447
5448         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5449         Lookup the custom attributes from property_hash.
5450
5451         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5452         in property_hash. Allocate all data using the image mempool.
5453
5454         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5455         for dynamic_custom_attrs to checks if the image is dynamic.
5456
5457 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5460         assemblies array.
5461         
5462         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5463         runtime functions while holding the domain assemblies lock.
5464
5465 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5466
5467         * verify.c: Reapplied the last bit of the reverted changes.
5468
5469 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5470
5471         * verify.c: Reapplied more of the reverted changes.
5472
5473 2008-06-09  Martin Baulig  <martin@ximian.com>
5474
5475         * debug-mono-symfile.c (load_symfile): Check the major version
5476         first; if it's wrong, don't print the minor version in the error message.
5477
5478 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5481         lock instead of the domain lock to avoid deadlocks, since the thread might
5482         already hold the loader lock.
5483
5484         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5485         (mono_thread_attach): Ditto.
5486
5487         * monitor.c: Use a TLS variable for holding the current thread id instead
5488         of calling pthread_self ().
5489         (mono_monitor_init_tls): New internal function to initialize the TLS
5490         variable.
5491         (mono_monitor_try_enter_internal): Put the owner == id check after the
5492         owner == 0 check.
5493
5494         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5495         missed optimizations when using gcc-4.3.
5496
5497 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5498
5499         * reflection.c (mono_dynamic_image_free): Free the memory
5500         used by MonoGenericParam in MonoDynamicImage::gen_param.
5501
5502         * reflection.c (mono_reflection_setup_generic_class): Allocate
5503         container from mempool.
5504
5505         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5506         container from mempool.
5507
5508 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5509
5510         * threads.c (mono_set_pending_exception): New internal function to set the
5511         pending exception of the current thread.
5512         (mono_thread_get_and_clear_pending_exception): Check for 
5513         thread->pending_exception as well.
5514
5515         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5516
5517         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5518         it can trigger a collection.
5519
5520 2008-06-06  Martin Baulig  <martin@ximian.com>
5521
5522         Merged the `debugger-kahalo' branch.
5523
5524         * mono-debug.h
5525         (MONO_DEBUGGER_VERSION): Bumped to 72.
5526
5527         * debug-mono-symfile.h
5528         (MonoSymbolFileMethodIndexEntry): Removed.
5529         (MonoSymbolFileMethodEntry): New public typedef.
5530         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5531         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5532         `data_offset'.
5533         (MonoSymbolFileMethodEntry): Removed.
5534         (MonoSymbolFileLexicalBlockEntry): Removed.
5535         (MonoSymbolFileLineNumberEntry): Removed.
5536         (MonoDebugLexicalBlockEntry): Removed.
5537         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5538         removed `num_il_offsets' and `il_offsets'.
5539         (MonoSymbolFile): Replace `version' with `major_version' and
5540         `minor_version'.
5541         (MONO_SYMBOL_FILE_VERSION): Replace with
5542         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5543         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5544
5545         * debug-mono-symfile.c
5546         (mono_debug_symfile_lookup_location): Add support for the new line
5547         number table format.
5548
5549 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5550
5551         * metadata.c (free_generic_class): Release the inflated
5552         MonoClass of dynamic generic classes if it's not a generic
5553         type definition.
5554
5555 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5556
5557         * verify.c: Reapplied more of the reverted changes.
5558
5559 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * reflection.c (lookup_custom_attr): Clean the cached flag or
5562         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5563         for SRE types.
5564
5565 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5566
5567         * verify.c: Reapplied a small part of the reverted changes.
5568
5569 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5572
5573         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5574         previously in managed code.
5575         (mono_monitor_exit): Ditto.
5576         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5577
5578         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5579         the managed definition.
5580
5581 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5584
5585 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5588         
5589         * monitor.c: Add some micro optimizations.
5590
5591         * icall.c (type_from_typename): Handle 'bool'.
5592
5593 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5594
5595         * verify.c: Implement constructor verification per P III 1.8.1.4.
5596         Fixes #396716.
5597
5598 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5599
5600         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5601         holding the assemblies lock here too.
5602
5603 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5604
5605         * verify.c: Kill stack_top function.
5606
5607 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5608
5609         * verify.c: Kill stack_get function.
5610
5611 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5612
5613         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5614
5615 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5616
5617         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5618         more reliable.
5619
5620         * verify.c (mono_method_verify): Inflate params and locals to avoid
5621         mismatch when checking for compatibility.
5622
5623 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5624
5625         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5626         Length prefix should be size in bytes. Fix bug #339530.
5627         
5628         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5629         Length prefix should be size in bytes. Fix bug #339530.
5630
5631         Code is contributed under MIT/X11 license.
5632
5633 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5634
5635         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5636
5637         Contributed under MIT/X11 license.
5638
5639 2008-06-05  Martin Baulig  <martin@ximian.com>
5640
5641         * mono-debug-debugger.c
5642         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5643
5644 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5645
5646         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5647         while holding the assemblies lock to prevent deadlocks. Handle the case
5648         where the search hook returns NULL but the assembly was still loaded.
5649         Fixes #323696.
5650
5651         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5652         modify domain state.
5653
5654 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5655
5656         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5657         * Makefile.am (pedump_LDADD): Post-process object files and
5658         add dtrace-generated object file, if necessary.
5659
5660         Code is contributed under MIT/X11 license.
5661
5662 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5663
5664         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5665
5666 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5667
5668         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5669
5670 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5671
5672         * threads.c: Try to free everything from the delayed free table
5673         when shutting down threads, and set the variable to NULL after the
5674         table is freed so that calling
5675         mono_thread_hazardous_try_free_all() when shutting down the root
5676         domain doesn't crash.
5677
5678 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5679
5680         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5681         the caller if resulting type was inflated.
5682
5683         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5684         was inflated.
5685
5686         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5687
5688
5689 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5690
5691         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5692         class library tests.
5693
5694         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5695         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5696         #396989.
5697
5698 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5699
5700         * domain.c, domain-internals.h: The JIT infos are now freed by the
5701         JIT info table code.  They are freed immediately if there only a
5702         single JIT info table in circulation.  If there is more, the free
5703         is delayed via a queue.
5704
5705         * threads.c, threads-types.h: New hazard pointer function for
5706         freeing all freeable delayed items in one sitting.
5707
5708 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5709
5710         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5711
5712         * reflection.c (typebuilder_setup_properties): Same.
5713
5714         * reflection.c (typebuilder_setup_events): Same.
5715
5716 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5717
5718         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5719         and use it for allocating memory.
5720
5721         * reflection.c (mono_marshal_spec_from_builder): Same.
5722
5723         * reflection.c: Change code to use new signatures.
5724
5725         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5726
5727 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * decimal.c (rescale128): Put back one line which was accidently commented
5730         out.
5731         
5732         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5733         to cause crashes.
5734
5735 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * reflection.c (mono_reflection_generic_class_initialize): Name must
5738         be always malloc'ed so we can free it later on. Do this for field, property
5739         and event.
5740
5741         * metadata.c (free_generic_class): Free field, property and event names.
5742
5743 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5744
5745         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5746         instead of g_memdup.
5747
5748         * reflection.c (typebuilder_setup_fields): Same.
5749
5750 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5751
5752         * decimal.c (rescale128): Optimize this function a bit more.
5753
5754 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5755
5756         * metadata.c (free_generic_class): Release some memory from
5757         SRE generic classes.
5758
5759 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5760
5761         * reflection.c (mono_image_get_generic_field_token): No reference
5762         to name is kept, free it.
5763
5764         * reflection.c (mono_reflection_generic_class_initialize): Free
5765         more memory of the inflated field.
5766
5767 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5768
5769         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5770         code.
5771
5772 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5773
5774         * reflection.c (mono_dynamic_image_free): Release memory used by
5775         MonoDynamicImage::array_methods elements.
5776
5777         * reflection.c (assembly_add_win32_resources): Release memory after
5778         encoding.
5779
5780 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5781
5782         * decimal.c (log2_32): Use an optimized version for this function too.
5783         
5784         * decimal.c (log2_64): Fix this on 32 bit machines.
5785
5786 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5787
5788         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5789
5790         * class.c (mono_metadata_signature_deep_dup): Same.
5791
5792         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5793         a mempool.
5794
5795         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5796
5797         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5798
5799         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5800
5801         * class-internals.h: Update signatures to take a MonoMemPool.
5802
5803 2008-06-02  Dick Porter  <dick@ximian.com>
5804
5805         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5806         * icall-def.h: Add
5807         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5808         FormatMessage API to get the error text.  Fixes bug 321827.
5809
5810 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * decimal.c: Add some micro optimizations to make decimal operations faster.
5813
5814 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5815
5816         * reflection.c (method_encode_clauses): Take a mempool
5817         as parameter and use it to allocate the clause array.
5818
5819         * reflection.c (mono_image_get_field_on_inst_token): Free
5820         the inflated type after encoding it.
5821
5822         * reflection.c (mono_dynamic_image_free): Free each element
5823         of MonoDynamicImage::gen_params.
5824
5825         * reflection.c (reflection_methodbuilder_to_mono_method):
5826         Allocate the generic param array from the mempool.
5827         Allocate signature params from the mempool.
5828
5829         * reflection.c (mono_reflection_generic_class_initialize):
5830         Free inflated fields after been used.
5831
5832 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5833
5834         * icall.c: Reapply the memory leak fixes as they no
5835         longer make mono crash.
5836
5837 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5838
5839         * reflection.c (mono_type_get_object): Don't store the suplied
5840         MonoType with type_hash. A caller which pass a type that
5841         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5842         might end with a pointer to freed memory.
5843         The solution is to use byval_arg or this_arg from the associated
5844         MonoClass of the supplied type.
5845
5846 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5847
5848         * icall.c: Revert the rest of the last change as it breaks the build too.
5849
5850 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5851
5852         * icall.c: Revert a leak fix as it's breaking the build.
5853
5854 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5857
5858 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5861
5862 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5863
5864         * icall.c: Fix some memory leaks.
5865
5866 2008-05-29  Dick Porter  <dick@ximian.com>
5867
5868         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5869         async socket operations from the pending list when a socket
5870         closes.  Leaving it until the threadpool services the event
5871         exposes a race condition when a socket descriptor is reused.
5872         Fixes bug 377589.
5873
5874 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5875
5876         * object.c: Fix negative index check for array alocation.
5877
5878 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5879
5880         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5881         This check is performed by the verifier for IL created delegates
5882         and by Delegate::CreateDelegate for programatically created ones.
5883         Fixes #372406.
5884
5885 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5886
5887         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5888         Fix code to use mono_array_size_t instead of int.
5889
5890         Based on patch by Luis F. Ortiz.
5891         Contributed under X11 license.
5892         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5893
5894 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * icall.c: Added ves_icall_System_Array_GetLongLength and
5897         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5898         arrays.
5899
5900         * icall.h: Export both new functions.
5901
5902         Based on patch by Luis F. Ortiz.
5903         Contributed under X11 license.
5904         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5905
5906 2008-05-28  Martin Baulig  <martin@ximian.com>
5907
5908         The debugger now requires exactly r103463.
5909
5910         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5911         This version is not supported by the debugger, wait for 72.
5912
5913 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * object.h: Changed array related functions to use
5916         mono_array_size_t instead of guint32. Forgot to commit this file.
5917
5918         Patch by Luis F. Ortiz.
5919         Contributed under X11 license.
5920         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5921
5922
5923 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5924
5925         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5926         don't define it. Use the number literal instead.
5927
5928 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * icall.c: Changed array related functions to use
5931         mono_array_size_t instead of guint32.
5932
5933         * icall.c (ves_icall_System_Array_GetLength): Check for length
5934         overflow under MONO_BIG_ARRAYS.
5935
5936         Based on patch by Luis F. Ortiz.
5937         Contributed under X11 license.
5938         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5939
5940 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5943
5944         Based on patch by Luis F. Ortiz.
5945         Contributed under X11 license.
5946         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5947
5948 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5949
5950         * object.c, object.h: Changed array related functions to use
5951         mono_array_size_t instead of guint32.
5952
5953         Patch by Luis F. Ortiz.
5954         Contributed under X11 license.
5955         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5956
5957 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5958
5959         * object.h: Introduced mono_array_size_t typedef. This must be used
5960         in all places an array length is expected. This is 64bits wide if
5961         MONO_BIG_ARRAYS is enabled.
5962
5963         Patch by Luis F. Ortiz.
5964         Contributed under X11 license.
5965         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5966
5967 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5968
5969         * security-manager.c class.c: Set the class exception info by calling
5970         mono_class_set_failure ().
5971
5972         * class.c (mono_class_get_exception_data): New accessor function.
5973         (mono_class_set_failure): Store exception_data in the property hash.
5974
5975         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5976         the struct as a property.
5977
5978         * loader.c (mono_get_method_full): Store the lookup result for method
5979         tokens in method_cache, the others in methodref_cache to decrease the memory
5980         usage of hash tables.
5981
5982         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5983         (mono_image_init): method_cache is lazy inited now.
5984
5985         * metadata-internals.h (struct _MonoImage): Change method_cache to
5986         a MonoValueHashTable, add a separate methodref_cache.
5987
5988 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5989
5990         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5991           Double.ToString as exposed by Bug #383531.
5992
5993 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * number-formatter.h: Make some tables static.
5996
5997         * class.c (mono_method_set_generic_container): New accessor function.
5998         (mono_method_get_generic_container): Ditto.
5999
6000         * class-internals.h (struct _MonoMethod): Remove rarely used 
6001         'generic_container' field, store it in the property hash instead. Add 
6002         'is_generic' boolean field instead.
6003
6004         * image.c (mono_image_init): Initialize property_hash.
6005         (mono_image_close): Destroy property_hash.
6006
6007         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
6008         hold rarely used fields of runtime structures belonging to this image.
6009
6010         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
6011         to get/set method->generic_container.
6012
6013         * loader.c (mono_get_method_from_token): Avoid loading the method header for
6014         generic methods.
6015
6016 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * class.c (mono_class_inflate_generic_method_full): Don't increase
6019         mono_stats.inflated_method_count for methods found in the cache.
6020
6021         * threads.c (mono_thread_request_interruption): Add a comment about 
6022         QueueUserAPC ().
6023
6024 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
6025
6026         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
6027         interface_offsets_packed table.
6028         
6029         * class.c (mono_class_init): Remove some dead code.
6030
6031         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
6032         mono_class_setup_vtable () when CAS is active to detect security problems.
6033
6034 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
6035
6036         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
6037
6038         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
6039         parameters as it's irrelevant for delegate checking.
6040
6041 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
6044
6045         * class.c (mono_class_init): Control the creation of a generic vtable using
6046         a global which is true by default, but set to false by the runtime startup code.
6047         
6048         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
6049         Disabled for now since it breaks the embedding API.
6050         Move the setup of class->methods for arrays to mono_class_setup_methods ().
6051         (mono_class_setup_methods): Add a memory barrier.
6052
6053         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
6054         when mono_class_init () doesn't compute the generic vtable.
6055         
6056 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
6057         * profiler.c: Added mono_profiler_install_statistical_call_chain,
6058         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
6059         to support call chains (backtrace) in the stat profiler.
6060         * profiler.c, profiler-private.h: Likewise.
6061
6062 2008-05-22  Mark Probst  <mark.probst@gmail.com>
6063
6064         * generic-sharing.c: Init generic class when a method of it is
6065         requested via a runtime generic context.
6066
6067 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
6070
6071         * reflection.c (mono_type_get_object): Add a FIXME.
6072
6073         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
6074
6075         * class.c (mono_class_get_method_by_index): New helper function, returning an
6076         entry in the class->methods array.
6077
6078 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6079
6080         * class.c (mono_class_init): Only do the array optimization for szarrays. 
6081         Avoid creating a generic vtable for generic instances as well.
6082         (mono_class_get_method_from_name_flags): Don't search in the metadata for
6083         generic instances.
6084
6085 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
6086
6087         * loader.c (mono_get_method_constrained): Inflate the signature
6088         with class context. Fix #325283.
6089
6090 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
6091
6092         * object.c (mono_class_create_runtime_vtable): Add a comment.
6093
6094         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
6095         where needed.
6096         (setup_interface_offsets): Handle the case when this is called twice for arrays.
6097         (mono_class_setup_vtable_general): Add an assert.
6098         (mono_class_init): Avoid creating a generic vtable for arrays.
6099
6100         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
6101         here, let mono_class_init () do that.
6102
6103         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
6104         interfaces in mscorlib.
6105
6106         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
6107         interfaces. Add some comments.
6108         (mono_class_init): Call mono_class_setup_methods () here since it is no
6109         longer called by mono_class_setup_vtable ().
6110
6111         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
6112         not set in class->vtable.
6113         (mono_class_create_runtime_vtable): Reenable the disabled code.
6114
6115         * object.c (mono_class_create_runtime_vtable): Disable the last change for
6116         now as it causes some test failures.
6117
6118         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
6119         if using the vtable trampoline. Also remove some strange code which put the
6120         generic methods themselves into the vtable slots. Remove the AOT init_vtable
6121         stuff as it is no longer needed.
6122
6123 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
6124
6125         * pedump.c: Give make --verify all option check code as well.
6126         Using --verify code won't check for metadata now.
6127
6128 2008-05-19  Martin Baulig  <martin@ximian.com>
6129
6130         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
6131
6132         * mono-debug.c
6133         (_mono_debug_using_mono_debugger): New global variable; it's set
6134         directly by the debugger, so mono_debug_using_mono_debugger() also
6135         works after attaching.
6136
6137 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6138
6139         * object.c (mono_class_create_runtime_vtable): Use memory barriers
6140         as we do double checked locking on MonoClass::runtime_info and
6141         MonoClassRuntimeInfo::domain_vtables.
6142
6143 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * debug-helpers.c (print_field_value): Fix a warning.
6146
6147 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
6148
6149         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
6150         set in the AOT case.
6151
6152 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6153
6154         * class.c (mono_class_setup_vtable_general): Use memory barriers
6155         as we do double checked locking on MonoClass::vtable.
6156
6157 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6158
6159         * reflection.c (resolve_object): Inflate only if the generic context
6160         is not null. Fixes #389886.
6161
6162 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
6163
6164         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
6165         instead of g_free.
6166
6167         Code is contributed under MIT/X11 license.
6168
6169 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6170
6171         * class.c: Revert unrelated change.
6172
6173 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6174
6175         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
6176         a generic instantiation, use mono_class_from_mono_type instead of playing
6177         with MonoType directly.
6178
6179 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6180
6181         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
6182         checks must ignore generic instantiations, so mono_class_has_parent is not
6183         suitable. Fixes #390128.
6184
6185 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
6186
6187         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
6188         it to avoid registering tokens during metadata generation. Fixes #390023.
6189
6190 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6191
6192         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
6193         consistent.
6194
6195         Contributed under MIT/X11 license.
6196
6197 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6198
6199         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
6200         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
6201         to fixup the EXE image.
6202         (mono_cleanup): Use mono_close_exe_image.
6203         (mono_close_exe_image): New function.
6204         * image.c: Include "marshal.h".
6205         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
6206         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
6207         counting when the image is loaded outside of mono_image_open_full. Set status
6208         based on GetLastError.
6209         * coree.c: Include required headers. Add init_from_coree.
6210         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
6211         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
6212         (_CorExeMain): Set init_from_coree.
6213         (CorExitProcess): Only call ExitProcess for now.
6214         (CorBindToRuntimeEx): New stub implementation.
6215         (CorBindToRuntime): New function.
6216         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
6217         (MonoFixupExe): ILONLY executables require no fixups.
6218         (mono_set_act_ctx): New function to set activation context.
6219         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
6220         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
6221         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
6222         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
6223         as MONO_INTERNAL.
6224         * domain-internals.h: Add mono_close_exe_image.
6225
6226         Contributed under MIT/X11 license.
6227
6228 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6229
6230         * metadata.c (mono_metadata_compute_size): Correctly calculate field
6231         size for generic param and event tables. Fixes #388977.
6232
6233 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
6234
6235         * loader.c (mono_method_signature): Use memory barriers because of the double
6236         checked locking pattern.
6237
6238         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
6239         aborting or aborted as well. Fixes #376391.
6240         
6241         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
6242         existing runtime state in the Suspend handler during shutdown.
6243
6244 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
6247
6248         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6249         which are starting up or shutting down.
6250
6251         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6252         this function never returns if the runtime is already shutting down.
6253
6254         * icall.c (ves_icall_System_Environment_Exit): Update after 
6255         mono_threads_set_shutting_down () signature change.
6256         
6257 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * class.c: Added can_access_instantiation to verify if the instantiation
6260         is visible. Fix access check for nested types as they returned TRUE
6261         before doing type and generic instantiation visibility checks.
6262
6263 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6264
6265         * reflection.c (mono_reflection_create_generic_class): The created type
6266         must have a different container from its TypeBuilder. Otherwise they
6267         will end sharing generic arguments, which is wrong.
6268
6269         Due to the sharing, making a generic instance of the created type using
6270         the TypeBuider generic arguments resulted in the generic type definition
6271         been returned, which is wrong as well.
6272
6273         As a bonus the code was leaking the type_params array. This memory should
6274         be allocated from the image mempool.
6275
6276         This fixes bug #354047.
6277
6278 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6281         to here         as they are now used in assembly.c new code.
6282         Added a skipverification flag to MonoAssembly.
6283         New internal function mono_assembly_has_skip_verification.
6284
6285         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6286         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6287         part of #387274.
6288
6289 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6292         needed. Fixes #387034.
6293
6294         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6295
6296 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6297
6298         * assembly.c (mono_assembly_load_reference): Prevent crash while
6299         disassembling Silverlight 2.0 executables while we still do not
6300         have GACed libraries.
6301
6302 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6305
6306 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6307
6308         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6309         of the dynamic case. Fixes #387404.
6310
6311 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6312
6313         *verify.c (mono_verifier_is_class_full_trust): If under
6314         verify_all and the verifier mode was not set, only
6315         gac and corlib types are fulltrust. This makes --verify-all
6316         usable to detect unverifiable code, which is the expected
6317         use case.
6318
6319 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * verify.h: Ops, commited the header with debug
6322         enabled.
6323
6324 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6325
6326         * verify.c (merge_stack): Use the new value on unverifiable
6327         stack merges.
6328
6329         * verify.c (verify_type_compatibility_full): Comparison
6330         of nullable types can't use mono_class_is_assignable_from.
6331
6332         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6333         that makes all verification errors be reported.
6334
6335         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6336         mono_method_verify.
6337
6338 2008-05-05  Robert Jordan  <robertj@gmx.net>
6339
6340         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6341         support for value types. See #386415.
6342
6343         * object.c: comments.
6344
6345         Code is contributed under MIT/X11 license.
6346
6347 2008-05-05  Martin Baulig  <martin@ximian.com>
6348
6349         * debug-mono-symfile.h
6350         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6351         for old pre-terrania symbol files.
6352
6353 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6354
6355         * mono-config.c: Add ppc64 architecture.
6356
6357         Code is contributed under MIT/X11 license.
6358
6359 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6360
6361         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6362           PPC64 uses function descriptors as well.
6363
6364         Code is contributed under MIT/X11 license.
6365
6366 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6367
6368         * object.c (compute_class_bitmap): Ignore literal static fields.
6369
6370         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6371         var has an invalid format.
6372         (describe_ptr): Add some sanity checks for the vtable.
6373         (add_nursery_frag): Clear unused nursery fragments.
6374         (major_collection): Clear all remaining nursery fragments.
6375
6376 2008-05-03  Robert Jordan  <robertj@gmx.net>
6377
6378         * image.c, metadata-internals.h: add thunk_invoke_cache.
6379
6380         * marshal.c, marshal.h: implement
6381         mono_marshal_get_thunk_invoke_wrapper ().
6382
6383         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6384
6385         Code is contributed under MIT/X11 license.
6386
6387 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * verify.c (do_leave): Empty the stack.
6390
6391 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6392
6393         * class.c (mono_class_is_assignable_from): Variance
6394         doesn't work between reference and value types. For example,
6395         given type C<T+>, C<int32> is not assignable to C<object>.
6396         Break the argument checking loop on first error. 
6397
6398 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6399
6400         * icall.c : base64_to_byte_array() needs some more strict
6401           check for sequence of '=' characters. Patch by Santa
6402           Marta (http://deee.g.hatena.ne.jp/santamarta).
6403
6404           Contributed under MIT/X11 license.
6405           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6406
6407 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6408
6409         * domain.c: Disable LoadLibrary support to fix Win32 build.
6410
6411         Code is contributed under MIT/X11 license.
6412
6413 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6416         to help with cache behaviour.
6417
6418 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6419
6420         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6421         method. 
6422
6423 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6424
6425         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6426
6427 2008-05-01  Dick Porter  <dick@ximian.com>
6428
6429         * process.c (process_get_fileversion): Only pass 16 bits of
6430         language ID to VerLanguageName.  Fixes bug 381204.
6431
6432 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6433
6434         * verify.c (mono_method_verify): Fix the comparison
6435         operator for code bounds check.
6436
6437 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6438
6439         * verify.c (mono_method_verify): Check the bounds of
6440         all access of the code array.
6441
6442 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6443
6444         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6445
6446 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6447
6448         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6449         not valid.
6450
6451 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6452
6453         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6454         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6455         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6456         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6457         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6458         mono_runtime_load.
6459         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6460         runtime initialization from metadata.
6461         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6462         (mono_set_rootdir): Use mono_get_module_file_name.
6463         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6464         handles.
6465         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6466         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6467         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6468         MonoCLIImageInfo. Add support for module handles.
6469         (load_cli_header): Update mono_cli_rva_image_map signature.
6470         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6471         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6472         (mono_image_rva_map): Add support for module handles.
6473         (mono_image_ensure_section_idx): Add support for module handles.
6474         (mono_image_close): Add support for module handles.
6475         (do_load_header): Add support for module handles.
6476         (mono_image_open_from_module_handle): New function for internal use.
6477         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6478         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6479         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6480         handles.
6481         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6482         * image.h: Add mono_image_fixup_vtable.
6483         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6484         support.
6485         * coree.h: New file.
6486         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6487         unsupported native code.
6488         (mono_marshal_set_callconv_from_modopt): New function splitted from
6489         mono_marshal_get_managed_wrapper.
6490         (mono_marshal_get_managed_wrapper): Use
6491         mono_marshal_set_callconv_from_modopt.
6492         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6493         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6494         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6495         that results in a deadlock when the runtime is loaded in _CorDllMain.
6496         * Makefile.am: Add coree.c and coree.h.
6497
6498         Contributed under MIT/X11 license.
6499
6500 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6501
6502         * generic-sharing.c: Search for type arguments in array element
6503         types as well.
6504
6505 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6506
6507         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6508
6509         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6510
6511         * object.c: Don't setup the RGCTX when the vtable is created,
6512         because we're setting it up lazily now.
6513
6514 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6515
6516         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6517         64 bit support.
6518
6519 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * verify.c (verify_class_for_overlapping_reference_fields): 
6522         If class is under fulltrust allow reference types to overllap
6523         if they have the same RVA.
6524
6525 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6526
6527         * pedump.c: Added new flag valid-only, that makes the verifier
6528         behaves just like --security=validil. It won't fail type load
6529         due to unverifiable restrictions.
6530
6531 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6532
6533         * class-internals.h (struct MonoMethod): Added a verification_success
6534         field to cache verifier executions. Reduced MonoMethod:slot size by
6535         one bit.
6536
6537 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6540         instead of a 'vt' argument to save an indirection and to allow these to be used
6541         for valuetypes.
6542         (scan_vtype): New helper function to scan an area using a gc descriptor.
6543         (mono_gc_wbarrier_value_copy): Implement this.
6544         (handle_remset): Add support for REMSET_VTYPE.
6545         (find_in_remset_loc): Ditto.
6546         (mono_gc_base_init): Allow some debugging options to be controlled through the
6547         use of the MONO_GC_DEBUG env variable.
6548         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6549         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6550
6551 2008-04-23  Martin Baulig  <martin@ximian.com>
6552
6553         * domain.c (mono_domain_create): Move the call to
6554         mono_debug_domain_create() down, after allocating the domain id.
6555
6556 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6557
6558         verify.c (verify_class_for_overlapping_reference_fields): Skip
6559         static fields while verifying for overlapping fields as they
6560         don't matter at all.
6561
6562 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6563
6564         * domain-internals.h: added a declaration of
6565         mono_make_shadow_copy.
6566
6567         * assembly.c (mono_assembly_open_full): shadow copying of
6568         assemblies moved to here, so that all the assemblies within the
6569         application domain's private binary directories can be
6570         processed. Fixes bug #380546
6571
6572         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6573         mono_make_shadow_copy and made non-static. The decision whether
6574         to shadow-copy an assembly is made based on its location - it's
6575         copied if it's in one of the private application domain binary
6576         directories and its different to the target file in the shadow
6577         directory. Fixes bug #380546
6578
6579 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6580
6581         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6582
6583         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6584         types.
6585
6586         * reflection.c (mono_image_create_token): Handle 
6587         Method/ConstructorOnTypeBuilderInst.
6588         (resolve_object): Ditto.
6589         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6590         so it can be called from resolve_object. Also handle the case when the inflated
6591         class already has its methods setup.
6592
6593 2008-04-21  Martin Baulig  <martin@ximian.com>
6594
6595         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6596
6597 2008-04-20  Geoff Norton  <gnorton@novell.com>
6598
6599         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6600         pointer dereference.
6601
6602 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6603
6604         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6605         portability API to look up the assembly file. Fixes behavior in
6606         situations when the application has a bin/ directory, but the
6607         assembly search patch refers to Bin/ (and thus the requested file
6608         name is Bin/SomeLibrary.dll). Fixes bug #379888
6609
6610 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6611
6612         verify.c (mono_type_is_generic_argument): Extracted this check
6613         from a dozen places to here.
6614
6615         verify.c: Fixed all issues related to boxing generic arguments
6616         and their constraints.
6617
6618 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6619
6620         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6621
6622 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6625         isn't finished yet. Fixes #363447.
6626
6627 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6628
6629         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6630         Fixes #346419.
6631
6632 2008-04-13  Jb Evain  <jbevain@novell.com>
6633
6634         * domain.c: update the 2.1 profile versions.
6635         Merged from the Moonlight 2 branch.
6636
6637 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6640         mscorlibs for the non-refonly case as well.
6641
6642         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6643         in mono_assembly_load_from_full (). Fixes #378924.
6644
6645 2008-04-11  Geoff Norton  <gnorton@novell.com>
6646
6647         * icall.c: The global extern environ doesn't exist on Mac.  We
6648         need to call NSGetEnviron instead.
6649
6650 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6651
6652         verify.c: Add generic method constraint verification.
6653
6654 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6655
6656         class.c (mono_class_inflate_generic_method_full): Add a long
6657         explanation to the is_mb_open hack. Remove the FIXME.
6658
6659 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6660
6661         * verify.c (mono_method_verify): Mark all unknown opcodes
6662         as invalid. Mark jmp as unverifiable.
6663
6664 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * verify.c: Add code to do type constraint verification on class instances.
6667
6668         * verify.c (mono_verifier_verify_class): Use the type constraint 
6669         verification code.
6670
6671 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6672
6673         * class.c (mono_class_get_field_default_value): Don't pass cindex
6674         as hint to mono_metadata_get_constant_index. The local is not initialized
6675         and should contain garbage most of the time. This could only work
6676         with a lot of luck.
6677
6678 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6679
6680         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6681
6682 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6683
6684         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6685
6686         * class.c (mono_class_from_generic_parameter): Save the token of the
6687         generic param in MonoClass::sizes.generic_param_token.
6688
6689         * reflection.c (mono_custom_attrs_from_class): If the class type is
6690         VAR or MVAR retrieve the attributes of the generic param.
6691
6692 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * class.c (mono_class_init): Do class verification if the verifier
6695         is enabled.
6696
6697 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6698
6699         * verify-internal.h: Added mono_verifier_verify_class.
6700
6701         * verify.c: Added mono_verifier_verify_class. It checks for
6702         classes with explicit layout that have overlapping reference fields.
6703
6704         * pedump.c: Init the verifier state prior to verification. Fixed
6705         command line arguments.
6706
6707 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6708
6709         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6710
6711 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * verify-internals.h: Fix a warning.
6714
6715 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6716
6717         * verify-internals.h: New header with the verifier configuration
6718         extracted from mini.c.
6719
6720         * verify.c: Implemented the new functions exported by verify-internals.h.
6721
6722 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6723
6724         * verify.c: Add proper verification of ckfinite.
6725
6726 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6727
6728         * verify.c (do_conversion): Improved error message to something
6729         more meanfull.
6730
6731         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6732         with primitive types.
6733
6734 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6735
6736         * verify.c: Added tail prefix checking. Marked icall
6737         as unverifible.
6738
6739 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6740
6741         * verify.c: Fix the detection of branches to the middle
6742         of an instruction.
6743
6744 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * verify.c: Implemented verification of volatile. and
6747         unaligned. prefix. Check if a type is valid after retrieving it.
6748
6749 2008-04-01  Dick Porter  <dick@ximian.com>
6750
6751         * process.c (process_get_fileversion): If there's no string block,
6752         set the file language to en_US.  Fixes the other new part of bug
6753         374600.
6754
6755 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6756
6757         * class.c: New functions mono_method_can_access_field_full and
6758         mono_method_can_access_method_full. They perform type visibility
6759         and type site check.
6760
6761         * class-internal.h: Added exported functions.
6762
6763         * verify.c: Use new functions to implement proper visibility checks.
6764
6765 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6766
6767         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6768
6769 2008-03-28  Dick Porter  <dick@ximian.com>
6770
6771         * process.c (process_get_fileversion): Use the first language ID
6772         we see, rather than insisting on an invariant language.  Fixes bug
6773         374600.
6774
6775 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6776
6777         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6778         the streams to fix reading of invalid memory later.
6779
6780         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6781         to ease debugging.
6782
6783 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6786         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6787
6788 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6789         * threads.h: Added MonoThreadManageCallback type and
6790         mono_thread_set_manage_callback prototype
6791         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6792         (used to store the mono_thread_manage callback).
6793         * threads.c: Added mono_thread_set_manage_callback, and handle
6794         "MonoThread->manage_callback" in build_wait_tids.
6795
6796 2008-03-26  Dick Porter  <dick@ximian.com>
6797
6798         * process.c (process_get_fileversion): Set FileVersionInfo strings
6799         to Empty when the resource doesn't have the particular info.
6800         Fixes bug 355717.
6801
6802 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6803
6804         * verify.c (mono_method_verify): Proper prefix validation.
6805
6806 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6809         itself in a separate argument instead of throwing them. Fixes #373448.
6810
6811         * appdomain.c: Bump corlib version.
6812
6813 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6814
6815         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6816
6817 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6818
6819         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6820         version macros.
6821
6822 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6823
6824         * generic-sharing.c, class-internals.h: Code for putting
6825         reflection types into the runtime generic context.
6826
6827 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6828
6829         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6830         Fixes #340662. 
6831
6832
6833 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6834
6835         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6836
6837         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6838
6839         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6840
6841         * verify.c (do_cast): Let the result value keep the boxed status.
6842
6843         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6844
6845 2008-03-17  Jb Evain  <jbevain@novell.com>
6846
6847         * reflection.c: when running on a 2.0 runtime, emit
6848         unconditionally the #~ header version as 2.0, and the
6849         CLI header version as 2.5, for symmetry's sake with csc.
6850
6851 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6852
6853         * class.c: Remove the unused cache_interface_offsets stuff.
6854
6855         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6856         profiler.c: Fix warnings.
6857
6858 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6859
6860         * generic-sharing.c, class-internals.h: Support for putting
6861         methods into the runtime generic context.
6862
6863 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6866         classes which are generic instances of not-yet finished typebuilders. Fixes
6867         #351172.
6868
6869         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6870
6871 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6872
6873         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6874
6875         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6876         field, replace it with a hash table in MonoDynamicImage.
6877
6878         * reflection.c (inflate_mono_method): Access the generic definition object from
6879         image->generic_def_objects instead of imethod->reflection_info.
6880
6881         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6882
6883         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6884         
6885         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6886         function in reflection.c so it is easier to keep in sync with the dynamic image
6887         creation code.
6888
6889         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6890         mono_image_close ().
6891
6892 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6893
6894         * class.c (mono_class_generic_sharing_enabled): Disable generic
6895         sharing for all architectures except AMD64 and x86 to fix build.
6896
6897 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6898
6899         * verify.c: Use the generic definition MonoGenericContext when available.
6900         Remove code for checking generics instance compatibility in favor of
6901         mono_class_is_assignable_from.
6902
6903 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6904
6905         * marshal.c, marshal.h, metadata-internals.h, image.c,
6906         wrapper-types.h: New wrapper for invoking a shared static method
6907         without having to pass the runtime generic context argument.
6908
6909 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6910
6911         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6912
6913 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6914
6915         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6916         
6917         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6918         create a token from a FieldOnTypeBuilderInst.
6919         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6920         (resolve_object): Ditto.
6921
6922         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6923         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6924
6925 2008-03-14  Martin Baulig  <martin@ximian.com>
6926
6927         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6928
6929         * debug-mono-symfile.h
6930         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6931         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6932
6933 2008-03-10  Martin Baulig  <martin@ximian.com>
6934
6935         * debug-mono-symfile.h
6936         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6937         `lexical_block_table_offset'.
6938         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6939         `lexical_blocks'.
6940         (MonoSymbolFile): Added `version'.
6941
6942         * mono-debug.h
6943         (MonoDebugLexicalBlockEntry): Removed.
6944         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6945         `lexical_blocks'.
6946
6947         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6948         blocks here; the debugger now does this internally.
6949
6950 2008-02-27  Martin Baulig  <martin@ximian.com>
6951
6952         * object.c (mono_runtime_exec_main): Call
6953         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6954         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6955
6956 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6957
6958         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6959         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6960
6961 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6962
6963         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6964         ldftn with a virtual method.
6965
6966 2008-03-13  Geoff Norton  <gnorton@novell.com>
6967
6968         * decimal.c:  Only include memory.h if the platform has it.
6969
6970 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6971
6972         * assembly.c, class.c, metadata-internals.h: make sure public key
6973         tokesns are compared in a case-insensitive way. Also, all
6974         the lookups in the GAC use a lowercase public key token
6975         (gaacutil already does the lowercasing on install). Fixes
6976         bug #369541.
6977
6978 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6979
6980         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6981         and return value.
6982
6983 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6984
6985         * image.c: when someone loads a mscorlib from a file, return the
6986         currently loaded mscorlib (fixes bug #369253).
6987
6988 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6989
6990         * class.c: handle types with no parents by forcing them to have
6991         System.Object as a parent and marking them as broken (this currently
6992         allows the first part of bug #369173 to work as well, likely because
6993         we don't check for typeload exceptions everywhere yet).
6994
6995 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6996
6997         * class.c: more complete check that types belong to corlib
6998         (fixes second part of bug #369173).
6999
7000 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
7001
7002         * generic-sharing.c:  Including glib.h for the MSVC builds to define
7003           "inline" to "__inline" before including mono-membar.h.
7004           
7005         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
7006           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
7007           MSVC builds.
7008
7009         Contributed under MIT/X11 license.
7010
7011 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7012
7013         * verify.c (do_invoke_method): Remove return type validation.
7014
7015         * verify.c (do_ret): Do return type validation at return site instead of
7016         call site.
7017
7018 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
7019
7020         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
7021
7022         * verify.c: Some todos cleaned and improved a few error messages.
7023
7024 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
7027
7028 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
7031         system types correctly.
7032
7033         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
7034         function.
7035
7036 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7037
7038         * assembly.c (build_assembly_name): Fix a warning.
7039
7040 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7041
7042         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
7043         the called function takes an object type argument. Fixes storing or
7044         valuetypes across remoting as well as reducing memory usage.
7045         * image.c, metadata-internals.h: remove now unused ldfld_remote and
7046         stfld_remote wrapper caches.
7047
7048 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
7049
7050         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
7051         is not found.
7052
7053         * reflection.c (mono_image_register_token): New helper function to save
7054         a token->object mapping.        
7055
7056         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
7057         managed code.
7058
7059         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
7060         one dimension arrays. Fixes #367670.
7061         (mono_reflection_get_type_internal): Ditto.
7062
7063 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
7064
7065         * marshal.c: mono_load_remote_field_new() always returns object.
7066         so use the proper signature (fixes bug #366445).
7067
7068 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7069         
7070         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
7071         add an 'inline_failure' flag instead.
7072
7073 2008-03-04  Mark Probst  <mark.probst@gmail.com>
7074
7075         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
7076         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
7077         contains the location of "this", used for exception handling.
7078
7079 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
7082         their size on all platforms for perf reasons.
7083
7084 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7085
7086         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
7087         object-internal.h
7088
7089         * object-internal.h: Same.
7090
7091 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7092
7093         * reflection.h: Fix the build I just broke.
7094
7095 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7096
7097         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
7098         Test if a token is valid, this remove explicit usage of 
7099         MonoDynamicImage::tokens from the verifier code.
7100
7101         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
7102
7103         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
7104         instead of direct access to MonoDynamicImage::tokens.
7105
7106 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * verify.c (token_bounds_check): Fix the build I just broke.
7109
7110 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
7111
7112         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
7113
7114         * verify.c (verifier_load_method): Fixed the errors message.
7115
7116         * verify.c (mono_method_verify): Fixed a debug message.
7117
7118 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
7119
7120         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
7121         mono-perfcounters.h, class-internals.h: support for predefined
7122         writable counters, query of categories and counters, bugfixes.
7123
7124 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7125
7126         * verify.c (do_refanytype): Verify the refanytype opcode.
7127
7128         * verify.c (mono_method_verify): Use do_refanytype.
7129
7130 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * verify.c (do_mkrefany): Verify the mkrefany opcode.
7133
7134         * verify.c (mono_method_verify): Use do_mkrefany.
7135
7136 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
7137
7138         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
7139         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
7140         implementation.
7141
7142 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7143
7144         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
7145         the type load exception.
7146
7147 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7148
7149         * verify.c: Added a few FIXME for method signatures
7150
7151         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
7152         of mono_method_get_signature and get vararg call working. Removed unused
7153         checks for return value.
7154
7155         * verify.c (do_refanyval): Verify the refanyval opcode.
7156
7157         * verify.c (mono_method_verify): Implemented verification of arglist and
7158         use do_refanyval.
7159
7160 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7161
7162         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
7163         vtypes to marshal.c.
7164
7165         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
7166         it works for AOT as well.
7167
7168 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7169
7170         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
7171         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
7172         the system time is adjusted.
7173
7174 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
7175
7176         * icall.c, icall-def.h: use the new time functions (fixes the
7177         non-monotonic behaviour of TickCount).
7178
7179 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
7182         it breaks the build.
7183         
7184         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
7185         cattr is not finished yet.
7186
7187 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7188
7189         * verify.c: Proper token validation for field, method and type.
7190
7191 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7192
7193         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
7194
7195         * loader.c (method_from_memberref): Generate type load error instead of method missing
7196         if the type is not found.
7197
7198 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
7201         some of the conversions caused the generation of a marshal directive exception.
7202
7203 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7204
7205         verify.c: Report which exception should be thrown by the JIT.
7206         Added a lot of FIXME notes.
7207
7208 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7209
7210         * generic-sharing.c: Runtime generic context slots are not
7211         instantiated on init anymore.  Instead, provide function to do the
7212         instantiating on demand.
7213
7214         * class-internals.h: Added vtable to runtime generic context.
7215         Macros for encoding direct and indirect slot offsets in one
7216         guint32.
7217
7218 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7219
7220         * object.c, generic-sharing.c: Moved some generic sharing code
7221         from object.c to generic-sharing.c.
7222
7223         * generic-sharing.c: Added support for extensible runtime generic
7224         context.
7225
7226         * metadata-internals.h: Two new hash tables in MonoImage for
7227         extensible runtime generic context support.
7228
7229         * domain.c: Unregister generic vtables upon domain unloading.
7230
7231         * image.c: Destroy new hash tables upon image unloading.
7232
7233         * metadata.c: Unregister generic subclasses upon image unloading.
7234
7235         * class-internals.h: New data structure for runtime generic
7236         context template.  New fields in the runtime generic context for
7237         extensible part.
7238
7239         * Makefile.am: Added generic-sharing.c.
7240
7241 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7242
7243         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
7244         there is a pending loader exception, raise it.
7245
7246         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7247         same.
7248
7249         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7250         same.
7251
7252         Fixes #363450.
7253
7254 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7255
7256         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7257
7258         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7259         
7260         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7261         ref-only requests for compatibility with MS.
7262
7263 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7264
7265         * reflection.c (mono_custom_attrs_from_method): Don't silently
7266         return an empty list for generic method instances.
7267         (mono_custom_attrs_from_param): Likewise.
7268
7269 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7270             Raja R Harinath  <harinath@hurrynot.org>
7271
7272         Fix #354757
7273         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7274         * class.c (mono_class_inflate_generic_method_full): Initialize it
7275         when a fully-open method is instantiated.
7276         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7277         to new field.
7278         * reflection.c (inflate_mono_method): Don't create a temporary context.
7279
7280 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7281
7282         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7283         Compute correct value, to prepare for imethod->reflection_info going away.
7284
7285 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7288
7289 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * verify.c: Implement skip visibility flag.
7292
7293 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7294
7295         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7296         which contains an extra field to tell the kind of exception that should be thrown.
7297
7298         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7299
7300 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7301
7302         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7303         'method' is updated.
7304
7305 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7308         explicit layout as well. Fixes #360375.
7309
7310 2008-02-11  Geoff Norton  <gnorton@novell.com>
7311
7312         * loader.c: Guard and dereference against inflated generic methods
7313
7314 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7315
7316         * class.c: Include Retargetable spec in assembly name.
7317         * assembly.c: Always include PublicKeyToken spec in assembly name
7318         (with value "null" if assembly is not signed), and include
7319         Retargetable spec.
7320         * icall-def.h: Added icall for Assembly.get_fullname.
7321         * icall.c: Added icall returning the fullname of an assembly.
7322
7323 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * class.c (mono_class_setup_vtable_general): Add a missing call to
7326         mono_class_setup_methods () which is needed in the AOT case.
7327
7328 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7329
7330         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7331         stack type of the given MonoType.
7332
7333         * verify.c (verify_type_compatibility_full): Handle the void type.
7334
7335         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7336         way stack merging works.
7337
7338         * verify.c (store_local): Improved verification message.
7339
7340         * verify.c (do_branch_op): If the merging is invalid, the method
7341         is unverifiable and not invalid. Improved error message.
7342
7343         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7344         a reference type diferent than System.Object. Improved error
7345         message.
7346
7347 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7348
7349         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7350
7351         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7352         type of an enum even if the argument is byref.
7353
7354         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7355         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7356
7357         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7358
7359         *verify.c (verify_type_compatibility_full): Make enum types
7360         compatible with their base types.
7361
7362         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7363         types are compatible for the special case of a boxed valuetype and
7364         System.Object.
7365
7366         * verify.c (verify_stack_type_compatibility): The function
7367         is_compatible_boxed_valuetype was extracted from here.
7368
7369         * verify.c (push_arg): Only set ctx->has_this_store if the method
7370         is not static.
7371
7372         * verify.c (do_ldelem): Fixed a typo in an error message and added
7373         strict check for mixing int32 and native int as the array type
7374         and ldelem type.
7375
7376         * verify.c (merge_stacks): Consider boxed valuetypes in the
7377         compatibility checks.
7378
7379 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7380         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7381
7382 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7383         *class.c: use_new_interface_vtable_code: renamed the env var to have
7384         a "MONO_" prefix, and fix the logic to enable it by default.
7385
7386 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7387         *class.c:
7388         mono_class_setup_vtable_general: rewrote the way in which interface
7389         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7390         makes the code more maintainable.
7391         For now the old code is still there, and can be activated setting
7392         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7393
7394 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * verify.c: guarded some debug functions around and #ifdef.
7397
7398         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7399
7400 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7401
7402         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7403         changes for now since they seem to break too many things.
7404
7405 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7406
7407         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7408         mono_marshal_find_nonzero_bit_offset): Added macro and function
7409         for finding the byte- and bit-offset of a bitfield within a
7410         struct.
7411
7412 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7415         (mono_marshal_get_struct_to_ptr): Ditto.
7416
7417         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7418         cctor_signature.
7419
7420 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7423         between methods for non-corlib types.
7424
7425 2008-02-02  Geoff Norton  <gnorton@novell.com>
7426
7427         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7428         generic parameters as well. (Fixes #342536)
7429
7430 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7433
7434         * verify.c (do_invoke_method): Fix for calling with byref structs.
7435
7436         * verify.c (do_cast): push a boxed value type based on the type token and not
7437         the type of stack.
7438
7439 2008-01-31  William Holmes  <billholmes54@gmail.com>
7440
7441         * process.c (process_module_string_read): Check the size returned form 
7442           VerQueryValue to avoid out of memory exception. 
7443
7444 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7447         Handle properly modules which are not in the moduleref table. Fixes
7448         #356938.
7449
7450 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7451
7452         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7453         the dynamic case which is now in managed code.
7454         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7455
7456         * marshal.c (mono_string_to_bstr): Fix a warning.
7457         (init_com_provider_ms): Ditto.
7458
7459         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7460
7461         * exception.c (mono_get_exception_out_of_memory): New helper function.
7462
7463 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7464
7465         * marshal.c: Add support for BSTR marshalling
7466         using other COM systems.
7467
7468         Code is contributed under MIT/X11 license.
7469
7470 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7471
7472         * object.c (mono_runtime_invoke_array): reverted previous
7473         commit as it breaks the build.
7474
7475 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7476
7477         * object.c (mono_runtime_invoke_array): Verify arguments for
7478         invalid types. Fixes #348522.
7479
7480 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7481
7482         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7483         non-final virtual calls using call. 
7484
7485         * verify.c (do_invoke): fixed some TODOs.
7486
7487         * verify.c (push_arg): set has_this_store for "ldarga 0".
7488
7489 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7492         which belong to an inflated class. Fixes #356531.
7493
7494 2008-01-26  Robert Jordan  <robertj@gmx.net>
7495
7496         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7497         which resort to FindFirstFile when a certain error condition
7498         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7499         Code is contributed under MIT/X11 license.
7500
7501 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7502
7503         * marshal.c (emit_marshal_string): Fix out string marshalling
7504         to use specified encoding. Fixes #323900.
7505
7506         Code is contributed under MIT/X11 license.
7507
7508 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7509
7510         * class.c (mono_class_inflate_generic_method_full): Don't modify
7511         iresult->context after cache check.
7512
7513 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * class.c (mono_class_inflate_generic_method_full): Change the
7516         struct assignments to memcpy for better visibility and add some comments.
7517
7518 2008-01-23  Dick Porter  <dick@ximian.com>
7519
7520         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7521         procedure, and make it work on windows.
7522
7523 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7526         a MonoReflectionTypeBuilder since it is always of that type.
7527
7528         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7529
7530         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7531
7532         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7533         
7534         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7535
7536         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7537
7538         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7539         instantiations from the type cache.
7540
7541 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7542
7543         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7544
7545         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7546
7547 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7548
7549         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7550
7551         * verify.c (mono_method_verify): removed old TODO
7552
7553 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7554
7555         * verify.c (do_newobj): add visibility check.
7556
7557 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7558
7559         * verify.c (do_load_function_ptr): add visibility check.
7560
7561 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7562         *class.c:
7563         mono_generic_class_get_class: hook profiler events.
7564         mono_field_get_offset: added to support heap-shot in the new profiler.
7565         *class.h: exported mono_field_get_offset.
7566         * reflection.c:
7567         mono_reflection_setup_internal_class: hook profiler events.
7568
7569 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7570
7571         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7572         argument here too and use it to avoid checking for pending exceptions if 
7573         possible.
7574
7575 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7576
7577         * assembly.c (build_assembly_name): add arg for passing the assembly
7578         flags. Do not consider a PublicKey with value "null" valid.
7579         (mono_assembly_name_parse_full): added boolean argument that will be
7580         set if the assembly name contains a PublicKeyToken spec. Added support
7581         for the Retargetable spec for which only Yes or No are allowed as valid
7582         value. Consider assembly name invalid if Retargetable spec is set, but
7583         either version, culture or public key (token) are not specified.
7584         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7585         with implementation in assembly.c.
7586         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7587         from MonoAssemblyName.
7588         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7589         introduced argument for mono_assembly_name_parse_full to know if the
7590         assembly name has a PublicKeyToken spec, and if it has instruct
7591         fill_reflection_assembly_name to use default value for keyToken (if
7592         PublicKeyToken is null).
7593
7594 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7595
7596         * verify.c (mono_method_verify): fixed ovf ops with
7597         float values. They are unverifiable now.
7598
7599 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * class.c (set_failure_from_loader_error): add BadImageException to the
7602         list of exceptions that can cause a type to fail to load.
7603
7604         * class.c (mono_class_get_exception_for_failure): same.
7605
7606 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7607
7608         * verify.c (in_any_exception_block): added, check if offset
7609         is part of any exception handling clause.
7610
7611         * verify.c (get_stack_type): added VAR and MVAR types.
7612
7613         * verify.c (do_stobj): better error messages.
7614
7615         * verify.c (do_cpobj): added, check cpobj.
7616
7617         * verify.c (do_initobj): added, check initobj.
7618
7619         * verify.c (do_sizeof): added, check sizeof.
7620
7621         * verify.c (do_localloc): added, check localloc.
7622
7623         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7624
7625 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7628         save_lmf/restore_lmf opcodes.
7629
7630         * threads.c (mono_threads_install_notify_pending_exc): New function to
7631         install a callback notifying the JIT there is a pending exception on a thread.
7632         (mono_thread_request_interruption): Call the new callback.
7633         (mono_thread_get_and_clear_pending_exception): New function to return the
7634         exception pending on a thread.
7635
7636         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7637         to turn off checking for pending exceptions.
7638         (mono_marshal_get_native_wrapper): Ditto.
7639
7640 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7641
7642         * threads-types.h: Get rid of the unnecessary extern declarations.
7643
7644 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7645
7646         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7647         return field from parent class if not private.
7648         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7649         returns fields from parent class if they are not private.
7650         (method_nonpublic): added function to determine if a given method
7651         should be considered non-public. Returns false for private methods
7652         on parent class, and internal methods from parent on the 1.0 profile.
7653         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7654         use method_nonpublic function to determine whether method should be
7655         returned.
7656         (property_accessor_public): use newly introduced method_nonpublic
7657         function to determine whether accessor is non-public. 
7658         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7659         event from parent class if not private. Only return static event if
7660         Static flag is set, and only return static event from parent class if
7661         FlattenHierarchy flag is set.
7662         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7663         include non-private events from parent class.
7664
7665 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7668         warning.
7669
7670 2008-01-16  Wade Berrier <wberrier@novell.com>
7671
7672         * security.c: Add assembly.h header to appease some warnings
7673
7674 2008-01-16  Dick Porter  <dick@ximian.com>
7675
7676         * process.c (process_module_string_read): Remove trailing null
7677         when saving string.
7678
7679 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7680
7681         * class-internals.h: A new data structure describing the layout of
7682         a runtime generic context (MonoRuntimeGenericContextTemplate).
7683
7684         * metadata-internals.h: Added a hash table to MonoDomain that maps
7685         from open generic classes to their runtime generic context
7686         templates.
7687
7688         * object.c: Building of the runtime generic context, including
7689         proper handling of generic type arguments of superclasses.
7690         Building of the runtime generic context according to the template.
7691
7692 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7695         Fixes #350856.
7696
7697         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7698         mono_portability_find_file (). Fixes #325466.
7699         (mono_image_get_public_key): Fix a warning.
7700
7701 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7704         Fixes #353550.
7705         (mono_class_from_name_case): Ditto.
7706
7707 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7708
7709         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7710           common storage for the tables used in the System/NumberFormatter class.
7711
7712 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7713
7714         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7715
7716 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7717
7718         * verify.c (get_boxable_mono_type): check if the token is valid.
7719
7720         * verify.c (set_stack_value): changed to add an error if an
7721         invalid type is set on stack. Changed all callers due to signature change.
7722
7723         * verify.c (do_stobj): implement stobj validation.
7724
7725 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7726
7727         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7728         set container->is_method, it was set earlier.
7729
7730         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7731         generic methods.
7732
7733         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7734         is_method of the generic container to TRUE for methods.
7735
7736 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7737
7738         * metadata.c (type_in_image): Handle type parameters properly.
7739
7740         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7741         memory ownership of this structure.
7742
7743 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7744
7745         * verify.c (get_boxable_mono_type): make typedref types been just
7746         unverifiable. check for void type.
7747
7748         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7749
7750         * verify.c (do_load_function_ptr): accept method spec tokens.
7751
7752 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7753
7754         * marshal.c (mono_class_native_size): Always set *align even if this is called
7755         recursively.
7756
7757 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7758
7759         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7760         out-of-date.
7761
7762 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7763
7764         * verify.c: removed some old unused tables. A huge bunch of small fixes
7765         to things found while testing the verifier with mono basic.
7766
7767         * verify.c (dump_stack_value): dump null literal flag to.
7768
7769         * verify.c (verify_type_compatibility_full): fix comparison
7770         for types that have a generic super type.
7771
7772         * verify.c (verify_stack_type_compatibility): fix compatibility
7773         between null literals and reference types. fix compatibility between
7774         boxed valuetypes and object. fix corner case test for enums.
7775
7776         * verify.c (do_cmp_op): proper verification of cgt.un in case
7777         of reference types.
7778
7779         * verify.c (do_invoke_method): fix error message.
7780
7781         * verify.c (do_store_indirect
7782
7783         * verify.c (check_is_valid_type_for_field_ops): proper verification
7784         of managed pointers to valuetypes and boxed valuetypes. proper verification
7785         of null literals.
7786
7787         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7788         allow token to be a reference type.
7789
7790         * verify.c (do_cast): proper handling of boxes valuetypes.
7791
7792         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7793         in object[].
7794
7795         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7796         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7797         fixed the decoding of unbox_any
7798
7799 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7800
7801         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7802
7803 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * verify.c (do_newobj): do delegate verification.
7806
7807         * verify.c (verify_delegate_compatibility): perform delegate
7808         verification.
7809
7810         * verify.c (verify_ldftn_delegate): perform tests related to
7811         ldftn delegates.
7812
7813         * verify.c (mono_delegate_signature_equal): perform the
7814         slightly diferent signature comparison required by delegates.
7815
7816         * metadata.c (mono_metadata_type_equal_full): added and exported
7817         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7818         allows signature only comparison.
7819
7820         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7821         as MONO_INTERNAL.
7822
7823 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7824
7825         * verify.c: added a bunch of stack_slot_* functions to
7826         make access to stack slot type easier. This is required to
7827         allow optional flags, like null literal, boxed value and
7828         this pointer.
7829         All access paths to IlStackDesc::stype have been changed 
7830         to use these new funcions.
7831         Removed a bunch of unused functions and cleared all warnings.
7832         This patch introduces the usage of the this pointer and 
7833         boxed value flags.
7834
7835 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7836
7837         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7838
7839 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7840
7841         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7842         match managed version.
7843
7844         * appdomain.c: Bump corlib version.
7845         
7846         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7847         argument.
7848
7849 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7850
7851         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7852         Set public key token to zero-length byte array if assembly is not
7853         strongnamed.
7854
7855 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7856
7857         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7858         writing a vtype array elem.
7859
7860 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7861
7862         * assembly.c (build_assembly_name): return FALSE if length of token is
7863         not 16 (if not "null").
7864         (mono_assembly_name_parse_full): return FALSE if value of version,
7865         culture, token or key is 0.
7866         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7867         specify whether public key and public key token must be set to default
7868         value (zero-length byte array) if not available. Set versioncompat to
7869         SameMachine. If public key is available or the default is set, then
7870         set PublicKey flag.
7871         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7872         is available, use empty byte array as default value. On the 2.0
7873         profile, use default value for public key token if not set.
7874         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7875         profile, use default value for public key if not set. On the 2.0
7876         profile, use default value for public key token if not set.
7877         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7878         default values for public key and public key token.
7879
7880 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7881
7882         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7883         field to keep it in synch with the managed object.
7884
7885         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7886         delegates. Fixes #351520.
7887
7888         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7889         contains defined memory.
7890         
7891         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7892
7893         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7894         
7895         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7896         of the GC data structures.
7897
7898         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7899
7900         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7901         
7902         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7903         barrier.
7904         (mono_array_clone_in_domain): Ditto.
7905         (mono_array_clone_in_domain): Ditto.
7906
7907         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7908         (cache_culture): Use a write barrier.
7909
7910         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7911         (ves_icall_get_property_info): Ditto.
7912
7913         * object.h (MONO_STRUCT_SETREF): New macro.
7914
7915         * class-internals.h (MonoStats): Add some GC statistics.
7916
7917         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7918
7919 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7920
7921         * exception.c (mono_exception_from_name_two_strings):
7922         Break from loop after method is found.
7923
7924 2008-01-04  Dick Porter  <dick@ximian.com>
7925
7926         * process.c (process_module_string_read): Rename variable to
7927         reflect correct usage, after fixing bug 345972.
7928
7929 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7930
7931         * verify.c (mono_type_create_fnptr_from_mono_method): 
7932         created a MonoType function pointer instance to be used during
7933         verification. The verifier releases this memory at end.
7934
7935         * verify.c (mono_method_is_constructor): extracted repeated
7936         checks for constructor into a single class.
7937
7938         * verify.c (do_push_field): use new extracted method
7939         for constructor check.
7940
7941         * verify.c (do_newobj): same.
7942
7943         * verify.c (do_ldftn): renamed to do_load_function_ptr
7944         and make it verify ldvirtftn too.
7945
7946         * verify.c (mono_method_verify: proper verification
7947         of ldvirtftn. release created MonoMethod instances.
7948
7949 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * verify.c (token_bounds_check): added.
7952
7953         * verify.c (do_ldftn): added.
7954
7955         * verify.c (mono_method_verify): proper verificartion of ldftn.
7956
7957 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7958
7959         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7960         than the table row count. It's the resposibility of the caller to
7961         make the bounds check and raise the correct error.
7962
7963         * metadata.c (mono_metadata_decode_row_col): Same.
7964
7965         * loader.c (mono_get_method_from_token): perform bounds check
7966         on token for methoddef table.
7967
7968 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7969
7970         * icall.c
7971         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7972         assert into a negative result, the managed code already coped with
7973         that.
7974
7975         Some folks on Windows reported this error. 
7976
7977 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7978
7979         * appdomain.c: Bump corlib version.
7980         * icall.c:
7981         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7982         CultureInfo.CreateCulture to create CultureInfo for name.
7983         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7984         create CultureInfo for name. Fixes bug #347174.
7985
7986 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7987
7988         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7989         flags.
7990
7991         * verify.c (is_valid_branch_instruction): allow branching to the
7992         first instruction of the protected block.
7993
7994         * verify.c (is_valid_cmp_branch_instruction): same.
7995
7996         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7997         avoid double initialization.
7998
7999         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
8000         detect which cases the eval stack should just be copied.
8001
8002         * verify.c (mono_method_verify): check if the eval stack
8003         is empty when entering a protected block.
8004
8005 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
8006
8007         * verify.c: added is_clause_in_range, is_clause_inside_range,
8008         is_clause_nested and verify_clause_relationship. They perform
8009         the verifications stated in P1 12.4.2.7.
8010
8011         * verify.c (mono_method_verify): remove some unused variables,
8012         add the new exception clause checks, add instruction border
8013         checks for protected block start/end, improved some error 
8014         messages and fixed a bug in the way invalid instruction access
8015         is detected.
8016
8017 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
8018
8019         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
8020         from GC 7.0 if available.
8021
8022         * object.c: Remove an unused define.
8023         
8024         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
8025
8026         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
8027
8028         * null-gc.c (mono_gc_make_descr_for_array): Implement.
8029
8030         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
8031
8032         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
8033         to take the same arguments as the other make_descr functions.
8034
8035         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
8036
8037         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
8038         directly.
8039
8040         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
8041         mini.c.
8042
8043         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
8044         call to boehm-gc.c.
8045
8046         * boehm-gc.c (mono_gc_register_root): Fix a warning.
8047
8048         * null-gc.c (mono_gc_register_root): Fix a warning.
8049
8050         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
8051
8052         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
8053         (mono_gc_base_init): Call GC_init ().
8054
8055         * null-gc.c: Define mono_gc_register_root () as a no-op.
8056
8057         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
8058
8059 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
8060
8061         * verify.c: add prototype for merge_stacks at top
8062
8063         * verify.c (do_switch): added.
8064
8065         * verify.c (merge_stacks): on some cases the stack merging
8066         was not happening properly. Unequal stack sizes at merge
8067         points should be invalid.
8068
8069         * verify.c (mono_method_verify): added more debug info on stack state.
8070         verify switch properly.
8071
8072 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
8073
8074         * method-builder.h: New file, moved the mono_mb_ declarations here from 
8075         marshal.h.
8076
8077         * boehm-gc.c marshal.c: Include method-builder.h.
8078
8079         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
8080
8081         * marshal.c: Remove some code which is now in method-builder.c.
8082
8083 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * method-builder.c: New file, extraction of the method builder functionality 
8086         from marshal.c.
8087
8088         * marshal.c: Move the mb functions into method-builder.c.
8089
8090         * marshal.h marshal.c: Export some mono_mb_... functions.
8091
8092         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
8093
8094         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
8095         the caller.
8096
8097         * class.c (mono_class_get_full): Check the token type in the dynamic case.
8098
8099         * loader.c (mono_field_from_token): Ditto.      
8100
8101         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
8102         type as well.
8103         
8104         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
8105         Fixes #342565.
8106
8107         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
8108         a helper function for setting it.
8109
8110         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
8111
8112         
8113         * assembly.c: Significally simplify code now that referenced assemblies are 
8114         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
8115
8116         * threads.h: Don't include  the internal threads-types.h header file. Fixes
8117         #349952.
8118
8119 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
8122         instructions that were target of branches or are at protected block boundaries.
8123
8124         * verify.c (in_same_block): handle filter clauses.
8125
8126         * verify.c (is_valid_branch_instruction): added. checks the target of
8127         instructions br or brtrue/false.
8128
8129         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
8130         binary branch instructions such as beq and bge.
8131
8132         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
8133         and made it pin the instruction as been part of the exception block.
8134
8135         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
8136         of in_same_block.
8137
8138         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
8139         of in_same_block.
8140
8141         * verify.c (do_ret): ret from a protected block is unverifiable and
8142         not invalid.
8143
8144         * verify.c (do_static_branch): verify br and br.s instructions.
8145
8146         * verify.c (merge_stacks): add extra param to support detection
8147         of branches in the middle of instructions.
8148         
8149         * verify.c (mono_method_verify): verify branches and exception blocks
8150         that target the middle of instructions. Proper verification of br and br.s.
8151
8152 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8153
8154         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
8155         skip_visibility field.
8156         (reflection_methodbuilder_from_dynamic_method): Ditto.
8157
8158         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
8159         registrations. Fixes #348193.
8160
8161         * threads.h: Move the internal mono_thread_get_pending_exception () to
8162         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
8163
8164 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8165
8166         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
8167         icall registration. Fixes #348193.
8168
8169         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
8170         for corlib classes into object. Fixes #349621.
8171
8172 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
8173
8174         * icall.c (property_accessor_nonpublic): new function to determine
8175         whether an accessor allows a property to be considered non-public.
8176         Returns false for private accessor(s) from parent class, and internal
8177         accessor(s) from parent on 2.0 profile (and higher).
8178         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
8179         to determine whether property should be included if NonPublic flag
8180         is set. Fixes bug #349078.
8181
8182 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
8183
8184         * verify.c (init_stack_with_value): added.
8185
8186         * verify.c (mono_method_verify): extracted common
8187         code for exception initialization into init_stack_with_value.
8188
8189         * verify.c (mono_method_verify): initialize the exception
8190         for handler clauses as well.
8191
8192         * verify.c (mono_method_verify): fix the exception clause
8193         ordering rules, it should use handler end offset and not
8194         start offset.
8195
8196 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
8197
8198         * rawbuffer.c: remove useless warning.
8199
8200 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
8201
8202         * threads.h, threads-types.h: move functions to the correct header
8203         (fixes bug#349952).
8204
8205 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8206
8207         * verify.c (mono_method_verify): proper verification
8208         of exception handling clauses ranges and fallthru in
8209         and out of protected blocks.
8210
8211 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8212
8213         * verify.c (mono_method_verify): fixed compilation issue.
8214
8215 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8216
8217         * verify.c (mono_method_verify): a printf slipped in, changed
8218         to use verifier debug macro.
8219
8220 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
8221
8222         * verify.c (is_correct_leave): check for filter clauses.
8223
8224         * verify.c (do_filter): added.
8225
8226         * verify.c (mono_method_verify): property verification of leave.
8227
8228
8229 2007-12-18  Mark Probst  <mark.probst@gmail.com>
8230
8231         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
8232         Win32 build, until we figure out how to do the proper thing on
8233         Win32.
8234
8235 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
8236
8237         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
8238         by the previous patch.
8239         
8240         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
8241         the assembly resolve handler for refonly assemblies.
8242
8243 2007-12-17  Mark Probst  <mark.probst@gmail.com>
8244
8245         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
8246         Make sure only one thread is allowed to commence shutdown, and
8247         don't allow new threads to be started once shutdown is in
8248         progress.
8249
8250 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8251
8252         * verify.c (is_correct_endfilter): added.
8253
8254         * verify.c (is_unverifiable_endfilter): added.
8255
8256         * verify.c (do_endfilter): added.
8257
8258         * verify.c (mono_method_verify): property verification of endfilter
8259         and fixed a corner case or endfinally.
8260
8261 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8262
8263         * verify.h: new flags to support fail fast of unverifiable code and
8264         do non-strict verification. Non-strict verification is required to
8265         have MS runtime compatibility. There are a huge amount of unverifiable
8266         code that it accepts as verifiable. The strict mode verifies the code
8267         as the specs says.
8268         Non-strict mode will be required in cases where code needs to be
8269         accepted as verifiable but fails under strict mode.
8270
8271         * pedump.c: added support to fail fast and non-strict verification.
8272
8273         * verify.c: added support for both fail fast and non-strict verification.
8274
8275 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8276
8277         * verify.c (is_correct_endfinally): added.
8278
8279         * verify.c (mono_method_verify): property verification of endfinally.
8280
8281 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8282
8283         * verify.c (in_any_block): check for filter clauses.
8284
8285         * verify.c (is_correct_rethrow): added.
8286
8287         * verify.c (mono_method_verify): property verification of rethrow.
8288
8289         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8290
8291 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8292
8293         * verify.c (do_throw): added.
8294
8295         * verify.c (mono_method_verify): property verification of throw
8296
8297 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8300         assemblies. Fixes #346425.
8301
8302 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8303
8304         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8305         FieldBuilders.
8306
8307         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8308
8309         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8310         prevent asserts when this is called with a token which might not be valid.
8311
8312         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8313         lookup_dynamic_token_class with valid_token == FALSE.
8314
8315         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8316
8317         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8318
8319         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8320         
8321 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8322
8323         * gc.c: Don't delay threadpool thread finalization unless Mono is
8324         shutting down.
8325
8326 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8327
8328         * threads.c: turn an assert into a non-fatal warning.
8329
8330 2007-12-09  Robert Jordan  <robertj@gmx.net>
8331
8332         * icall.c (GetVirtualMethod): Add missing argument validation.
8333
8334 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8335
8336         * verify.c (do_cast): added.
8337
8338         * verify.c (mono_method_verify): property verification of castclass and isinst.
8339
8340
8341 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8342
8343         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8344
8345         * verify.c (do_stelem): added.
8346
8347         * verify.c (mono_method_verify): property verification of stelem.X.
8348
8349 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8350
8351         * class.c, class-internals.h: Introduce an environment variable
8352         (MONO_GENERIC_SHARING) through which the extent of generic code
8353         sharing can be controlled (share all classes, share only corlib
8354         classes, or share nothing).
8355
8356         * object.c: Only create runtime generic context for classes for
8357         which sharing is enabled.
8358
8359 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8360
8361         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8362
8363         * verify.c (mono_method_verify): property verification of ldelem.any.
8364
8365 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8368         added ldelem.X opcodes.
8369
8370         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8371
8372         * verify.c: proper verification of ldelem.X 
8373
8374 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8375
8376         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8377
8378 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8379
8380         * verify.c (mono_method_verify): null literal requires special handling,
8381         the value pushed on stack need to be flagged as so.
8382
8383         * verify.c (do_ldelema): Verify ldelema properly.
8384
8385 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8386
8387         * verify.c: Verify ldlen properly.
8388
8389 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8392         to the target object's type. Fixes #346160.
8393
8394 2007-12-05  Dick Porter  <dick@ximian.com>
8395
8396         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8397         Solaris needs the same workaround as BSD-derived systems.  Fixes
8398         bug 323524, patch by Burkhard Linke
8399         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8400
8401 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8402
8403         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8404         handle to use when error dialog is shown; otherwise, update mask
8405         to show no error dialog when an error occurs.
8406
8407 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8408
8409         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8410
8411         * class.c (mono_class_get_field_default_value): New helper function to initialize
8412         field->def_type and field->data.
8413
8414 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8417         the general one.
8418
8419         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8420
8421         * marshal.c: Avoid depending on delegate->method_info being set.
8422
8423         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8424         
8425         * object.c (mono_delegate_ctor): Set delegate->method.
8426
8427         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8428
8429         * appdomain.c: Bump corlib version.
8430
8431 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8432
8433         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8434         equality check if we're comparing canonicalized MonoGenericInsts.
8435
8436 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8439         accessing class->methods.
8440
8441 2007-11-22  Dick Porter  <dick@ximian.com>
8442
8443         * threads.c: Ensure that the synch_cs is set before trying to use
8444         it.
8445
8446 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8447
8448         * profiler.c: r89126 broke the statistial profiler, unbreak.
8449
8450 2007-11-22  Martin Baulig  <martin@ximian.com>
8451
8452         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8453
8454         * mono-debug.c
8455         (mono_debug_debugger_version): Bump to 3.
8456         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8457         -> mono_debugger_class_initialized().
8458
8459         * mono-debug-debugger.c
8460         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8461
8462         * class.c
8463         (mono_debugger_start_class_init_func): Removed.
8464         (mono_debugger_class_loaded_methods_func): Added.
8465         (mono_class_setup_methods): Call it here.
8466
8467 2007-11-22  Martin Baulig  <martin@ximian.com>
8468
8469         * mono-debug.c
8470         (mono_debug_add_delegate_trampoline): New public method.
8471         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8472
8473         * mono-debug.h
8474         (MonoSymbolTable): Added `global_data_table'.
8475         (MonoDebuggerTypeKind): Removed.
8476
8477 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8478
8479         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8480         these methods.
8481
8482         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8483         
8484 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8485
8486         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8487
8488 2007-11-20  Martin Baulig  <martin@ximian.com>
8489
8490         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8491
8492         * mono-debug-debugger.c
8493         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8494         (mono_debugger_remove_breakpoint): Likewise.
8495         (mono_debugger_check_breakpoints): Likewise.
8496         (mono_debugger_register_class_init_callback): New public method.
8497         (mono_debugger_remove_class_init_callback): Likewise.
8498         (mono_debugger_add_type): Likewise.
8499
8500         * mono-debug-debugger.h
8501         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8502
8503 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8504
8505         * class.c: more interface implementations needed for the
8506         array enumerator (fixes bug #341112).
8507
8508 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8509
8510         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8511         fix ParamName of ArgumentNullExceptions.
8512
8513 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8514
8515         * reflection.c (mono_reflection_encode_sighelper): Generate the
8516         modopts and modreqs.   I have a useless test that crashes monodis,
8517         but that shows the code working.
8518
8519 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8520
8521         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8522         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8523
8524 2007-11-15  Dick Porter  <dick@ximian.com>
8525
8526         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8527         When joining a thread, it's the thread that's calling Join that
8528         gets WaitSleepJoin state not the target.  Fixes the standalone
8529         test case in bug 334740, and hopefully the whole bug too.
8530
8531 2007-11-15  Dick Porter  <dick@ximian.com>
8532
8533         * process.c: Read file version info from the files pointed at by
8534         process modules, not the current process.  Fixes bug 315969.
8535
8536         Use windows typedef names in some places to fix warnings on the
8537         windows build.
8538
8539 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8540
8541         * image.c, metadata-internals.h: Added a generic_class_cache hash
8542         to MonoImage for looking up generic classes when sharing generics.
8543
8544 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8545
8546         * sgen-gc.c: warning cleanups.
8547
8548 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8549
8550         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8551         inherited properties.
8552
8553 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8554
8555         * object.c, class-internals.h: Added more information to the
8556         runtime generic context.
8557
8558 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8559
8560         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8561         instead of just the target method. Generalize the abstract method handling to
8562         handle any non-static method.
8563
8564         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8565         mono_marshal_get_delegate_invoke () signature change.
8566
8567 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8568
8569         * class.c, class-internals.h: Made
8570         mono_type_get_basic_type_from_generic () public.  Fixed member
8571         access check for shared generics.
8572
8573         * loader.c: Don't insert field into field cache if it's part of a
8574         non-inflated generic class.
8575
8576         * domain.c, domain-internals.h: The generic sharing context is now
8577         part of the jit info data structure.  Added two accessor
8578         functions.
8579
8580 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8581
8582         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8583         the array Get/Set/Address methods, since the JIT inlines them.
8584
8585         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8586
8587         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8588         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8589
8590         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8591         mono_marshal_get_delegate_invoke signature change.
8592
8593         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8594         an additional argument. Add support for invoking abstract methods.
8595
8596         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8597
8598         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8599
8600 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8601
8602         * class.c: Do field layout for open generic classes as well.
8603
8604 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8605
8606         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8607         other objects, because the threadpool is still around.  Put them
8608         in a list instead and after finalizing all other objects in the
8609         root domain shut down the thread pool and then finalize the
8610         threads.  Fixes bug #337383.
8611
8612         * threads.c, thread-types.h: New mono_thread_create_internal()
8613         function for marking a thread with the threadpool flag before it
8614         started.  Set synch_cs to NULL after freeing it.
8615
8616         * threadpool.c: Mark threadpool threads before they start.
8617
8618 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8619
8620         * reflection.h, reflection.c: don't export random functions
8621         and lazy load dbnull and missing objects.
8622
8623 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8624
8625         * class.c: Initialize COM types if COM interfaces
8626         are present (not just COM classes).
8627         
8628         Code is contributed under MIT/X11 license.
8629
8630 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8631         * reflection.c:
8632         create_dynamic_mono_image: hook module profiler events (dynamic case).
8633         mono_image_basic_init: hook assembly profiler events (dynamic case).
8634
8635 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8636         * profiler.c:
8637         simple_appdomain_unload: completely terminate the profiler
8638         instead of only processing the statistical samples.
8639         simple_shutdown: make sure this is really called exactly once,
8640         even in multithreaded applications, and always listen to
8641         appdomain events.
8642         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8643         here, the "[un]load" functions will do it.
8644         Fixes bugs #333791 and #325261.
8645
8646 2007-11-07  Geoff Norton  <gnorton@novell.com>
8647
8648         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8649         rather than depend on __APPLE__.
8650
8651 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8652
8653         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8654
8655 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8656
8657         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8658         UTF16 MonoString. Fix the crash from bug #335488
8659
8660 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8661
8662         * marshal.c: Correct (for non-Win32 OS) length != size in 
8663         mono_string_from_bstr. Fix #339530.
8664
8665 2007-11-06  Geoff Norton  <gnorton@novell.com>
8666
8667         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8668         to succeed
8669
8670 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8671
8672         * process.c: Added run-time GetProcessId API detection for Windows.
8673
8674 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8675
8676         * reflection.c  (mono_param_get_objects): If a parameter has the
8677         attribute [System.Runtime.InteropServices.Optional] we should
8678         set the DefaultValue of the ParameterInfo to be
8679         System.Reflection.Missing instead of DBNull.
8680
8681         See bug #339013.
8682
8683         (mono_get_reflection_missing_object): New method,
8684         returns the System.Reflection.Missing.Value singleton instance.
8685
8686 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8687
8688         * culture-info-table.h : regenerated.
8689
8690 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8691
8692         * icall.c: Use GetEnvironmentStrings on windows
8693         so we are using the same environment block as 
8694         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8695         #333740.
8696         
8697         Code is contributed under MIT/X11 license.
8698
8699 2007-10-31  Martin Baulig  <martin@ximian.com>
8700
8701         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8702
8703         * mono-debug-debugger.h
8704         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8705
8706 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8707
8708         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8709         classes.
8710
8711 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8712
8713         * culture-info-table.h : regenerated.
8714
8715 2007-10-30  Robert Jordan  <robertj@gmx.net>
8716
8717         * icall-def.h, icall.c:
8718         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8719
8720         Code is contributed under MIT/X11 license.
8721
8722 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8723
8724         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8725         inflated class instead of inflating them again.
8726         
8727         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8728         dynamic case.
8729
8730         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8731         Call setup_supertypes () after klass->parent is set.
8732         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8733
8734         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8735         for inflated instances of not yet created dynamic generic classes.
8736         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8737         times from inflated_method.
8738         (methodbuilder_to_mono_method): Ditto.
8739
8740 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8741
8742         * gc.c: code cleanup and removed old untested option of not creating the
8743         finalizer thread.
8744
8745 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8746
8747         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8748         creating a jump trampoline for dynamic methods.
8749
8750 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8751
8752         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8753         generic TypeBuilders when called from another method of the same type (bug #335131).
8754
8755
8756 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8759         doesn't seem to work perfectly.
8760         
8761         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8762         called multiple times.
8763         (methodbuilder_to_mono_method): Ditto.
8764         (resolve_object): Inflate FieldBuilder's.
8765
8766 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8767
8768         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8769         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8770         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8771
8772 2007-10-26  Dick Porter  <dick@ximian.com>
8773
8774         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8775         Thread initialisation changes
8776
8777 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8778
8779         * verify.c: fix compatibility check between arrays and System.Array
8780
8781 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8782
8783         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8784         too. Fixes #336999.
8785
8786 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8787
8788         * object.c (mono_value_box): Use typed allocation here.
8789
8790 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8793         trampoline instead of compiling the method right away.
8794
8795         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8796
8797 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8798
8799         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8800         related fields for dynamic classes. Fixes #334493.
8801
8802 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8803
8804         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8805         
8806         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8807
8808         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8809         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8810
8811         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8812
8813         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8814         if needed.
8815         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8816
8817 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8818
8819         * marshal.c: Use correct key when removing item
8820         from ccw_hash.
8821         
8822         Code is contributed under MIT/X11 license.
8823
8824 2007-10-17  William Holmes  <billholmes54@gmail.com>
8825
8826         *marshal.c: Adding a case to marshal booleans to U1
8827
8828         Code is contributed under MIT/X11 license.
8829
8830 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8831
8832         * class.c (mono_class_from_name): Search the modules compromising dynamic
8833         assemblies. Fixes #331601.
8834
8835 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8836
8837         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8838         exception if the type name contains an assembly component. Fixes #334203.
8839
8840         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8841         modules inside dynamic assemblies. Fixes #334200.
8842         
8843         * reflection.c: Set image->public_key and image->public_key_length;
8844
8845         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8846         fields.
8847
8848         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8849         
8850 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8851
8852         * metadata.c: Implemented correct comparing of generic classes.
8853         An inflated generic class can be equal to a non-inflated one if it
8854         is inflated with generic type variables as type arguments.  Fixes
8855         bug #333798.
8856
8857 2007-10-15  Dick Porter  <dick@ximian.com>
8858
8859         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8860         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8861         81646.
8862
8863         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8864         instead of a monitor lock.  This means that monitor_try_enter and
8865         co can set the thread state safely.
8866         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8867         thread_interrupt_requested, so interrupt actually works.
8868
8869         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8870         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8871         state accessor function
8872
8873 2007-10-15  Martin Baulig  <martin@ximian.com>
8874
8875         * mono-debug.h
8876         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8877         the debugger with the current runtime.
8878
8879 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8880
8881         * object.c, object-internals.h: added the ability to set a single
8882         trampoline for all the slots in a vtable.
8883
8884 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8885
8886         * marshal.c: deal with a possible race condition during multicast
8887         delegate invocation.
8888
8889 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8890
8891         * class.c: ensure value type methods don't have the synchronized
8892         flag set.
8893
8894 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8895
8896         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8897         breaks the build.
8898
8899 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8900
8901         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8902         to take an options parameter so that empty entries can be removed during
8903         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8904
8905 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8906
8907         * marshal.c: make sure we don't store the signature from a dynamic
8908         method into the runtime invoke cache (bug #327189).
8909
8910 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8911
8912         * marshal.c: make sure the wrapper methods are properly initialized.
8913
8914 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8915
8916         * metadata.c, metadata-internals.h: Generalized
8917         mono_type_stack_size() to mono_type_stack_size_internal() which
8918         takes an additional argument specifying whether it allows open
8919         types.
8920
8921 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8922
8923         * verify.c (do_invoke_method): handle typedbyref params
8924         correctly and check for unverifiable return values.
8925
8926         * verify.c (do_newobj): fix a warning.
8927
8928 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8929
8930         * verify.c: don't tread typedbyref as allways unverifable,
8931         so uses, like (ld/st)loc.0 are valid. verify for the cases
8932         that it matters, like boxing related operations.
8933
8934 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8935
8936         * verify.c: add verification of the newobj opcode. verification
8937         of delegate instantation still missing due ldftn and virldftn not
8938         pushing the function type on stack
8939
8940 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8941
8942         * class-internals.h: Runtime generic context data structure
8943         definition.
8944
8945         * object.c: Initialization of runtime generic context at runtime
8946         vtable creation time.
8947
8948 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8949         * class.c (mono_class_create_from_typedef,
8950         mono_class_from_generic_parameter, mono_ptr_class_get,
8951         mono_fnptr_class_get, mono_bounded_array_class_get)
8952         * domain.c (mono_domain_create, mono_domain_free)
8953         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8954         * image.c (do_mono_image_load, mono_image_close):
8955         Hooked up load-unload profiler events.
8956
8957 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8958
8959         * domain.c: track statistics about the actual amount of native code
8960         allocated.
8961
8962 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8963
8964         * class.c: the valuetype enumerators don't have the additional
8965         supertypes interfaces.
8966
8967 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8968
8969         * class.c: need more interfaces setup for the IEnumerator<T>
8970         object created for arrays (tests/ienumerator-interfaces.2.cs).
8971
8972 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8975
8976 2007-10-05  Alp Toker  <alp@atoker.com>
8977
8978         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8979         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8980         #315863.
8981
8982 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8983
8984         * verify.c (verify_type_compatibility_full): verification of
8985         compatibility improved, validates correctly non-strict checks between
8986         native int and I4 types different than (unsigned)int32.
8987
8988         * verify.c (do_store_indirect): added, do all verification of
8989         ldind.X opcodes. 
8990
8991         * verify.c (get_load_indirect_mono_type): renamed to
8992         get_indirect_op_mono_type, as it now returns the MonoType for 
8993         ldind.X and stind.X opcodes.
8994
8995 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8996
8997         * reflection.c: Fix the encoding of generic type definition for
8998         TypeBuilders.
8999
9000         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
9001         mono_image_typedef_or_ref but allows to specify if typespec lookups should
9002         be made. Typespec check is done prior to typeref cache lookup.
9003
9004         * reflection.c (mono_image_typedef_or_ref): now just delegate to
9005         mono_image_typedef_or_ref_full.
9006
9007         * reflection.c (encode_generic_class): encode the generic class
9008         directly instead of calling encode_type.
9009
9010         * reflection.c (encode_type): encode the generic type definition
9011         MonoClass as a generic instantiation.
9012
9013         * reflection.c (create_typespec): cache typespec tokens in
9014         the assembly->typespec cache. Don't create typespec for a generic
9015         instance MonoClass. Create typespec for the generic type defintion.
9016
9017         * reflection.c (create_generic_typespec): encode the generic
9018         class directly instead of calling encode_type.
9019
9020         * reflection.c (mono_image_create_token): encode the generic
9021         type definition not using a typespec for MonoType instances.
9022
9023
9024 2007-10-04  Raja R Harinath  <rharinath@novell.com>
9025
9026         Fix #328812
9027         * class.c (mono_image_init_name_cache): Don't return nested
9028         'protected internal' classes.
9029         (mono_class_from_name_case): Likewise.
9030
9031 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
9032
9033         * icall-def.h, icall.c : get_bundled_machine_config() is now the
9034           common function used by both DefaultConfig in System.dll and
9035           InternalConfigurationHost in System.Configuration.dll.
9036
9037 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9038
9039         * class.c: automatically add to vectors only a few essential explicit
9040         generic interfaces. The rest of the interfaces that arrays should
9041         provide are currently implicitly added (but still not lazily, see the
9042         design in the discussion of bug#325495 for the details of what is
9043         needed for that). Additionally, implicit interfaces are assigned the
9044         same vtable slot as the explicit interfaces (as they are compatible):
9045         this enables huge memory savings since we don't need to instantiate
9046         as many memthods and as large vtables anymore. Also, Since
9047         GetEnumerator<T> returns an instance of a type that is required to
9048         support a similarly large set of interfaces as arrays, we add
9049         implicit interfaces and interface offset sharing support to those
9050         types, too. This change adds all the required interfaces so that
9051         the anonarray.cs test case in the bug report works (we don't add
9052         all the interfaces to arrays of arrays 3-level deep and more because
9053         of the memory requirements explained in the bug and since they are much
9054         less common: the lazy-loading support will enabled them to work, too).
9055
9056 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9057
9058         * verify.c (merge_stacks): major clean up, all type compatibility
9059         checks are done by verify_type_compatibility. This fix my earlier lack
9060         of understanding of the CLR type system and merge_stacks no longer looks
9061         scary.
9062
9063         * verify.c: fixed some bad spelling.
9064
9065 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
9066
9067         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
9068         a given stack slock.
9069         
9070         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
9071         verify_type_compatibility_full. This removed a near indentical function and fixed
9072         handling of Int32 and IntPtr across all opcodes.
9073
9074 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9075
9076         * class.c: only vectors have the additional generic interfaces.
9077
9078 2007-10-01  Jonathan Chambers <joncham@gmail.com>
9079
9080         * mono-config.c: Use g_strcasecmp instead of
9081         strcasecmp like everywhere else to fix
9082         compilation with MSVC.
9083         
9084         Code is contributed under MIT/X11 license.
9085
9086 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9087
9088         * object.c, object-internals.h: refactored the IMT code to enable
9089         building a single slot at a time and lazily creating the IMT trampolines
9090         and thunks.
9091
9092 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
9093
9094         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
9095
9096         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
9097         Fixes #328501.
9098         
9099 2007-09-29  Raja R Harinath  <harinath@gmail.com>
9100
9101         * loader.c (method_from_methodspec): Rearrange to avoid
9102         un-necessary exposition.  Don't assert out if the method's
9103         declaring type is a generic type definition.
9104
9105 2007-09-28  Martin Baulig  <martin@ximian.com>
9106
9107         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
9108
9109 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
9110
9111         * class-internals.h: optimize field layout of MonoClass to
9112         requires less cachelines at runtime and save a few bytes on 64 bit
9113         systems.
9114
9115 2007-09-28  Jb Evain  <jbevain@novell.com>
9116
9117         * reflection.c: when encoding type names in custom attributes,
9118         if the type is a closed generic type, its generic arguments
9119         have to be serialized as AssemblyQualifiedName, so that when
9120         they are deserialized, it's possible to re-create them properly.
9121         Fixes #329450.
9122
9123
9124 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9125
9126         * object.c, class-internals.h: added delegate-creation counter.
9127
9128 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9129
9130         * class.c: cleanup of the code that synthetizes interfaces for
9131         arrays in 2.0: saves quit a bit of corlib mempool memory.
9132         Code to fix bug #325495 ifdeffed out for now until the issues
9133         with memory usage and O(n^2) behaviour are fixed.
9134
9135 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9136
9137         * marshal.c: when possible, do not duplicate the name of the methods
9138         in the method builder and in the generated MonoMethod.
9139
9140 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9141         * verify.c: added support for type checking ldind_* opcodes.
9142
9143 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9144
9145         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
9146         which is used to distinguish the fully open instantiation of a TypeBuilder
9147         with the rest. This temporary hack is required to restore the property that
9148         the fully open instantiation is the same type of the generic type definition.
9149
9150         * class-internals.h (mono_generic_class_is_generic_type_definition):
9151         new function as part of the internal API.
9152
9153         * class.c (inflate_generic_type): return NULL when the generic inst is
9154         fully open. The fully open generic type is now the same as the generic type
9155         definition for non TypeBuilder types.
9156
9157         * class.c (mono_generic_class_get_class): removed assert since it is
9158         no longer valid, gklass->cached_class can point to the generic type definition.
9159
9160         * class.c (mono_generic_class_is_generic_type_definition): new.
9161
9162         * metadata.c (mono_generic_class_hash): added is_tb_open field
9163         to the hash calculation.
9164
9165         * metadata.c (free_generic_class): if the generic class is associated
9166         with the generic type definition, its field will come from the mempool and
9167         must not be freed.
9168
9169         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
9170         new, this function identifies the corner case of a TypeBuilder fully open
9171         instantiation.
9172
9173         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
9174         for lookup. Set gclass->cached_class to be the container class in case of
9175         the fully open instantiation of non TypeBuilder types.
9176
9177         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
9178         to compare generic classes.
9179
9180         * reflection.c (method_encode_methodspec): remove assert that
9181         no longer is valid.
9182
9183         * reflection.c (mono_reflection_generic_class_initialize): add
9184         an aditional assert to ensure the proper type is used.
9185
9186 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
9187
9188         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
9189         to enjoy it.
9190
9191 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9192
9193         * verify.c (push_arg): Fixed support for ldarga
9194         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
9195         MonoType used as first arg in case of instance calls.
9196
9197 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9198
9199         * verify.c: Support for verifying VAR and MVAR types, 
9200
9201 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * icall.c (ves_icall_get_property_info): Set the reflected type of the
9204         accessors correctly.
9205
9206 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9207
9208         * threads.c: support OSX and other systems in
9209         mono_thread_get_stack_bounds (bug #328026).
9210
9211 2007-09-25  Martin Baulig  <martin@ximian.com>
9212
9213         * mono-debug.h
9214         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
9215
9216 2007-09-24  Martin Baulig  <martin@ximian.com>
9217
9218         * mono-debug.h
9219         (MonoDebugClassEntry): Moved the definition of this struct into
9220         mono-debug.c to make it private.
9221
9222         * mono-debug.c
9223         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
9224         type table per symbol file, we don't need to store the symfile id
9225         any longer.
9226
9227 2007-09-24  Martin Baulig  <martin@ximian.com>
9228
9229         Create one type table per symbol file, since a `MonoClass *' gets
9230         invalid when its image is unloaded.
9231
9232         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
9233         (MonoDebugHandle): Added `type_table'.
9234
9235 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9236
9237         * mempool.c, mempool.h: added mono_mempool_new_size () API
9238         to be able to specify a smaller initial size for the pool.
9239         Adjusted the code to slowly increase pool size before using
9240         the previous default size.
9241         * image.c: use a small initial size for image mempools.
9242
9243 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
9246         Fixes ##320990.
9247
9248         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9249         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9250
9251 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9252
9253         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9254         free. Fixes #327438.
9255
9256 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9257
9258         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9259         generic instantiations, etc.
9260         <MONO_TYPE_ARRAY>: Likewise.
9261
9262 2007-09-21  Martin Baulig  <martin@ximian.com>
9263
9264         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9265         these structs were never defined.
9266         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9267
9268 2007-09-21  Martin Baulig  <martin@ximian.com>
9269
9270         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9271
9272 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9273
9274         * image.c: removed the guid hash tables: we can get the same info
9275         without the additional memory usage hit (partially fixes also bug #327052).
9276
9277 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9278
9279         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9280         event to handle unloading methods. After the event is called, the
9281         corresponding MonoMethod* must be considered invalid.
9282         * loader.c (mono_free_method): call the new mono_profiler_method_free
9283         event.
9284
9285 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9286
9287         * domain-internals.h: New flag in MonoJitInfo which marks shared
9288         generic methods.  New hash table (shared_generics_hash) in
9289         MonoDomain to keep track of shared generic methods.  Prototypes
9290         for functions to register and lookup shared generic methods.
9291
9292         * domain.c: Support for registering and looking up shared generic
9293         methods via a hash table (shared_generics_hash) in MonoDomain.
9294
9295         * class-internals.h: New exception to signal failure of shared
9296         compilation of a generic method.  New counters for generics
9297         sharing in MonoStats.
9298
9299 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9300
9301         * image.c, metadata-internals.h: don't keep a file descriptor open
9302         for loaded assemblies (bug#325988).
9303
9304 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9305
9306         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9307         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9308         use the corresponding datatypes.
9309         (type_in_image): Update to changes.
9310         (CleanForImageUserData): Simplify.
9311         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9312         Avoid quadratic behaviour in handling the "stolen" list by
9313         separating the filter predicate out, and by prepending the stolen
9314         items rather than appending them.
9315         (steal_ginst_in_image): Likewise.
9316         (mono_metadata_clean_for_image): Update to changes.
9317
9318 2007-09-19  Martin Baulig  <martin@ximian.com>
9319
9320         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9321
9322 2007-09-19  Martin Baulig  <martin@ximian.com>
9323
9324         * mono-debug.c (mono_debug_cleanup): Don't call
9325         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9326
9327 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9328
9329         Fix crash on 'make run-test' in mcs/errors
9330         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9331         Avoid more potential allocations in mono_class_from_mono_type.
9332         (ginst_in_image): Update to changes.
9333         (gclass_in_image): Rearrange slightly.
9334
9335 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * class.c (mono_class_init): Move the code that sets up class->methods to 
9338         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9339
9340         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9341         canonical instance of an inflated generic signature.
9342         (mono_type_create_from_typespec): Remove an invalid free.
9343
9344         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9345
9346 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9347
9348         * domain-internals.h: added a declaration of the
9349         mono_assembly_load_full_nosearch internal function.
9350
9351         * assembly.c (mono_assembly_load_with_partial_name): use
9352         mono_try_assembly_resolve return value properly.
9353         (mono_assembly_load_full_nosearch): copied the function body from
9354         mono_assembly_load_full, without the code to invoke assembly
9355         search hooks.
9356         (mono_assembly_load_full): calls the above new function and if the
9357         assembly is not resolved, invokes the search hooks.
9358
9359         * appdomain.c (mono_runtime_init): restore the global postload
9360         assembly search handlers.
9361
9362 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * class.c (mono_class_init): Make sure class->methods and class->properties
9365         are never NULL in the generics case.
9366
9367         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9368
9369 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9370
9371         * metadata.c (free_generic_class): Disable some code to fix the build.
9372
9373         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9374
9375         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9376         from the image mempool.
9377
9378         * metadata.c (free_generic_class): Free more data from the inflated class.
9379
9380         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9381
9382         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9383         mempool.
9384         (mono_type_create_from_typespec): Ditto.
9385
9386         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9387         MonoImage to the caller.
9388         (mono_init_internal): Save the opened image in a global variable.
9389         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9390
9391         * reflection.c (resolve_object): Fix a leak.
9392
9393         * metadata.c: Fix the freeing of data in the generics caches.
9394         
9395         * metadata.c (free_generic_inst): Comment this out to fix the build.
9396         (free_generic_class): Ditto.
9397
9398         * metadata.c: Free cached generic methods, instantinations and classes when
9399         they are removed from the caches.
9400         (mono_metadata_free_type): Free the type itself.
9401
9402         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9403         places.
9404
9405 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9406
9407         * boehm-gc.c: restrict managed allocs to __thread supporting
9408         architectures.
9409
9410 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9411
9412         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9413         (mono_generic_class_get_class): Fix a leak.
9414
9415         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9416         mono_metadata_free_type ().
9417         (mono_metadata_inflate_generic_inst): Fix a leak.
9418
9419 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9420
9421         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9422
9423         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9424         mempool.
9425
9426         * mono-debug.c (mono_debug_close_image): Fix call to 
9427         g_hash_table_remove ().
9428
9429 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9430
9431         * icall-def.h: redirect all the string ctor to the managed
9432         CreateString () methods.
9433         * string-icalls.c, string-icalls.h: removed dead code for string
9434         ctors and icalls.
9435
9436 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9437
9438         * mono-debug.c: Fix memory leaks.
9439
9440 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9441
9442         * threads-types.h: Implement mono_hazard_pointer_set and 
9443         mono_hazard_pointer_clear macros using do/while(0) to fix
9444         compilation with MSVC.
9445         
9446         Code is contributed under MIT/X11 license.
9447
9448 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9449
9450         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9451         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9452
9453 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9454
9455         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9456         icalls.
9457
9458 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9459
9460         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9461         managed-code allocated as well.
9462
9463 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9464
9465         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9466
9467 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9468
9469         * boehm-gc.c: fixed the build after the AOT changes.
9470
9471 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * wrapper-types.h: Add an ALLOC wrapper type.
9474
9475         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9476         reference managed allocator methods.
9477
9478 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9479
9480         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9481         of Type array and not MonoType, a fix suggested by Hari.
9482         
9483 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9484
9485         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9486         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9487         
9488         Code is contributed under MIT/X11 license.
9489
9490 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9491
9492         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9493
9494 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9495
9496         * image.c (do_mono_image_open): if assembly file fails to open and
9497         MONO_IOMAP is in effect, try to find the path in a
9498         case-insensitive way.
9499
9500         * appdomain.c (mono_runtime_init): do not install postload hooks -
9501         tests show that MS.NET doesn't use anything of that sort to
9502         trigger the AppDomain.AssemblyResolve event.
9503         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9504         made non-static.
9505         (mono_runtime_init): init portability helpers here.
9506
9507         * assembly.c (mono_assembly_load_with_partial_name): if other   
9508         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9509         to resolve the assembly.
9510
9511         * domain-internals.h: added mono_try_assembly_resolve and marked
9512         it as internal.
9513
9514 2007-09-11  Jb Evain  <jbevain@novell.com>
9515
9516         * object-internals.h (MonoReflectionDynamicMethod): add
9517         a `MonoReflectionType *owner` field. The owner is used
9518         * reflection.c:
9519         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9520         method as the class declaring the dynamic method.
9521         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9522         dynamic method to the declaring type of the methodbuilder.
9523
9524 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9525
9526         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9527         rules for calling methods via reflection.
9528
9529 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9532         Inflate MonoType's.
9533
9534 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9535
9536         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9537         provide a managed method that does fast allocations without needing
9538         a managed->unmanaged transition. Boehm GC implementation currently
9539         enabled for ptrfree objects on sane architectures.
9540
9541 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9542
9543         * marshal.c, marshal.h: exported a couple of useful functions and
9544         added mono_mb_get_label () to easily handle backward branches.
9545
9546 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9549
9550 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9551
9552         * loader.c (find_method): Fixed the regression introduced while
9553         fixing bug #81466.
9554
9555 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9558         well.
9559         
9560         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9561         icall.c reflection.c: Pass a MonoGenericContext argument to 
9562         mono_lookup_dynamic_token ().
9563
9564         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9565         #82744.
9566         
9567 2007-09-09  Robert Jordan  <robertj@gmx.net>
9568
9569         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9570         for generic methods.
9571
9572         * object.c (mono_object_get_virtual_method): Handle generic methods.
9573         Fixes bug #78882.
9574
9575         Code is contributed under MIT/X11 license.
9576
9577 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9578
9579         * image.c: fix locking in mono_image_load_file_for_image ().
9580
9581 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9582
9583         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9584         used only as a cache: added an icall to fill it.
9585
9586 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9587
9588         * reflection.h: exposed mono_reflection_free_type_info
9589         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9590         since mono_reflection_bind_generic_parameters makes a copy of it.
9591         * reflection.c (free_type_info): subinfos should be freed.
9592         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9593         made non static.
9594         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9595         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9596         this fixes #82695 and #81726.
9597    
9598
9599 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9600
9601         * process.h, process.c:  added support for user profile/info in
9602           ProcessStartInfo. For now only Windows works.
9603
9604 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9605
9606         * metadata.c: consider the generic arguments when comparing
9607         signatures (bug #82614).
9608
9609 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9610
9611         * cil-coff.h, image.c: updated assembly loader to cope with the
9612         PE32+ 64 bit file format.
9613
9614 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9615
9616         * assembly.c, class.c, domain.c, loader.c: remove useless
9617         inclusion of cil-coff.h.
9618
9619 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9620
9621         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9622         if interface is marked with CoClassAttribute. 
9623    
9624         Code is contributed under MIT/X11 license.
9625
9626 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9627
9628         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9629         if it's seen twice in major collections.
9630
9631 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9632
9633         * sgen-gc.c: big objects are not copied to the gray area, but they
9634         need to be considered for scanning, too, if they are brought alive
9635         by an object ready for finalizations or a survived one.
9636
9637 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9638
9639         * sgen-gc.c: properly account the number of disappearing links when
9640         they are nullified.
9641
9642 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9643
9644         * sgen-gc.c: share the code to scan the registered roots between the
9645         different types of collections.
9646
9647 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9648
9649         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9650
9651 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9652
9653         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9654         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9655
9656 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9657
9658         * security-manager.c (mono_security_manager_get_methods):
9659         LinkDemandSecurityException now has 2 arguments instead of 3.
9660
9661 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9662
9663         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9664         platforms which need it.
9665
9666 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9667
9668         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9669         dtor.
9670
9671 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9672
9673         * threads.c: free the thread static data on thread exit.
9674
9675 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9676
9677         * class.c: walk the hierarchy to find the generic definition for
9678         a class (fixes runtime part of bug #82498).
9679
9680 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9683         ...
9684
9685         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9686
9687 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9688
9689         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9690
9691 2007-08-24  Robert Jordan  <robertj@gmx.net>
9692
9693         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9694
9695 2007-08-24  Jb Evain  <jbevain@novell.com>
9696
9697         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9698         for byref types.
9699
9700 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9701
9702         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9703         #82286.
9704
9705 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9706
9707         * assembly.c: Fix a warning.
9708         
9709 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9710
9711         * appdomain.c: parse the <runtime> section looking for the probing
9712         element with the 'privatePath' attribute, which sets additional
9713         directories in which the runtime should look for assemblies.
9714
9715 2007-08-23  Robert Jordan  <robertj@gmx.net>
9716
9717         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9718         Fixes #82499.
9719
9720 2007-08-23  Martin Baulig  <martin@ximian.com>
9721
9722         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9723         _mono_debug_init_corlib() and remove it from the header file.
9724
9725 2007-08-23  Martin Baulig  <martin@ximian.com>
9726
9727         * mono-debug-debugger.c
9728         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9729         don't notify the debugger about it.
9730
9731         * mono-debug-debugger.h
9732         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9733
9734 2007-08-23  Robert Jordan  <robertj@gmx.net>
9735
9736         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9737         Code is contributed under MIT/X11 license.
9738
9739 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9740
9741         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9742
9743 2007-08-22  Martin Baulig  <martin@ximian.com>
9744
9745         * mono-debug.c: Store debugging info on a per-domain basis and
9746         free it on domain unload.  Add support for unloading symbol files.
9747
9748         * mono-debug.h
9749         (MonoDebugList): New typedef.
9750         (MonoSymbolTable):
9751         - add `data_tables and `type_table'.
9752         - replace 'symbol_files' and `num_symbol_files' with a
9753           `MonoDebugList *'.
9754         (mono_debug_data_table): Removed.
9755         (mono_debug_list_add): New public function.
9756         (mono_debug_list_remove): New public function.
9757         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9758         (mono_debug_init_2_memory): Renamed into
9759         mono_debug_open_image_from_memory().
9760         (mono_debug_close_image): New public function.
9761         (mono_debug_domain_create): Likewise.
9762         (mono_debug_domain_unload): Likewise.
9763         (MONO_DEBUGGER_VERSION): Bump to 60.
9764
9765         * mono-debug-debugger.h
9766         (MonoDebuggerEvent):
9767         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9768         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9769         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9770         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9771           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9772         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9773           meaning.
9774         (mono_debugger_add_symbol_file): Removed.
9775         (mono_debugger_add_type): Removed.
9776         (mono_debugger_lookup_type): Removed.
9777         (mono_debugger_lookup_assembly): Removed.
9778
9779         * domain.c
9780         (mono_domain_create): Call mono_debug_domain_create().
9781         (mono_init_internal): Call mono_debug_init_corlib().
9782
9783         * assembly.c
9784         (mono_assembly_close): Call mono_debug_close_image().
9785
9786 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9787
9788         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9789         mmap call.
9790
9791 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9792
9793         * sgen-gc.c: ensure section->pin_queue_end is initialized
9794         correctly when non pinning objects in the section have been found.
9795
9796 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9797
9798         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9799         containing a list of directories separated by ':'. MSDN docs say
9800         the directories should be separated with ';'. Part of a bugfix for
9801         bug #81446
9802
9803 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9804
9805         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9806         it should MonoType and not MonoClass.
9807
9808 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9809
9810         * culture-info-table.h : regenerated.
9811
9812 2007-08-20  William Holmes  <billholmes54@gmail.com>
9813
9814         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9815          to call ReplaceFile Kernel32 on windows or in io-layer.
9816         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9817         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9818          as an internal call.
9819
9820         Code is contributed under MIT/X11 license.
9821
9822 2007-08-20  Jb Evain  <jbevain@novell.com>
9823
9824         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9825         and MONO_EXCEPTION_FIELD_ACCESS.
9826
9827         * debug-helpers.[c|h]: new mono_field_full_name function.
9828
9829 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9830
9831         * class.c: Removed class_security_level() and moved it to
9832         security-core-clr.c.
9833
9834         * security-core-clr.c, security-core-clr.h: class_security_level()
9835         is now public and renamed to mono_security_core_clr_class_level().
9836         It also looks for security attributes in the classes a class is
9837         nested in.
9838
9839 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9840
9841         * security-core-clr.c, security-core-clr.h: CoreCLR security
9842         utility functions.
9843
9844         * Makefile.am: Added security-core-clr.[ch].
9845
9846         * security-manager.c, security-manager.h: Functions and enum for
9847         setting and getting the security mode.
9848
9849         * class.c: CoreCLR security checks.
9850
9851 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9852
9853         * icall-def.h, process.c, process.h: implemented icall to get
9854         user/system processor times.
9855
9856 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9857
9858         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9859         reader-lock-free jit_info_table.
9860
9861 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9864
9865         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9866
9867         * object-internals.h (MonoException): Add missing _data member.
9868
9869 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9870
9871         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9872         checking that only methods with matching qname or fqname are picked
9873         from implemented interfaces.
9874
9875 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9876
9877         * verify.c (do_newarr):added, do type verification of
9878         newarr ops, push the right value on the eval stack.
9879         * verify.c (mono_method_verify): use do_newarr
9880
9881
9882 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9883
9884         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9885         factored the common code into get_boxable_mono_type, which
9886         is now using mono_type_get_full, this fixed byref related tests.
9887
9888 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9889
9890         * class.c: added mono_type_get_full, this function has the same
9891         behavior of mono_class_get_full but the returned MonoType has
9892         all metadata of the associated token in case of a typespec token.
9893         * class.c: added mono_type_retrieve_from_typespec, used by 
9894         mono_type_get_full to retrieve the token type.
9895         * class.c (mono_class_create_from_typespec): changed to use
9896         mono_type_retrieve_from_typespec.
9897         * class.c (mono_ldtoken): changed to use mono_type_get_full
9898         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9899         * class-internals.h: exported mono_type_get_full for internal use.
9900
9901 2007-08-16  Jb Evain  <jbevain@novell.com>
9902
9903         * domain.c (supported_runtimes): add entry for
9904         the 'moonlight' runtime version.
9905
9906 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9907
9908         * verify.c (mono_method_verify): small typo sliped in.  
9909
9910 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * verify.c (do_unbox_value): added, do type verification of
9913         unboxing ops
9914         * verify.c (mono_method_verify): use do_unbox_value
9915
9916
9917 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9918
9919         * verify.c (dump_stack_value): fixed typo, was printing string
9920         instead of object on stack.
9921         * verify.c (do_box_value): moved the byref check up as it leads
9922         to invalid code and should be done earlier.
9923         * verify.c: improved error messages for and ldobj
9924
9925 2007-08-15  William Holmes  <billholmes54@gmail.com>
9926
9927         * marshal.c (emit_marshal_custom): Omit the call to 
9928           marshal_native_to_managed when calling native to managed 
9929           and the argument is specified as an out argument.
9930
9931         Code is contributed under MIT/X11 license.
9932
9933 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9934
9935         * verify.c: fixed the type checks for generics, function pointers and vectors.
9936         Added type verification for ldobj and ldtoken. The verifier
9937         would segfault if header or signature of a method contained references
9938         to non-existant types.
9939
9940 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9941
9942         * marshal.c (cominterop_get_ccw): Patch from
9943         Bill Holmes to no walk up interface hierarchy. 
9944         All parent methods should be present in the interface for COM.
9945    
9946         Code is contributed under MIT/X11 license.
9947
9948 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9949
9950         * marshal.c (emit_marshal_com_interface): Patch from
9951         Bill Holmes to handle COM Interfaces as return values
9952         for native->managed calls.
9953    
9954         Code is contributed under MIT/X11 license.
9955
9956 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9957
9958         * marshal.c (cominterop_get_idispatch_for_object): Implement
9959         for runtime callable wrappers.
9960    
9961         Code is contributed under MIT/X11 license.
9962
9963 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9964
9965         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9966         so 2.0 types are accessible
9967
9968
9969 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9970
9971         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9972         once we load mscorlib.   Due to the order in which we initialize,
9973         the mono_assembly_load_full routine that loads mscorlib did not
9974         load friends.   We now load it once we load the
9975         mono_defaults.internals_visible_class class. 
9976
9977         * assembly.c: Expose the mono_load_friend_assemblies method.
9978
9979 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9980
9981         * verify.c: improved the handling of boxing, better
9982         type checking for unary ops and conversion. Fix bug
9983         regarding managed pointer compatibility checking
9984
9985 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9986
9987         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9988
9989         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9990
9991 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9992
9993         * reflection.c (dup_type): Remove.
9994         * class.c (dup_type): Remove.
9995         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9996         instead of the dodgy 'dup_type'.
9997         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9998         handle the case where 'dup_type' needed the second argument.
9999
10000 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
10001
10002         * domain.c: Fix a warning.
10003
10004 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
10005
10006         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
10007         checking that methods with the same fqname are not overridden
10008         with a method from an ancestor.
10009
10010 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
10011
10012         * threads.c (free_thread_static_data_helper): Avoid a crash if
10013         thread->static_data is not yet set.
10014
10015 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
10016
10017         * marshal.c: Use correct image when emitting
10018         native wrapper for COM calls.
10019    
10020         Code is contributed under MIT/X11 license.
10021
10022 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
10023
10024         * icall-def.h, security.c, security.h :
10025           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
10026
10027 2007-08-07  Martin Baulig  <martin@ximian.com>
10028
10029         * mono-debug-debugger.h
10030         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
10031
10032         * domain.c (mono_domain_free): Call
10033         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
10034
10035 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10036
10037         * verify.c (check_underflow, check_overflow): error message now returns IL offset
10038         * verify.c (in_same_block): code should test if either offset is inside the clauses
10039         * verify.c (mono_method_verify): push the exception into the eval stack of exception
10040         and filter blocks
10041
10042 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * image.c (mono_image_close): Fix a leak.
10045
10046         * object.c (mono_runtime_invoke_array): Avoid using alloca.
10047
10048         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
10049
10050 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
10051
10052         * domain.c, threads.c, threads-types.h: fix memory retention issue
10053         with thread static variables not being cleared on domain unload.
10054         Reuse thread static slots after domain unload.
10055
10056 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
10057
10058         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
10059         nullable type.
10060
10061         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
10062         now done in mono_runtime_invoke_array.
10063
10064         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
10065         receiver is a nullable type.
10066
10067         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
10068         generic parameter.
10069
10070 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
10071
10072         * marshal.c: Implement COM Objects as return type for 
10073         managed->unmanaged calls. Added Release calls for COM Object
10074         out/return values in managed->unmanaged calls.
10075
10076         Code is contributed under MIT/X11 license.
10077
10078 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10079
10080         * threads.h, threads-type.h: move the hazard pointer declarations
10081         to the private header.
10082
10083 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10084
10085         * file-io.c, appdomain.c: memory leak fixes.
10086
10087 2007-08-02  Dick Porter  <dick@ximian.com>
10088
10089         * socket-io.c
10090         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
10091         SO_REUSEADDR setting into io-layer/sockets.c.
10092
10093 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
10094
10095         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
10096         from Object when called on a generic parameter. Fixes #82211.
10097
10098 2007-08-01  Dick Porter  <dick@ximian.com>
10099
10100         * file-io.c (convert_share): Test FileShare values bit-by-bit.
10101         Fixes bug 79250 yet again.
10102
10103 2007-07-30  Martin Baulig  <martin@ximian.com>
10104
10105         Merged the `debugger-dublin' branch.
10106
10107         * mono-debug.h
10108         (MonoDebugDataTable): New typedef.
10109         (MonoDebugMethodAddressList): New typedef.
10110         (MonoDebugWrapperData): Removed.
10111         (MonoDebugSymbolTable): Removed `current_data_table',
10112         `current_data_table_size', `current_data_table_offset'.
10113         (MonoDebugDataItemType): Moved into mono-debug.c.
10114         (MonoDebugMethodJitInfo): Remove `address'.
10115         (mono_debug_data_table): New global variable.
10116         (mono_debug_lookup_method_addresses): New public function.
10117         (mono_debug_find_method): Take a `MonoMethod *', not a
10118         `MonoDebugMethodInfo *'.
10119
10120         * mono-debug.c: Drop support for the old symbol tables.
10121
10122 2007-06-28  Martin Baulig  <martin@ximian.com>
10123
10124         * mono-debug.c (mono_debug_debugger_version): New public variable.
10125
10126 2007-07-31  William Holmes  <billholmes54@gmail.com>
10127
10128         * metadata.c Changed mono_type_create_from_typespec to not insert
10129           the type into the hash map until after
10130           do_mono_metadata_parse_type has completed.
10131         Fixes Bug #82194
10132         Code is contributed under MIT/X11 license.
10133
10134 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
10137         generic parameter. Fixes #82211.
10138
10139 2007-07-27  Jb Evain  <jbevain@novell.com>
10140
10141         * pedump.c (dump_metadata, dump_metadata_header): dump
10142         versions contained in the metadata header.
10143
10144 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10145
10146         * threads.c: register small_id_table with the GC.
10147
10148 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10149
10150         * threads.c, threads.h, class-internals.h, object-internals.h:
10151         Hazard pointers, to be used by lock-free parallel algorithms.
10152
10153 2007-07-26  Dick Porter  <dick@ximian.com>
10154
10155         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
10156         routine on non-windows platforms, as I've not managed to think of
10157         a non-kludgy way of doing this.  Finishes off bug 78739.
10158
10159 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10160
10161         * object.c: properly setup interface_bitmap in proxy vtables.
10162
10163 2007-07-25  Marek Habersack  <mhabersack@novell.com>
10164
10165         * appdomain.c (get_shadow_assembly_location): do not use TickCount
10166         to create unique shadow copy target directories, use the domain's
10167         serial number instead. Each domain gets a unique target directory
10168         that way.
10169
10170         * domain.c (mono_domain_create): added code to increment domain
10171         shadow copy serial number and cache the value in the current
10172         domain structure.
10173
10174         * domain-internals.h (struct _MonoDomain): added a new field -
10175         shadow_serial to hold the serial number used in generation of
10176         shadow-copy directories. This is to make sure that the directory
10177         name is unique for each and every domain created. We avoid a race
10178         condition with overriding assemblies already in use by other app
10179         domains.
10180
10181 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
10182
10183         * class.c (mono_bounded_array_class_get): fixed memory leak when 
10184         binding generic parameters.
10185
10186 2007-07-24  Raja R Harinath  <rharinath@novell.com>
10187
10188         * metadata.c (do_mono_metadata_parse_generic_class): Use
10189         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
10190         error.
10191
10192 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10193
10194         * loader.c, class-internals.h, reflection.c: removed the per-method
10195         generics hashtable: we use the global one through the call of
10196         mono_class_inflate_generic_method ().
10197
10198 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10199
10200         * class.c, metadata.c, class-internals.h: introduce yet another
10201         generics global cache for inflated methods (fixes 98% of the perf
10202         issue in bug #81806).
10203
10204 2007-07-23  Raja R Harinath  <rharinath@novell.com>
10205
10206         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
10207         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
10208         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
10209         return a MonoGenericInst containing (a copy) of those types.
10210         (mono_metadata_inflate_generic_inst): Update to changes.
10211         (mono_metadata_parse_generic_inst): Likewise.
10212         (mono_get_shared_generic_inst): Likewise.
10213         * reflection.c (mono_class_bind_generic_parameters): Likewise.
10214         (mono_reflection_bind_generic_method_parameters): Likewise.
10215         * metadata-internals.h: Likewise.
10216         * icall.c (free_generic_context): Kill.
10217         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
10218
10219         * reflection.c (reflection_methodbuilder_to_mono_method): Use
10220         mono_metadata_type_dup.
10221         * marshal.c (mono_mb_create_method): Likewise.
10222
10223         * metadata.c (mono_metadata_type_dup): Rename from
10224         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
10225         MonoImage.  Handle a few more cases, esp. when no mempool is given.
10226         * marshal.c, metadata-internals.h: Update to changes.
10227
10228 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10229
10230         * class.c: fixed a small leak for array classes and removed warning.
10231
10232 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * loader.c (mono_method_get_param_token): Make this work on generic methods.
10235         Return 0x8000000 for return parameters. Fixes #82161.
10236
10237 2007-07-21  Marek Habersack  <grendello@gmail.com>
10238
10239         * appdomain.c (get_shadow_assembly_location): append the current
10240         ticks value to the path. Avoids overwriting the same assemblies by
10241         several threads at the same time.
10242
10243 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10244         and Raja R Harinath  <rharinath@novell.com>
10245
10246         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10247         Simplify slightly.
10248         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10249         property for testing if a method is a generic method definition.
10250
10251 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10252
10253         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10254
10255 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10256
10257         * verify.c: used function from private branch, reverted to the one in class.h 
10258
10259 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10260
10261         * verify.c: a typo slipped in and the code wont compile
10262
10263 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10264
10265         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10266         disabled box instruction as it is doing the wrong thing
10267         improved stack dump messages, now it is easier to debug type related issues
10268
10269
10270 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10271
10272         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10273
10274 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10275
10276         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10277         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10278         grouped with class and valuetype. This change will simply 
10279         the code as it should be handled just like unmanaged pointers.
10280
10281 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10282
10283         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10284
10285 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10286
10287         * verify.c: several stack merge issues fixed, reference comparisons now
10288         check the type size. strict type check now works correctly.
10289         added more uses of IS_MANAGED_POINTER macro.
10290         fixed issues pointed by running the test suite against .net.
10291         
10292
10293 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10294
10295         * class.c, loader.c, class-internals.h: Removed the
10296         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10297         defines.
10298
10299         * icall.c: Better error checking in some internal reflection
10300         methods.
10301
10302 2007-07-18  William Holmes  <billholmes54@gmail.com>
10303
10304         * filewatcher.c : removed unused variable 'filename' in 
10305           ves_icall_System_IO_FSW_SupportsFSW
10306
10307 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10308
10309         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10310         obsolete, removed.
10311
10312 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10313
10314         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10315         
10316         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10317
10318 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10321         Implement generics support.
10322         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10323
10324         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10325         type_args and method_args arguments.
10326         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10327         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10328         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10329
10330 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10331
10332         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10333           It adds a rootimage parameter to mono_reflection_get_type_internal,
10334           adds new function mono_reflection_get_type_with_rootimage and use
10335           the rootimage to resolve the types instead of the current image
10336
10337 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10338
10339         * culture-info-table.h: Forgot to update after r78304.
10340
10341 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10342
10343         * class.c (mono_class_is_open_constructed_type)
10344         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10345
10346 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10347
10348         * class.c (mono_bounded_array_class_get):  method fails if used with
10349         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10350         avoiding calculating the size for such array as it cannot be instantiated.
10351         Fix bug #82015
10352
10353 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10354
10355         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10356         field.
10357         * metadata.c, reflection.c: Update to changes.
10358
10359 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10360
10361         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10362         mono_class_is_valid_enum, they are used to valide a enum when loading.
10363         * reflection.c: used new functions to throw TypeLoadException when and
10364         invalid enum is build with TypeBuilder. Fixes #82018
10365   
10366 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10367
10368         * object.c: forgot commit of mono_class_setup_methods () to access
10369         iface->methods.
10370         * object-internals.h: added a few more handy fields to
10371         MonoIMTCheckItem.
10372
10373 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10374
10375         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10376         iface->methods.
10377
10378 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10379
10380         * class-internals.h, object-internals.h, object.c: IMT-based
10381         interface invocation core from Massimiliano Mantione
10382         (massi@ximian.com) with a reworked arch-specific interface,
10383         bsearch implementation and a few bugfixes and memory savings by me.
10384
10385 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10386
10387         * class.c (mono_class_create_from_typedef): mono would segfault if 
10388         an enum did not have a __value field. It now throws a TypeLoadException
10389         for such cases. Fix bug #82022
10390
10391 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10392
10393         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10394
10395 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10396
10397         * class.c (mono_class_init): If a class is already inited but has
10398         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10399
10400 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10401
10402         * class.c: Properly handle the case of an unimplemented interface
10403         method.  Fixes: 81673.
10404
10405 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10406
10407         * class-internals.h, object.c: cleanup patch from massi: use
10408         MonoVTable->interface_bitmap since the vtable interfaces offset array
10409         is going away.
10410
10411 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10414         GetMDStreamVersion icall instead.
10415
10416 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10417
10418         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10419         not use mono_dl_build_path() with a full library name: makes
10420         fallbacks to libgaim and libfam work.
10421
10422 2007-07-06  William Holmes  <billholmes54@gmail.com>
10423
10424         * assembly.c: Added a continue statement in probe_for_partial_name when
10425          parse_assembly_directory_name fails.  Fixes : 82002
10426
10427 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10428
10429         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10430         and added a verification  for TYPEDBYREF.
10431         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10432         make native int interchangeable with int32 and some small cleanup and formating.
10433         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10434         handle byref of byref.
10435         * verify.c (push_local): handle byref of byref.
10436         * verify.c (do_binop): invalid mix of values is unverifiable
10437         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10438         added visibility checks
10439         * verify.c (field related method): added visibility checks
10440         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10441
10442 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10445         string.
10446
10447 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10448
10449         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10450
10451         * marshal.c (emit_marshal_string): When returning a string from managed code,
10452         allways make a copy even for unicode strings. Fixes #81990.
10453
10454 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10455
10456         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10457         of byref generic inst types (bug #81997).
10458
10459 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10460
10461         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10462         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10463
10464 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * marshal.c (emit_marshal_string): Add support for unicode strings in
10467         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10468
10469 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10470
10471         * verify.c: field load/store are now verified, missing only access checks now
10472
10473 2007-06-28  Martin Baulig  <martin@ximian.com>
10474
10475         * mono-debug.c (mono_debug_debugger_version): New public variable.
10476
10477 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10478
10479         * locales.c: When constructing DateTimeFormat or NumberFormat for
10480         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10481         MonoCultureInfo contructed from the current locale is always
10482         read-only and has UseUserOverride set to true. All MonoCultureInfo
10483         instances returned for GetCultures have both IsReadOnly and
10484         UseUserOverride set to true. Fixes part of bug #81930.
10485
10486 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10487
10488        * icall-def.h: Update System.__ComObject icalls
10489        * marshal.c: Avoid managed transition (and object creation)
10490        when looking up COM interface in RCW.
10491        * marshal.h: Ditto.
10492        
10493        Code is contributed under MIT/X11 license.
10494
10495 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10496
10497         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10498         to avoid crashes during assembly unloading.
10499
10500 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10501
10502         Fix MethodInfo.IsGenericMethodDefinition
10503         * reflection.c (mono_reflection_bind_generic_method_parameters):
10504         Rearrange code to ensure we always uses a generic method definition.
10505         * class.c (mono_class_inflate_generic_method_full): Set
10506         'generic_container' field only for generic method definitions.
10507         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10508         Use presense of 'generic_container' field as indication of being a
10509         generic method definition.
10510
10511 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10512
10513         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10514
10515         * object-internals.h: Reflect changes in the layout of the managed Delegate
10516         class.
10517         
10518         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10519         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10520         runtime memory used by the dynamic method. Fixes #77146.
10521
10522 2007-06-21  Dick Porter  <dick@ximian.com>
10523
10524         * file-io.h: 
10525         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10526         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10527         81767.
10528
10529 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10530
10531         * reflection.c (method_encode_methodspec): Add a tripwire.
10532         * class.c (inflate_generic_type): The fully open generic type is
10533         not the same as the generic type definition.
10534
10535 2007-06-21  Martin Baulig  <martin@ximian.com>
10536
10537         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10538
10539         * mono-debug-debugger.h
10540         (MonoDebuggerBreakpointInfo): Removed.
10541         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10542         (mono_debugger_remove_breakpoint): Likewise.
10543         (mono_debugger_breakpoint_callback): Likewise.
10544         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10545
10546 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10547
10548         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10549         generic type is not the same as the generic type definition.
10550         * class.c (mono_generic_class_get_class): Likewise.
10551
10552 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10553
10554         * icall.c: The second argument to 
10555         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10556         is a MonoType not a MonoClass.
10557
10558 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10559
10560         * verify.c: support for function pointers in the verifier
10561
10562 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10563
10564         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10565
10566 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10567
10568         * assembly.c: removed Mono.Data.SqliteClient from the list of
10569         forward-compatible assemblies as it breaks the ABI (bug #81899).
10570
10571 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10572
10573         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10574         lookup/update with the loader lock.
10575         * reflection.c (mono_class_bind_generic_parameters): No need to
10576         protect mono_metadata_lookup_* with the loader lock.
10577         * class.c (inflate_generic_type): Likewise.
10578         
10579         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10580         on a generic instantiated type.
10581
10582 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10583
10584         *verify.c: produce meanfull error messages on verification error
10585         *verify.c: fixed some cases of verification errors reported as validation errors
10586         *pedump.c: fixed the error name array, now it shows validation errors properly
10587         *verify.h: fixed the contant that should be used for verification errors
10588
10589 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10590
10591         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10592         for bug #77596, 81858 and 80743 (generics data structures on domain
10593         unload).
10594
10595 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10596
10597         Avoid allocating 'MonoGenericContext' on the heap.
10598         * class-internals (_MonoMethodInflated::context): Make field
10599         inline, not a pointer.
10600         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10601         stack.  Use the context embedded within the inflated method as the
10602         hash key, rather than 'new_context'.
10603         * class.c (inflate_generic_context): Simplify.  Return a struct
10604         rather than allocating on the heap.
10605         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10606         doesn't salt away a copy of the context -- simplifying the
10607         lifetime rules of a 'MonoGenericContext *'.
10608         (mono_method_get_context): Return pointer to embedded context.
10609         (setup_generic_array_ifaces): Allocate temporary context on stack.
10610         * reflection.c (inflate_mono_method): Likewise.
10611         (mono_reflection_bind_generic_method_parameters): Likewise.
10612         Use the context embedded within the inflated method as the hash key.
10613
10614         Avoid a source of allocation of 'MonoGenericContext'.
10615         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10616         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10617         * class.c: Update to changes.
10618         (mono_generic_class_get_context): Simplify drastically.  Now just
10619         returns a pointer to the field.
10620         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10621         argument as a const pointer.
10622         (mono_metadata_generic_context_equal): Likewise.
10623         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10624         Update to changes.
10625
10626 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10627
10628         * verify.c improved the handling of brtrue/brfalse, factored out common code
10629
10630 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10631
10632         Kill MonoGenericMethod.
10633         * class-internals.h (MonoGenericContext::method_inst): Rename from
10634         'gmethod' and convert to a MonoGenericInst.
10635         (MonoGenericMethod): Remove.
10636         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10637         * loader.c (method_from_methodspec): Update to changes.  Use a
10638         MonoGenericContext as the key to the hashtable.
10639         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10640         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10641         (mono_metadata_generic_context_hash): Likewise from
10642         'mono_metadata_generic_method_hash'.  Change hash function.
10643         (mono_metadata_load_generic_params): Update to changes.
10644         (mono_get_shared_generic_method): Remove.
10645         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10646         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10647         (inflate_generic_context): Likewise.
10648         (mono_class_inflate_generic_method_full): Likewise.
10649         (setup_generic_array_ifaces): Likewise.
10650         (mono_class_create_from_typespec): Likewise.
10651         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10652         (method_encode_methodspec): Update callsite.
10653         (reflection_methodbuilder_to_mono_method): Update to changes.
10654         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10655         MonoGenericContext as the key to the hashtable.
10656         (inflate_mono_method): Update to changes.
10657
10658         * class-internals.h (MonoGenericMethod::container): Remove.
10659         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10660
10661 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10662
10663         * profiler-private.h, profiler.c, profiler.h: added API to profile
10664         exception events.
10665
10666 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10667
10668         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10669
10670 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10671
10672         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10673         Fixed overflow and underflow not aborting the verification process.
10674
10675 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10676
10677         * class-internals.h (MonoStats): Added stats entries for dynamic
10678         code allocations.
10679
10680 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * loader.c (mono_free_method): Free header->locals and header->clauses.
10683
10684         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10685         dynamic case.
10686
10687         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10688
10689         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10690
10691 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10692
10693         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10694         the tables.
10695
10696 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10697
10698         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10699
10700 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10701
10702         MonoGenericMethod on a diet
10703         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10704         here ...
10705         (_MonoGenericMethod::reflection_info): ... from here.
10706         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10707         Update to changes.
10708         * reflection.c (inflate_mono_method): Likewise.
10709         (mono_reflection_bind_generic_method_parameters): Likewise.
10710
10711 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10712
10713         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10714         *verify.c: factored long ldarg forms to share code with short forms
10715
10716 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10717
10718         *verify.c: fixed code formating factored some duplicate code
10719         into a new function
10720
10721         *verify.h: fixed binary incompatibility introduced earlier
10722
10723         *pedump.c: fixed formating
10724
10725 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10726
10727         Fix assertion when disassembling Mono.C5.dll
10728         * loader.c (method_from_methodspec): Avoid inflating a method
10729         twice with the same context.  If the methodref is inflated, use
10730         the declaring method instead.
10731
10732         * class.c (mono_class_from_generic_parameter): Fix case similar to
10733         bug #81830 handled below, but for method containers.
10734
10735 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10736
10737         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10738         get_shared_generic_class.  Directly inflate the instance.
10739         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10740         (inflate_generic_class): Delete.
10741         (get_shared_generic_class): Delete.  Move setting of
10742         'cached_class' and 'cached_context' ...
10743         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10744
10745         * metadata.c (mono_metadata_lookup_generic_class): Change
10746         signature to take the components of a MonoGenericClass rather than
10747         an allocated MonoGenericClass.  Change semantics to be intern-like.
10748         * reflection.c (mono_class_bind_generic_parameters): Update to
10749         changes.  Make locking region tighter.
10750         * class.c (inflate_generic_class): Update to changes.
10751         (get_shared_generic_class): Likewise.
10752         * metadata-internals.h: Likewise.
10753
10754         * reflection.c (mono_class_bind_generic_parameters): Take and
10755         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10756         (mono_reflection_bind_generic_parameters): Use
10757         'mono_class_bind_generic_parameters' rather than duplicate the code.
10758         * class.c (mono_bounded_array_class_get): Update to changes.
10759         * object-internals.h: Likewise.
10760
10761         * reflection.c (mono_class_bind_generic_parameters): Only support
10762         parameterizing generic type definitions.  Remove support for other
10763         open types.
10764
10765 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10768
10769         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10770         in the dynamic case.
10771
10772 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10773
10774         * threads.c: When cleaning up thread, reset the Background bit.
10775         Fixes bug #81720.
10776
10777 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10778
10779        * metadata.c: Move variable declarations to top of scope.
10780        * verify.c: Move variable declarations to top of scope.
10781
10782        Code is contributed under MIT/X11 license.
10783
10784 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10785
10786         * reflection.c (mono_class_bind_generic_parameters): Replace
10787         open-coded loop with mono_metadata_inflate_generic_inst.
10788
10789         * class.c (get_shared_generic_class): Don't call
10790         mono_get_shared_generic_inst.  Use the container's own
10791         'class_inst'.
10792
10793         * metadata.c (mono_metadata_load_generic_params): Move
10794         initialization of 'context' field here from ...
10795         * class.c (mono_class_create_from_typedef): ... here, and ...
10796         * loader.c (mono_get_method_from_token): ... here.
10797
10798         * class.c (get_shared_generic_class): Rename from
10799         mono_get_shared_generic_class and make static.
10800         (mono_get_shared_generic_inst): Move to metadata.c.
10801         * loader.c (mono_get_shared_generic_method): Likewise.
10802         * class-internals.h, metadata-internals.h: Update to changes.
10803
10804         Fix #81830
10805         * class.c (mono_class_from_generic_parameter): Don't assume a
10806         generic container owner exists.  Generic containers from monodis
10807         don't have any.
10808
10809 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10810
10811         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10812         * verify.h: new typedefs to returns the non-verifiable status
10813         * verify.c: initial implementation of generics, stack merging and object compatibility check
10814
10815 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10816
10817         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10818         a MonoInternalHashTable again (fixed bug in internal hash table
10819         code).
10820
10821 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10822
10823         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10824         MonoInternalHashTable again (fixed bug in internal hash table
10825         code).
10826
10827 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10828
10829         * class.c, image.c, class-internals.h, domain.c,
10830         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10831         changes.  Have to figure out what makes them break the SWF
10832         regression.
10833
10834 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10835
10836         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10837         a MonoInternalHashTable now.
10838
10839 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10840
10841         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10842         MonoInternalHashTable now.
10843
10844 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10847         invoke_impl code.
10848
10849         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10850
10851         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10852         dependent trampoline.
10853
10854         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10855
10856         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10857
10858 2007-05-29  Robert Jordan  <robertj@gmx.net>
10859
10860         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10861
10862 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10865
10866 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10867
10868        * marshal.c: Fix interface lookup loops for
10869        cominterop_get_com_slot_for_method and 
10870        cominterop_get_method_interface. Only need to lookup
10871        if type is a class, else use interface type method is on.
10872
10873        Code is contributed under MIT/X11 license.
10874
10875 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10876
10877         * reflection.c: HasSecurity can be present even if no specially 
10878         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10879         SecurityAttribute). Fix CAS regression tests on buildbot.
10880
10881 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10882
10883        * appdomain.c: Add configure checks for header files.
10884        * image.c: Add configure checks for header files.
10885        * file-io.c: Add configure checks for header files.
10886        * debug-mono-symfile.c: Add configure checks for header files.
10887        * threadpool.c: Add configure checks for header files.
10888        * console-io.c: Add configure checks for header files.
10889        * profiler.c: Add configure checks for header files.
10890        * rawbuffer.c: Add configure checks for header files.
10891        * icall.c: Add configure checks for header files.
10892        * rand.c: Add configure checks for header files.
10893        * socket-io.c: Add configure checks for header files.
10894
10895        Code is contributed under MIT/X11 license.
10896
10897 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10898
10899         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10900         assertion as it breaks the build.
10901         
10902         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10903
10904         * reflection.c (lookup_custom_attr): Make a copy here too.
10905
10906         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10907         dynamic images.
10908
10909         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10910         images.
10911
10912         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10913         info.
10914
10915 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10918         (load_cattr_value): Ditto.
10919
10920 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10923
10924 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10925
10926         * threads.c: In "start_wrapper", set apartment_state to MTA if
10927         apartment_state is Unknown and we're running on 2.0 profile or
10928         higher.
10929         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10930         to main method, then set apartment_state to Unknown on 1.0 profile,
10931         and MTA on 2.0 profile.
10932
10933 2007-05-16  Jb Evain  <jb@nurv.fr>
10934
10935         * class-internals.h (MonoDefaults): Add an attribute_class and
10936           customattribute_data_class.
10937         * domain.c (mono_init_internal): Populate them.
10938         * reflection.c: Use them to remove duplicates. Make a vew
10939         MonoClass variables `static'.
10940
10941 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10942
10943         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10944         step in implementing IMT, so that all isinst checks now can go
10945         through the bitmap.
10946         This was needed because vtables for TransparentProxy need to look
10947         like the vtable of the "target" class, so they need to point to
10948         its interface bitmap directly.
10949
10950         * object.c: inside "mono_class_create_runtime_vtable" and
10951         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10952
10953 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10954
10955         * object-internals.h
10956           culture-info.h : added territory field in MonoCulture and
10957           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10958         * locales.c : fill territory field above too.
10959         * culture-info-table.h : regenerated.
10960
10961 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10962
10963         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10964         Fixes #81599.
10965
10966 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10967
10968         * object.c: Always initialize apartment, even if 
10969         there is no custom attributes on entry point.
10970         
10971         Code is contributed under MIT/X11 license.
10972
10973 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10974
10975         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10976         * metadata.c: If no encoding is set, check for unicode
10977         on class.
10978         
10979         Code is contributed under MIT/X11 license.
10980
10981 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10982
10983         * threads.c: Handle if mono_thread_current returns NULL 
10984         
10985         Code is contributed under MIT/X11 license.
10986
10987 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10988
10989         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10990         in start_wrapper. Added mono_thread_init_apartment_state and
10991         mono_thread_cleanup_apartment_state.
10992         * object.c: Initialize thread apartment state on main thread
10993         by checking for STAThreadAttribute on entry point.
10994         * object-internals.h: Add apartment_state field to MonoThread.
10995         * threads-types.h: Add unmanaged definition of 
10996         System.Threading.ApartmentState, MonoThreadApartmentState.
10997         
10998         Code is contributed under MIT/X11 license.
10999         
11000 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
11001
11002         * class.c: Fix windows build.
11003         * class-internals.h: Fix windows build.
11004         
11005         Code is contributed under MIT/X11 license.
11006
11007 2007-05-08  Robert Jordan  <robertj@gmx.net>
11008
11009         * process.c (CreateProcess_internal):
11010         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
11011         .CreateNoWindow was specified. Fixes #81496.
11012
11013 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11014
11015         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
11016         step in implementing IMT, replaced it with two compact arrays
11017         (interfaces_packed and interface_offsets_packed) and a bitmap that
11018         is used for isinst checks (interface_bitmap).
11019
11020         * class.c: (compare_interface_ids): compare function to pass to
11021         bsearch when looking for an interface with a given id.
11022         (mono_class_interface_offset): reimplemented using bsearch on
11023         interfaces_packed, getting the offset from interface_offsets_packed.
11024         (print_implemented_interfaces): utility debugging function.
11025         (setup_interface_offsets): reworked to initialize interfaces_packed,
11026         interface_offsets_packed and interface_bitmap.
11027
11028         * object.c: replaced all accesses to "MonoClass.interface_offsets"
11029         with uses of interfaces_packed and interface_offsets_packed.
11030
11031 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11032
11033         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
11034         mono_class_interface_offset prototype to wrap all accesses to
11035         "MonoClass.interface_offsets".
11036
11037         * class.c: Implemented mono_class_interface_offset, and wrapped all
11038         accesses to "MonoClass.interface_offsets".
11039
11040         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
11041         "MonoClass.interface_offsets".
11042
11043 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
11044
11045         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
11046         GetMethodFromHandle overloads (bug #78637).
11047
11048 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11049
11050         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
11051         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
11052
11053 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
11056         #81498.
11057
11058         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
11059         gracefully.
11060         (mono_custom_attrs_from_index): Ditto.
11061
11062         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
11063         Fixes #81501.
11064
11065 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
11068         is now allocated from a mempool.
11069
11070 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
11073         caller holds threads_lock, leading to deadlocks. Fixes #81476.
11074
11075 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
11078         mono_loader_clear_error () too late. Fixes #81463.
11079
11080 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
11081
11082         * culture-info-table.h : regenerated.
11083
11084 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
11087         is missing.
11088
11089 2007-04-25  Dick Porter  <dick@ximian.com>
11090
11091         * Makefile.am: Put the mingw enforced-optimisation back into the
11092         PLATFORM_WIN32 section.
11093
11094 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
11097         patch.
11098
11099         * image.c (mono_image_load_module): New API function to load a module reference.
11100
11101         * image.c (load_modules): Load modules lazily. Fixes #80812.
11102
11103         * class.c (mono_class_from_typeref): Use mono_image_load_module.
11104         
11105         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
11106
11107         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
11108         to mono_image_load_module_dynamic.
11109
11110 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
11111
11112         * marshal.c: Fix calling convention for CCW on non-windows
11113         platforms. STDCALL on windows, CDECL everywhere else to work 
11114         with XPCOM and MainWin COM.
11115         
11116         Code is contributed under MIT/X11 license.
11117
11118 2007-04-23  Martin Baulig  <martin@ximian.com>
11119
11120         Fix #80969.
11121
11122         * loader.c
11123         (method_from_memberref): Added `gboolean *used_context' argument.
11124         (mono_get_method_from_token): Likewise.
11125         (mono_get_method_full): Don't insert the method in the cache when
11126         `used_context' is true.
11127
11128 2007-04-23  Raja R Harinath  <rharinath@novell.com>
11129
11130         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
11131
11132         * reflection.c (mono_reflection_bind_generic_parameters): Don't
11133         create new MonoTypes for returned types.
11134         * class.c (mono_generic_class_get_class): Export mono-internal.
11135         * class-internals.h: Update to changes.
11136
11137 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11138
11139         * threadpool.c, threadpool.h, icall-def.h: patch from
11140         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
11141
11142 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
11145         
11146         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
11147
11148         * threads.c (mono_thread_get_stack_bounds): New helper function.
11149
11150         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
11151         Correctly compute stack bounds when attaching. Fixes #81394.
11152
11153 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
11154
11155         * reflection.c: fix handling of doubles in custom attributes
11156         for the arm-fpa format (bug #81368).
11157
11158 2007-04-18  Raja R Harinath  <rharinath@novell.com>
11159
11160         * reflection.c (assembly_add_win32_resources): Mildly relax an
11161         bounds check to let the end pointer point just past the end of the
11162         allocated buffer.  (may fix #81384)
11163
11164 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
11165
11166         * culture-info-table.h : regenerated.
11167
11168 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
11169
11170         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
11171         the thread is aborted early.
11172
11173 2007-04-05  Dick Porter  <dick@ximian.com>
11174
11175         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
11176         FindFirstFile()/FindNextFile() to find entries.  This lets the
11177         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
11178         81038.
11179
11180         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
11181         the parameters of
11182         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
11183
11184 2007-04-04  Martin Baulig  <martin@ximian.com>
11185
11186         * debug-helpers.c
11187         (mono_method_desc_full_match): Add support for nested classes.
11188
11189 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
11190
11191         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
11192
11193 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
11196         waiting for too many threads.
11197
11198 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
11199
11200         * environment.c: Fix return value check on uname so we can get the 
11201         executing version on Solaris operating systems.
11202
11203 2007-03-28  Jb Evain  <jbevain@gmail.com>
11204
11205         * class.c (mono_type_get_name_recurse): Complete the
11206         fix for the creation of assembly qualified names for
11207         pointer types. Fixes #81208.
11208
11209 2007-03-27  Dick Porter  <dick@ximian.com>
11210
11211         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
11212         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
11213         changed.
11214
11215         * threads.c
11216         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
11217         the value of ReleaseMutex().
11218
11219 2007-03-27  Dick Porter  <dick@ximian.com>
11220
11221         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
11222         in little-endian order, not network endian, so must be converted
11223         to host endian here.  Fixes bug 80593.
11224
11225 2007-03-22  Jb Evain  <jbevain@gmail.com>
11226
11227         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
11228         qualified names for pointer types. Fixes #81208.
11229
11230 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
11231
11232         * marshal.c: Add support for PreserveSigAttribute. 
11233         
11234         Code is contributed under MIT/X11 license.
11235
11236 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
11237
11238         * process.c: Fix endianness issues. Fixes #81126.
11239
11240         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
11241         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
11242
11243         * image.c (mono_image_lookup_resource): Make this work on big-endian
11244         machines.Change API contract so the caller needs to free the return value.
11245         
11246         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
11247         API change.
11248         
11249 2007-03-14  Martin Baulig  <martin@ximian.com>
11250
11251         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11252         mono_type_get_desc() as well.
11253
11254 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11255
11256         * icall.c:  Fix environ access in VS.  
11257         
11258 2007-03-13  Alp Toker  <alp@atoker.com>
11259
11260         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11261         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11262         #63841.
11263
11264 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11267         circular references among dynamic methods. Fixes #81091.
11268
11269         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11270
11271 2007-03-09  Martin Baulig  <martin@ximian.com>
11272
11273         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11274
11275 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11276
11277         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11278         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11279         
11280         Code is contributed under MIT/X11 license.
11281         
11282 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11283
11284         * loader.c: Reapply patch for bug #79424.
11285
11286 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * metadata.c (mono_type_to_unmanaged): Only convert object to
11289         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11290
11291 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11292
11293         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11294         (and incorrectly set) is_reference field from MonoGenericInst.
11295
11296 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11299         a little earlier.
11300
11301         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11302
11303         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11304
11305 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11306
11307         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11308         FileOptions.1 value to mean "temporary", map that to
11309         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11310
11311         Fixes 80688
11312
11313 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11314
11315         * appdomain.c: implement MS .Net style shadow copying. Copies of
11316         the assemblies are made in a subdirectory of the dynamic base
11317         directory, the assembly names are preserved.
11318         Copy .mdb and .config files along with the assemblies being shadowed.
11319
11320 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11321
11322         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11323         (emit_marshal_handleref): Ditto.
11324
11325         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11326         on Visual C++. Fixes #80671.
11327
11328 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11329
11330         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11331         for clone operations.
11332
11333 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * marshal.c: Fix warnings.
11336
11337 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11338
11339         * loader.c: allow case-insensitive matching of the dll name
11340         in dllmap handling when prefixed with "i:".
11341
11342 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11343
11344         * threads.c: Fix #ifdef for dummy_apc function for VS.
11345
11346 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11347
11348         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11349
11350 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11351         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11352         giving precedence to the methods with a fully qualified name
11353         (InterfaceName.MethodName) when building the interface sections
11354         of the vtable.
11355
11356 2007-02-16  Dick Porter  <dick@ximian.com>
11357
11358         * threadpool.c (append_job): Fix fast-path array handling, so it's
11359         less likely the array will grow exponentially when the load is
11360         heavy.
11361
11362 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11363
11364         * metadata-internals.h, loader.c: fix dllmap lookup order
11365         for non-function maps, too, and prepare for fallback code.
11366
11367 2007-02-12  Robert Jordan  <robertj@gmx.net>
11368
11369         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11370         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11371         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11372         GlobalFree. Fixes a part of bug #77075.
11373
11374 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11375
11376         * loader.c: implemented typedef parent in field memberref.
11377
11378 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11379
11380         * marshal.c: Fix warnings and remember to call Release on
11381         IUnknown of RCW.
11382         
11383         Code is contributed under MIT/X11 license.
11384
11385 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11386
11387         * class-internals.h: Add MonoHandleRef definition, and
11388         handleref_class to mono_defaults. 
11389
11390         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11391         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11392
11393         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11394         (do nothing on this stage)
11395         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11396         (emit_marshal_handleref): New method, used for argument handling
11397         of HandleRefs. 
11398
11399 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11400
11401         * class.c (mono_class_setup_parent): Lazily init com types.
11402         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11403         init com types.
11404         * object.c (mono_remote_class_vtable): Lazily init com types.
11405         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11406         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11407         * domain-internals.h: Expose mono_init_com_types.
11408         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11409         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11410         Add support for COM Callable Wrapper marshalling.
11411         * marshal.h: Add icall definitions.
11412         * gc.c: Handle freeing of CCWs in finalizer code.
11413         
11414         Code is contributed under MIT/X11 license.
11415
11416 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11417
11418         * reflection.c: changed all the signature encoding code to use
11419         a variable-sized buffer.
11420
11421 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11422
11423         * marshal.c: locking fixes: never take the loader lock
11424         or other runtime locks when holding the marshal lock
11425         (fixes bug#80664).
11426
11427 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11428
11429         * marshal.c: make the delegate function pointer mapping
11430         work for the moving GC.
11431
11432 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11433
11434         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11435         for bug #80618.
11436
11437 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11438
11439         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11440         gmodule.
11441
11442 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11443
11444         * threadpool.c: made the code moving-GC safe.
11445
11446 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11447
11448         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11449         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11450         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11451         warning cleanup.
11452         * reflection.c: warning cleanup, some threading and moving GC fixes.
11453
11454 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11455
11456         * class.c, loader.c: create the needed Set/Get/Address array methods
11457         as well as the .ctors in mono_class_init (), fixes bug #80567.
11458
11459 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11460
11461         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11462         we doesn't decrease its alignment. Should fix the sparc build.
11463
11464 2007-01-24  Dick Porter  <dick@ximian.com>
11465
11466         * socket-io.c
11467         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11468         Create the returned object if we need to ignore an unsupported
11469         socket option.  Fixes a segfault reported by Atsushi.
11470
11471 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11472
11473         * class.c, object.c: restrict GC-tracked fields to
11474         UIntPtr fields used inside corlib, so we provide better
11475         type info to the GC and also allow broken packing as in
11476         bug #80580.
11477
11478 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11479
11480         * sgen-gc.c: removed duplicated function.
11481
11482 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11483
11484         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11485         value that means that the value is not supported, but that we
11486         should not return a failure, but instead report this as a
11487         successful operation.
11488
11489 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11490
11491         Fix tests/bug79956.2.il
11492         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11493         (mono_generic_class_get_class): If the generic definition in an
11494         enum, copy over other fields related to it.
11495
11496 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11497
11498         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11499         genericinst enums (bug #79215).
11500
11501 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11502         * class.c: Fix bug 80307.
11503
11504 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11505
11506         * image.c: if the file table is not present, try to load
11507         all the modules, since we don't have info about them
11508         having or not metadata (bug #80517).
11509         * assembly.c: allow mono_assembly_load_references () to
11510         work for netmodules.
11511
11512 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11513
11514         * image.c, metadata-internals.h, object.c: execute module
11515         cctors when running on the 2 runtime if present (bug #80487).
11516
11517 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11518
11519         * icall.c: optimized InitializeArray() on bigendian.
11520
11521 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11522
11523         * icall.c: fix for the broken ARM FPA double format.
11524
11525 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11526
11527         * icall.c: handle endian issues for r4 and r8 types, too, in
11528         the InitializeArray() icall.
11529
11530 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11531
11532         * loader.c (mono_loader_error_prepare_exception): Clear the error
11533         once we have extracted the information from it, do this before we
11534         call into the JIT's class loading mechanisms.
11535
11536         * object.c (mono_class_create_runtime_vtable): Do not clear the
11537         loader error before calling mono_class_get_exception_for_failure
11538         as the loader error is needed inside
11539         mono_class_get_exception_for_failure to throw the error (thinko).
11540
11541         Fixes #80521
11542         
11543 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11544
11545         * reflection.c: align fields rva data so it's faster to load at
11546         runtime.
11547
11548 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11549
11550         Prepare to simplify GenericMethod handling.
11551         * class-internals.h (mono_method_get_context): New accessor function.
11552         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11553         rather than directly accessing '->context' field.
11554
11555         * class-internals.h (_MonoGenericParam.method): Move ...
11556         (_MonoGenericContainer): ... here.  Add into union with klass field.
11557         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11558         Update to changes.
11559
11560 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11561
11562         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11563         the wrapper type enum and reduce relocations.
11564
11565 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11566
11567         * reflection.c (inflate_mono_method): Reuse method instantiation
11568         from the generic method, if available.
11569
11570 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11571
11572         * marshal.c (emit_marshal_variant): Fix conv_arg
11573         type in last commit, based on whether parameter is byref.
11574         
11575 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11576
11577         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11578         marshalling.
11579         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11580         MONO_TYPE_OBJECT back for VARIANT support.
11581
11582 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11583
11584         * marshal.c, marshal.h, icall-def.h: Implement 
11585         Marshal.ReAllocCoTaskMem.
11586
11587 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11588
11589         * marshal.c: memory retention fixes: use the proper
11590         image cache for runtime_invoke method lookups.
11591
11592 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11593
11594         * mempool.c: added code to help debug mempool allocations.
11595
11596 2007-01-11  Dick Porter  <dick@ximian.com>
11597
11598         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11599         support (experimenting with faking it with IP_MTU_DISCOVER for
11600         systems that don't have IP_DONTFRAGMENT.)
11601         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11602         icall.
11603
11604         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11605
11606         * socket-io.h: Add new fields to MonoSocketAsyncResult
11607         corresponding to the new ones in Socket.cs.
11608
11609 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11610
11611         Fix IronPython regression mentioned in #80249
11612         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11613         'cached_context' field, since it may have been initialized as a
11614         side-effect of metadata parsing.
11615
11616         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11617         (_MonoGenericClass.cached_class): Move here and rename from lone
11618         remaining field of ...
11619         (_MonoInflatedGenericClass): ... this.  Remove.
11620         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11621         to changes.
11622
11623         Fix mcs/tests/test-128.cs regression.
11624         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11625         2007-01-10 change below.
11626         [MONO_TYPE_OBJECT]: Recurse into array case.
11627
11628 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11629
11630         * class-internals.h (mono_get_inflated_generic_class): Remove.
11631         * class.c (mono_get_inflated_generic_class): Remove.
11632         (mono_generic_class_get_class): Rename from
11633         mono_class_create_generic.
11634         (mono_class_from_mono_type) [GENERICINST]: Use it.
11635         * reflection.c, metadata.c: Update to changes.  Use
11636         'mono_class_from_mono_type'.
11637
11638 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11639
11640         * reflection.c: use passed type when encoding an array element
11641         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11642
11643 2007-01-09  Robert Jordan  <robertj@gmx.net>
11644
11645         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11646         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11647         Fixes bug #80392.
11648
11649 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11650
11651         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11652
11653         * object.c (set_value): Avoid aliasing between type->data.klass
11654         and type->data.generic_class.
11655
11656         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11657
11658 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11659
11660         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11661         between type->data.klass and type->data.generic_class.
11662
11663 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11664
11665         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11666         value in out parameters.
11667
11668 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11669
11670         Simplify invariant for MonoGenericClass::klass field.
11671         * class.c (mono_class_create_generic): Verify 'klass' is null.
11672         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11673         initialize 'klass' field.
11674
11675 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11676
11677         Ongoing work to avoid redundant data and simplify invariants.
11678         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11679         'generic_class', and change type to a GenericInst.
11680         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11681         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11682
11683 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11684
11685         * class.c : skip io-layer under PLATFORM_WIN32.
11686
11687 2007-01-03  Tor Lillqvist  <tml@novell.com>
11688
11689         Fix #80305: In a bundled executable, look in the bundled exe
11690         assembly to determine the runtime version. Add the possibility to
11691         bundle also the machine.config file.
11692         
11693         * assembly.c (mono_assembly_open_from_bundle): Make
11694         non-static. Allow being called even if we have no bundled
11695         assemblies, and return NULL right away in that case.
11696
11697         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11698         here.
11699
11700         * domain.c (app_config_parse): Take an assembly exe file name as
11701         parameter instead of a config file name. Check for a bundled
11702         config file for that assembly by calling
11703         mono_config_string_for_assembly_file() (see below) before looking
11704         for one in the file system.
11705         (get_runtimes_from_exe): Corrsponding change to call of
11706         app_config_parse().
11707         (get_runtimes_from_exe): Check for bundled assembly exe file first
11708         by calling mono_assembly_open_from_bundle(). If no bundled
11709         assembly exe file is found, call mono_image_open() as before to
11710         look it up in the file system.
11711
11712         * mono-config.c: Add variable bundled_machinec_onfig.
11713         (mono_config_string_for_assembly_file): New function.
11714         (mono_config_for_assembly): Move code snippet that looks for a
11715         bundled assembly .config file into the above new function. Call
11716         it.
11717         (mono_register_machine_config, mono_get_machine_config): New
11718         functions to set and retrieve
11719
11720         * assembly.h: Declare mono_register_machine_config().
11721
11722         * mono-config.h: Declare mono_get_machine_config() and
11723         mono_config_string_for_assembly_file().
11724
11725         * icall.c: No declaration of environ necessary on Win32. It is
11726         declared (as a macro expanding to a function call) in stdlib.h.
11727         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11728         New internal mono function. Returns the value of
11729         mono_get_machine_config() as a Mono string.
11730
11731         * icall-def.h: Add get_bundled_machine_config().
11732
11733 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11734
11735         Remove redundant field
11736         * class-internals.h (_MonoGenericContext.container): Remove field.
11737         * loader.c (mono_method_get_signature_full): Don't parse a
11738         "container" for a signature parse when the signature is inflated
11739         immediately.
11740         (method_from_methodspec): Likewise, for a generic_inst.
11741         * class.c, metadata.c, reflection.c: Update to changes.
11742
11743 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11744
11745         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11746         'cached_context', and change semantics -- it starts off NULL, and
11747         is initialized on demand.
11748         * class.c (mono_generic_class_get_context): New accessor to
11749         replace 'context' field accesses.
11750         (mono_class_get_context): New helper.
11751         (*): Update to changes.
11752         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11753
11754 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11755
11756         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11757         before the memcpy.   Fixes Marshal2 regression.
11758
11759 2007-01-02  Jb Evain  <jbevain@gmail.com>
11760
11761         * blob.h: add a MONO_TYPE_ENUM definition
11762         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11763         fix the encoding of arrays of enums in custom attributes.
11764
11765         Fixes #79666.
11766
11767 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11768
11769         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11770         string is null terminated, but only cut the string short if it
11771         overflows the buffer.   
11772         
11773         (mono_string_to_byvalstr): Also fix this routine.   The code here
11774         was not properly terminating a string (it was only terminated
11775         because of the previous catch-all memset). 
11776
11777         I left the memset, because I do not know if applications expect
11778         the runtime to clear this region. 
11779
11780         Fixes #79944.
11781
11782         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11783         Clear the error before returning to unmanaged code to prevent the
11784         runtime from being confused later on (fixes  80420).
11785         (ves_icall_type_from_name): Always call mono_loader_clear_error
11786         after parsing a type that could have failed.
11787         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11788
11789         * loader.c (mono_loader_clear_error): Fix indentation.
11790
11791 2006-12-28  Martin Baulig  <martin@ximian.com>
11792
11793         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11794
11795 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11796
11797         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11798         getting a token for an EnumBuilder.
11799
11800 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11801
11802         * reflection.c: be more careful in case resource generation
11803         fails to create the data array.
11804
11805 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11806
11807         * sgen-gc.c: write barrier for clone and fix unregister handles.
11808
11809 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11810
11811         * reflection.c: some fixes needed in the generics code for the moving GC.
11812
11813 2006-12-22  Robert Jordan  <robertj@gmx.net>
11814
11815         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11816         account. Fixes bug #80299.
11817
11818 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11819
11820         Fix WaitHandle usage in delegates.
11821         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11822         * object.c (mono_wait_handle_new): Use the property set method to
11823         initialize the handle.
11824         (mono_wait_handle_get_handle): New.
11825         * threadpool.c (mono_async_invoke): Use it.
11826         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11827         Likewise.
11828         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11829
11830 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11831
11832         * marshal.c (emit_marshal): Call emit_marshal_variant and
11833         emit_marshal_com_interface when applicable.
11834         (emit_marshal_variant, emit_marshal_com_interface): Add
11835         methods for this case and remove if's from emit_marshal_object.
11836         
11837 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11838
11839         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11840
11841 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11842
11843         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11844         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11845         and GlobalFree on Windows. Remove FIXME.
11846
11847 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11848
11849         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11850         implementation for managed objects.
11851
11852 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11853
11854         * object.c: implemented code to be used for checking
11855         that no reference field overlaps with non-references.
11856
11857 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11858
11859         * threadpool.c: fix queue code to be compatible with the
11860         moving GC.
11861
11862 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11863
11864         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11865         in structures by throwing ArgumentNullException.
11866
11867         (emit_marshal_safehandle): Also when they are null parameters.
11868
11869         (emit_marshal_safehandle): Add support for ref
11870         SafeHandles parameters
11871
11872 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11873
11874         * profiler.c: updated to use the mono-dl API instead of
11875         gmodule.
11876
11877 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11878
11879         * profiler.c: updated to use the mono-dl dynamic loading
11880         API instead of gmodule.
11881
11882 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11883
11884         * profiler.c: use readlink, older versions of glib don't have
11885         g_file_read_link ().
11886
11887 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11888
11889         * profiler.c: try to detect the path to mono if libc fails to provide
11890         a useful name (bug #80286).
11891
11892 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11893
11894         Fix #80242
11895         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11896         instance, use the generic type definition instead.
11897         (ves_icall_Type_GetNestedTypes): Likewise.
11898         * class.c (mono_class_create_generic): Always set the
11899         nested_classes of a generic instance to NULL, even if the generic
11900         type definition has nested types.
11901
11902 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11903
11904         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11905         and fix on Linux.
11906         
11907 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11908
11909         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11910         my arguments were in the wrong order.   I also fixed the Windows
11911         version which seems to have had the same issue.
11912
11913         (mono_free_bstr): On Unix, this is g_free.
11914         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11915         conversions (for the tests in corlib to pass).
11916
11917 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11918
11919         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11920         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11921         exception if a ref SafeHandle in a struct has changed).
11922         
11923         (emit_struct_conv): Do not perform layout checks for classes
11924         derived from SafeHandle, as those are specially handled. 
11925
11926         (emit_object_to_ptr_conv): Add support for
11927         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11928
11929         (emit_marshal_safehandle): Implement conversion of return values
11930         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11931         
11932         * threads.c: WaitHandle now is compiled with two different handles
11933         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11934         for 2.0.
11935         
11936         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11937         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11938         these routines to cope with both kinds of fields.
11939
11940 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11941
11942         * metadata.c (mono_type_to_unmanaged): Handle the case where
11943         type->data.klass is a SafeHandle, and in that case, return the
11944         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11945         MONO_MARSHAL_CONV_SAFEHANDLE. 
11946
11947 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11948
11949         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11950         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11951         calling emit_marshal_object.
11952
11953         (emit_marshal_safehandle): Implement marshalling of
11954         SafeHandle parameters (no ref support yet).
11955
11956         (MarshalAction): Document the defines as I implement
11957         them for SafeHandle.
11958
11959         (emit_marshal_object): indentation police.
11960
11961         * class-internals.h: Define MonoSafeHandle.
11962         Add safehandle_class to MonoDefaults type.
11963
11964         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11965         list of classes to check for fields. 
11966
11967         * domain.c (mono_init_internal): Add SafeHandle to the list of
11968         mono_defaults loaded.
11969
11970 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11971
11972         Fix #80253
11973         * reflection.c (mono_reflection_bind_generic_parameters): If the
11974         generic type definition is a type builder, ensure that it is fully
11975         initialized before instantiating it.  Kill some dead code.
11976
11977 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11978
11979         * object.c: clear the loader_error () before loading
11980         more metadata stuff (bug #80258).
11981
11982 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11983
11984         * icall.c, icall-defs.h: type modifiers icalls for
11985         parameters and properties.
11986
11987 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11988
11989         * object.c, icall.c: fixed warnings.
11990
11991 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11992
11993         * marshal.c: fixed a couple of leaks and coding style in a few places.
11994
11995 2006-12-08  Dick Porter  <dick@ximian.com>
11996
11997         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11998         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11999         80173.
12000
12001 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
12002
12003         * process.c: ProcessStartInfo may have only filename set and
12004         arguments can be NULL.
12005
12006 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
12007
12008         * icall.c: fix leak found by Robert Jordan.
12009
12010 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
12011
12012         * marshal.c, marshal.h: generate managed method to access an element
12013         of a multi-dimensional array.
12014
12015 2006-11-30  Paolo Molaro (lupus@ximian.com)
12016
12017         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
12018
12019 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12020
12021         * icall.c: back out GetFields () fix until the serialization code is
12022         fixed to not depend on the incorrect behaviour.
12023
12024 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
12025
12026         * profiler.c: provide defaults if none are set.
12027
12028 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12029
12030         * Makefile.am, attrdefs.h: new public header file with
12031         constants for attributes for use by embedders.
12032
12033 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
12034
12035         * icall.c: GetFields () fix for bug #80064.
12036
12037 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
12038
12039         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
12040         removed long unused icalls.
12041
12042 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
12043   
12044         * marshal.c: 
12045                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
12046                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
12047                 can be generated without a delegate class.
12048                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
12049         
12050         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12051
12052 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12053
12054         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
12055         #80069.
12056
12057 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12058
12059         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
12060         icall-def.h: added icalls needed by System.GC.
12061
12062 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
12063
12064         * loader.c: ensure the class in catch clauses is handled
12065         correctly for generics methods (fixes bug#79980).
12066
12067 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12068
12069         * monitor.h, monitor.c: added mono_locks_dump () function
12070         to help debug deadlocks involving managed locks.
12071
12072 2006-11-13  Dick Porter  <dick@ximian.com>
12073
12074         * file-io.c (get_file_attributes): If the file is a symlink try
12075         and get the stat data for the target, but also add the
12076         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
12077         the specs for the windows symlink support, but will probably have
12078         to be reworked when I have test data from a vista machine.  Fixes
12079         bug 79887.
12080
12081 2006-11-13  Dick Porter  <dick@ximian.com>
12082
12083         * gc.c (mono_domain_finalize): 
12084         * marshal.c (mono_delegate_begin_invoke): 
12085         * threadpool.c (socket_io_init, mono_thread_pool_init)
12086         (mono_thread_pool_finish): 
12087         * monitor.c (mono_monitor_try_enter_internal): 
12088         * threads.c (mono_thread_resume, mono_thread_init)
12089         (mono_thread_suspend_all_other_threads)
12090         (mono_thread_execute_interruption): 
12091         * appdomain.c (mono_domain_unload): Check for NULL error returns
12092         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
12093         75733.
12094
12095 2006-11-11  Miguel de Icaza  <miguel@novell.com>
12096
12097         * process.c
12098         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
12099         Only close the handle if the value of the handle is not
12100         INVALID_HANDLE_VALUE.  This just makes the process a bit more
12101         robust.
12102
12103         Improvement for #75733, so that we do not run into this problem. 
12104
12105         
12106         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
12107         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
12108         internal variables.  Fixes #79462 
12109         
12110
12111 2006-11-09  Dick Porter  <dick@ximian.com>
12112
12113         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12114         Use poll() not select().  Fixes bug 79397.
12115
12116 2006-11-09  Raja R Harinath  <rharinath@novell.com>
12117
12118         Fix #79872
12119         * assembly.c (mono_assembly_load_from_full): Check that the given
12120         image has an assembly manifest.
12121
12122 2006-11-09  Ankit Jain  <jankit@novell.com>
12123
12124         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
12125         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
12126         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
12127
12128 2006-11-07  Dick Porter  <dick@ximian.com>
12129
12130         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12131         Put the old resolver behaviour back for pre-2.0 profiles.
12132
12133 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12134
12135         * threadpool.c: precise GC and locking fixes.
12136
12137 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12138
12139         * class.c: don't load types that have an explicit unaligned
12140         managed reference. Provide better info in the TypeLoad exception.
12141         Part of the fix for bug #79744.
12142         * object.c: use the correct check for class type load issues.
12143
12144 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12145
12146         * class.c: enforce alignment of fields with managed references
12147         even when Pack=1 is forced by the user (bug #77788).
12148
12149 2006-11-03  Dick Porter  <dick@ximian.com>
12150
12151         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12152         If the address reverse lookup fails, return it as the hostname
12153         anyway.  Fixes bug 79721.
12154
12155 2006-11-03  Dick Porter  <dick@ximian.com>
12156
12157         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
12158         Fix build on Windows.
12159
12160 2006-11-02  Dick Porter  <dick@ximian.com>
12161
12162         * icall-def.h: 
12163         * object-internals.h: 
12164         * exception.c (mono_get_exception_thread_interrupted): 
12165         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
12166         Fixes bug 74525.
12167
12168         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
12169         Check for pending Thread.Interrupt.
12170
12171 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
12172         * loader.c: Fixed bug 79684.
12173
12174 2006-10-27  Dick Porter  <dick@ximian.com>
12175
12176         * file-io.c (get_file_attributes): Force symlinks to directories
12177         to be returned as a regular file.  Fixes bug 79733.
12178 2006-10-26  Dick Porter  <dick@ximian.com>
12179
12180         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
12181         CreateFile to open a directory then we need to set the
12182         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
12183
12184 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12185
12186         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
12187         friends.
12188
12189 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12190
12191         * sgengc.c: small cleanup of timer code.
12192
12193 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12194
12195         * sgen-gc.c: fix some warnings and start adding support for
12196         complete object removal on domain unload.
12197
12198 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
12199
12200         * assembly.c: build_assembly_name should not consider a version
12201         number without build or revision number invalid. Fixes bug #79715.
12202
12203 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
12204
12205         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
12206         call kernel32 function OutputDebugString directly.
12207         
12208         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12209         
12210 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
12211
12212         * reflection.c: small cleanup, using a function to insert a MonoString
12213         in the string heap.
12214
12215 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
12216
12217         * reflection.c: moving GC fixes.
12218
12219 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12220
12221         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
12222         all the objects with finalizers belonging to an unloading appdomain.
12223
12224 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12225
12226         * sgen-gc.c: added ability to allocate even when the nursery is fully
12227         pinned and fixed a couple of bugs.
12228
12229 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12230
12231         * threads.h: Revert the last change for now.
12232
12233         * threads.h (mono_thread_get_pending_exception): Rename this to
12234         mono_thread_get_undeniable_exception ().
12235
12236 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
12237
12238         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
12239         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
12240         when fname does not refer to valid assembly. This result in a more
12241         meaningful error message.
12242         * exception.c: added mono_get_exception_bad_image_format2 which 
12243         constructs a BadImageFormatException using the ctor taking a custom
12244         message and the file name. Passing in a NULL msg results in a default
12245         message.
12246         * exception.h: define mono_get_exception_bad_image_format2 function.
12247         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12248         when file name pointed to an invalid IL image. Use 
12249         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12250         as this results in a more meaningful error message.
12251
12252 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12253
12254         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12255         #79465.
12256
12257 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12258
12259         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12260         consistency with the other _size functions.
12261         (mono_type_stack_size): Ditto.
12262
12263         * class.c object.c icall.c: Fix warnings caused by the above change.
12264
12265         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12266
12267         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12268
12269         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12270
12271 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12272
12273         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12274         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12275         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12276         threadpool.h, threads-types.h: mark more internal functions.
12277
12278 2006-10-11  Dick Porter  <dick@ximian.com>
12279
12280         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12281         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12282         reproduce the bug even before applying the fix.)
12283
12284 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12285
12286         * reflection.c: allow retrieving attributes for arguments in generic
12287         methods (bug #79241).
12288
12289 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12290
12291         * debug-mono-symfile.c: properly check fopen () result (found by
12292         coverity).
12293
12294 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12295
12296         * reflection.c: make error message clearer and fixed two
12297         issuelets found by Coverity.
12298
12299 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12302
12303 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12304
12305         * object-internals.h, gc-internal.h, profiler-private.h:
12306         mark internal functions.
12307
12308 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12309
12310         * reflection.c: put data in the text section.
12311         * icall.c: recognize more types in type_from_typename ().
12312         * process.c, marshal.c: added some GC FIXMEs.
12313
12314 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12315
12316         * loader.c: check for NULL before initializing.
12317
12318 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12319
12320         * gc.c (finalizer_thread): Use a non-alertable wait here.
12321
12322         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12323         until the correct solution is found.
12324
12325 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12328         modules with no metadata. Fixes #79596.
12329
12330         * image.c (load_metadata_ptrs): Put back the error message when
12331         the #- heap is encountered since the support is not complete yet.
12332
12333 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12334
12335         * gc.c: do not allow the user to SuppressFinalize () a
12336         delegate because it would leak the trampoline if present.
12337
12338 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12341         PropertyPtr table.
12342
12343 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12344
12345         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12346
12347         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12348
12349         * row-indexes.h: Add definitions for *Ptr tables.
12350
12351         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12352
12353         * metadata.c (mono_metadata_translate_token_index): New helper function to
12354         translate table indexes used in uncompressed metadata.
12355         (mono_metadata_decode_table_row): Ditto.
12356         (mono_metadata_decode_table_row_col): Ditto.
12357
12358         * metadata.c: Add table schema for *Ptr tables.
12359
12360         * class.c loader.c: Use the new helper function to access the affected metadata
12361         tables.
12362         
12363         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12364         #38532.
12365         
12366 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12369         sequences which can be unbounded in size. Fixes #79583.
12370
12371 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12374         static initialization.
12375
12376         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12377
12378         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12379
12380         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12381
12382         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12383         ctor fails, i.e. throw the same exception on subsequent accesses.
12384         
12385 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12386
12387         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12388         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12389         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12390         Handle marshalling of interfaces and VARIANTs contained in structs.
12391         
12392         Code is contributed under MIT/X11 license.
12393         
12394 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12397         
12398         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12399         mempool.
12400
12401 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12402
12403         * console-io.c: ignore previous SIGINT handler.
12404
12405 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12406
12407         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12408         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12409         #79460, #79461, #79485.
12410
12411         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12412
12413         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12414         #79217.
12415
12416 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12419         could be generated from it.
12420
12421 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12422
12423         * rand.c: fix read loop to correctly handle EINTR.
12424
12425 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12426
12427         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12428         internal calls are defined to keep methods closer to the declaring
12429         type and allow a significant reduction in runtime relocations and
12430         memory usage.
12431
12432 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12433
12434         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12435         exception message to have FileNotFoundException use the default
12436         assembly load error message. Fixes bug #79426.
12437         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12438
12439 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12440
12441         * threadpool.c: (start_thread_or_queue) use the root domain when
12442         creating the thread instead of the async object one.
12443
12444 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12445
12446         * class.c, object.c, class-internals.h, reflection.c:
12447         for arrays, store element_size inside MonoClass (speedup
12448         for array object creation).
12449
12450 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12451
12452         * icall.c: fixed CodeBase to use the file name and not the module
12453         name (bug #79365).
12454
12455 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12456
12457         * mono-debug.c, mono-debug.h: export find_method as
12458         mono_debug_find_method ().
12459
12460 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12461
12462         * debug-helpers.c, class-internals.h: added a few functions useful
12463         when debugging under gdb.
12464
12465 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12466
12467         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12468         characters that need special handling.
12469
12470 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12471
12472         * mono-config.c: make the os/cpu specification more flexible,
12473         allowing lists and negation.
12474
12475 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12476
12477         * marshal.c: COM Interop fixes. Handle case where method->klass.
12478         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12479         calling convention on non-windows platforms. This is for
12480         compatibility with XPCOM and MainWin COM.
12481         
12482         Code is contributed under MIT/X11 license.
12483         
12484
12485 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12486
12487         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12488         correctly. Fixes #79217.
12489
12490         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12491
12492 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12493
12494         * mono-config.c: allow both an os and cpu attribute for dllmap
12495         and dllentry elemnets to enable a single config file to be used
12496         for multiple architectures.
12497
12498 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12499
12500         * loader.c: MonoLoaderError was cleared too soon on load failure.
12501         Fixes bug #79424.
12502
12503 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12504
12505         * icall.c: use the defining class vtable when accessing a
12506         static field, not a pobblibly derived class.
12507
12508 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12509
12510         * icall.c string-icalls.c: Remove references to unicode.h.
12511
12512         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12513
12514         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12515
12516         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12517         indicating the image where custom marshaller types should be looked up.
12518         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12519         custom marshallers, instead of corlib. Fixes #79425.
12520
12521 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12522
12523         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12524
12525 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12526
12527         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12528         Implement Environment.ProcessorCount.
12529         
12530         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12531         Implement Environment.ProcessorCount.
12532         
12533         * icall.c: 
12534         Add Environment.ProcessorCount icall.
12535         
12536         Patch by Jason McFall.
12537
12538 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12539
12540         * assembly.c: don't append .exe/.dll when the filename already contains
12541         one of those extensions.
12542
12543 2006-09-12  Martin Baulig  <martin@ximian.com>
12544
12545         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12546         to array interfaces.
12547
12548 2006-09-11  Martin Baulig  <martin@ximian.com>
12549
12550         * reflection.c (mono_image_build_metadata): Create the
12551         MethodImpl's after emitting all types and methods, so we don't
12552         need another fixup pass for them.
12553
12554 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12557         change.
12558
12559 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12560
12561         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12562         unload.
12563
12564 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12567         args is not set. Fixes #78926.
12568
12569 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12572
12573         * image.c (load_class_names): Move this to class.c, and rename it to 
12574         'mono_image_init_name_cache'.
12575         (load_modules): Fix a warning.
12576
12577         * class.c icall.c image.c: Initialize image->name_cache lazily.
12578
12579         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12580         on its name using information in the AOT file.
12581
12582         * class.c (mono_class_from_name): Use the new hook function.
12583
12584 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12587         correctly.
12588
12589         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12590         Fixes #79289.
12591         
12592 2006-09-06  Martin Baulig  <martin@ximian.com>
12593
12594         * icall.c (mono_lookup_internal_call): Small fix.
12595
12596 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12597
12598         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12599         double g_free.
12600
12601 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12602
12603         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12604         when --debug is specified.
12605
12606 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * class.c (setup_generic_array_ifaces): Fix a warning.
12609
12610 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12611
12612         * Temporarily remove the patch to assemly.c that checks the
12613         assembly versions as it breaks our gacutil.
12614
12615 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12616
12617         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12618
12619         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12620         a net 1.0 runtime.
12621
12622         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12623         created using the default ctor. Fixes #79152.
12624         (mono_string_builder_to_utf16): Ditto.
12625
12626 2006-09-01  Martin Baulig  <martin@ximian.com>
12627
12628         Fix handling of the generic array interfaces.
12629
12630         * class-internals.h
12631         (MonoDefaults): Removed `generic_array_class' and added
12632         `generic_ilist' class.
12633
12634         * class.c
12635         (mono_bounded_array_class_get): Add the new generic array interfaces.
12636         (setup_generic_array_ifaces): New static method; create vtable
12637         entries for each method in the generic array interfaces.
12638
12639         * metadata.c
12640         (select_container): Allow "parent-less" generic methods.
12641
12642         * marshal.c
12643         (mono_marshal_get_generic_array_helper): New public method.
12644
12645         * icall.c
12646         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12647         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12648         moved the interncall into System.Array.
12649
12650 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12651
12652         A few more cases of avoiding work on types with ->byref set.
12653         Has the real fix for #79238
12654         * icall.c (is_generic_parameter): New helper.
12655         (ves_icall_Type_GetGenericParameterPosition): Use it.
12656         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12657         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12658         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12659         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12660         reference types.
12661         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12662         reference types.
12663         (ves_icall_Type_get_IsGenericInstance): Likewise.
12664         (ves_icall_Type_get_IsGenericType): Likewise.
12665
12666 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12669         class if possible.
12670
12671         * mempool.h (mono_mempool_get_allocated): New helper function.
12672
12673         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12674         change.
12675
12676         * mempool.c: Fix warnings and the calculation of stats.
12677
12678         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12679
12680         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12681
12682         * loader.c (mono_get_method_from_token): Update method_count stat.
12683
12684         * class-internals.h (MonoStats): Add some stats.
12685
12686 2006-08-31 Robert Jordan  <robertj@gmx.net>
12687
12688         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12689         with managed variants.
12690         All code is contributed under the MIT/X11 license.
12691         
12692 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12695         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12696
12697         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12698
12699         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12700         with cycles in classes.
12701
12702         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12703
12704         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12705         missing a [MarshalAs] directive. Fixes #79203.
12706
12707         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12708         klass->marshal_info. Fixes #79217.
12709
12710 2006-08-30  Martin Baulig  <martin@ximian.com>
12711
12712         Committing a patch from Joachim Ante <joe@otee.dk>:
12713         Add support for binary data symbol stores.
12714
12715         * debug-mono-symfile.c
12716         (mono_debug_open_mono_symbol_file): Renamed into
12717         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12718         arguments.
12719
12720         * mono-debug.c
12721         (mono_debug_open_image): Added `raw_contents' and `size' args.
12722         (mono_debug_init_2_memory): New public function.
12723
12724 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12725
12726         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12727
12728 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12729
12730         * appdomain.c: implement support for ShadowCopyFiles.
12731
12732 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12733
12734         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12735         when value is NULL (and should remove CID #51).
12736
12737 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12738
12739         * image.c: moved 2 functions to ../utils.
12740
12741 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12742
12743         * gc.c: cope with the target object of a GC handle being NULL
12744         (bug #78877).
12745
12746 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12747
12748         * class.c: recursively check parent's explicit implementations
12749         of interface methods (fixes bug #79125).
12750
12751 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12752
12753         * filewatcher.c: Avoid warnings when building, do not redefine
12754         constants that are defined.
12755
12756         Remove warnings.
12757
12758 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12759
12760         * image.c: don't fail when the link points to an absolute path.
12761
12762 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12763
12764         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12765         Fix CID #3.
12766
12767 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12768
12769         * image.c (full_path): A new method used to obtain the actual path
12770         of an assembly even in the presence of symbolic links.  
12771
12772         This is necessary for the case where we are running a binary that
12773         has been GACed, but we are using the "published" path name
12774         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12775         file in the GAC.
12776
12777         This was the source of the failure for the `xsp' command with the
12778         recent AppDomain changes, as far as the runtime was concerned,
12779         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12780         $prefix/mono/gac/blah/version/blah.exe.
12781
12782         (do_mono_image_open): use full path
12783
12784 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12787
12788 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12789
12790         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12791         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12792
12793 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12794
12795         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12796         small structures. Fixes #78990.
12797
12798 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12801
12802         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12803
12804 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12805
12806         * appdomain.c:
12807         * marshal.c: don't load all the assemblies from a domain into newly
12808         created ones. The new domains might have different rules and load
12809         assemblies from different locations. Fixes bug #76757.
12810
12811         Patch by Lluis. Conflicts resolved by Brian Crowell.
12812
12813 2006-08-16  Alp Toker  <alp@atoker.com>
12814
12815         * socket-io.c: First half of the fix for #79084.
12816         Set sa_size to the length of the content, not that of the struct.
12817         Don't add NULL suffix to the content, this should be done in
12818         managed code if needed.
12819
12820 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12821
12822         Fix part of #79012
12823         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12824         mono_metadata_parse_type returns NULL.
12825
12826 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12827
12828         * normalization-tables.h : new file for string normalization data.
12829         * locales.c, locales.h, icall.c :
12830           added load_normalization_resource() for string normalization,
12831           and icall as well.
12832         * Makefile.am : added normalization-tables.h to the sources.
12833
12834 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * marshal.c: Add more helper functions to reduce code duplication and use them
12837         everywhere.
12838
12839 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12840
12841         * marshal.c: Fix non-x86 stdcall warnings.
12842         
12843         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12844         them everywhere.
12845
12846 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12847
12848         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12849         type check on multi-dimensional arrays. Fixes #79000.
12850
12851 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12852
12853         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12854         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12855         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12856         * class-internals.h: add is_com_object to class structure.
12857         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12858         null checks to COM object marshalling. Fix .ctor call on RCW.
12859         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12860         
12861         All code is contributed under the MIT/X11 license.
12862
12863 2006-08-09  Dick Porter  <dick@ximian.com>
12864
12865         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12866         racing mono_monitor_allocator_lock() somewhere, so don't delete
12867         the critical section for now.  Found by running and exiting
12868         monodevelop.
12869
12870 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12871
12872         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12873         (ves_icall_System_ComObject_FindInterface): Ditto.
12874         (ves_icall_System_ComObject_CacheInterface): Ditto.
12875
12876         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12877         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12878
12879 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12880
12881         * threadpool.c: treat pipes from process asynchronous reads as sockets
12882         when reading from them, so we get select/poll or epoll to wait for
12883         data.
12884
12885 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12886
12887         * loader.c: Fix a typo (CID #233) in the null check.
12888
12889 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12892         Hopefully fixes #78949.
12893         
12894         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12895         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12896         bytes. Fixes #78972.
12897
12898 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12899
12900         * filewatcher.c: we need to set errno here.
12901
12902 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12903
12904         * filewatcher.c: let Win32Exception get the error value.
12905
12906 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12907
12908         * filewatcher.c: translate errno into win32 errors for Win32Exception
12909         to know what happened.
12910
12911 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * threadpool.c: Fix more warnings.
12914
12915         * assembly.c (search_loaded): Fix warnings.
12916
12917         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12918         (mono_async_invoke): Ditto.
12919
12920 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12921
12922         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12923         entries for __ComObject type in addition to ComImport types.
12924         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12925         about hash table.
12926         
12927         All code is contributed under the MIT/X11 license.
12928
12929 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12930
12931         * image.c: avoid tentative loading of modulerefs that contain
12932         no metadata (P/Invoke library names).
12933
12934 2006-07-28  Dick Porter  <dick@ximian.com>
12935
12936         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12937         mono_loader_lock() somewhere, so don't delete the critical section
12938         for now.  Found by running and exiting monodevelop.
12939
12940 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12941
12942         * filewatcher.c: define the inotify syscalls when we're building on
12943         linux and have sys/syscall.h. The build system might not have support
12944         for inotify but the target system might have it.
12945
12946 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12947
12948         * domain.c: Documentation updates.
12949
12950         * loader.c (mono_free_method): Do not release the method
12951         information if we are being profiled, as profilers will use this
12952         information at shut down to present some data to the user.
12953
12954         This is needed so that the profiler does not crash, as the
12955         profiler tends to keep MonoMethods around, and they might become
12956         invalid if we free these.
12957
12958         (mono_get_method_constrained): Return the original CIL stream
12959         method as well, so verification can be performed against it.
12960
12961 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12962
12963         * filewatcher.[ch]: support for inotify file system watcher.
12964         * icall.c: add new internal calls for the inotify file system watcher.
12965
12966 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12967
12968         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12969         #78888.
12970
12971 2006-07-20  Dick Porter  <dick@ximian.com>
12972
12973         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12974         warning.
12975
12976 2006-07-20  Dick Porter  <dick@ximian.com>
12977
12978         * threads.c (start_wrapper): Do the thread cleanup while we still
12979         hold a reference to its object.  Fixes bug 78123.
12980
12981 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12982
12983         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12984         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12985           "managed-to-managed".
12986         * icall.c: Redirect string constructors that take sbyte* to
12987           ves_icall_System_String_ctor_RedirectToCreateString.
12988         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12989           to CreateString () methods with matching signature.
12990         * reflection.c: Use original security informations for
12991           MONO_WRAPPER_MANAGED_TO_MANAGED.
12992         * security-manager.c: Use original security informations for
12993           MONO_WRAPPER_MANAGED_TO_MANAGED.
12994         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12995           that is a placeholder and only its address should be used.
12996         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12997           that is a placeholder and only its address should be used.
12998
12999 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13000
13001         Begin implementing COM Interop.
13002         * appdomain.c: Increment corlib version.
13003         * class.c: Set ComImport classes' parent to __ComObject.
13004         * loader.c: Mark cominterop methods as such.
13005         * domain.c: Add __ComObject class to MonoDefaults structure.
13006         * image.c: Add 2 hashtables to the image for COM Interop related methods
13007         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
13008         using the mempool allocator
13009         
13010         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
13011         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
13012         declaration for mono_metadata_type_dup_mp.
13013         
13014         * debug-helpers.c: Added strings for two additional wrapper types
13015         * object.c: Create proxy objects for ComImport classes
13016         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
13017         and added __ComObject class to MonoDefaults structure.
13018         
13019         * object-internals.h: Finish MonoRealProxy definition, and add definition of
13020         MonoComInteropProxy and MonoComObject.
13021         
13022         * marshal.c: Added support for COM Interop
13023         (signature_cominterop): Converts managed signature to corresponding
13024         unmanaged COM signature.
13025         (cominterop_get_function_pointer): gets unmanaged function pointer via
13026         COM object vtable
13027         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
13028         (cominterop_get_method_interface): returns interface type that method is defined on
13029         (mono_mb_emit_cominterop_call): emits native call to function pointer
13030         gotten from vtable
13031         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
13032         that matches signature of unmanaged function.
13033         (cominterop_get_native_wrapper): wrapper around adjusted method call.
13034         (cominterop_get_invoke): forwards call from proxy to __ComObject
13035         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
13036         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
13037         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
13038         
13039         * marshal.h: Added Marshal icall declarations.
13040         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
13041         so we can access them in finalizer
13042         
13043 2006-07-14  Dick Porter  <dick@ximian.com>
13044
13045         * object.c (mono_type_initialization_cleanup): Fix a race
13046         condition by temporarily commenting out the critical section
13047         deletion.
13048
13049 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
13050
13051         * reflection.c (create_custom_attr): Fix some warnings.
13052         (create_custom_attr_data): Ditto.
13053         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
13054         types. Fixes #78855.
13055
13056 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
13057
13058         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
13059
13060         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
13061
13062 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * reflection.c (resolve_object): Add support for DynamicMethod.
13065
13066         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
13067         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
13068
13069 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
13070
13071         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
13072         don't leak GPtrArray's pdata has we have no use (nor free) for it.
13073
13074 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
13075
13076         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
13077         Fixes #77888.
13078
13079 2006-06-30  Raja R Harinath  <rharinath@novell.com>
13080
13081         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
13082         slightly: remove a shadow local variable.
13083
13084 2006-06-29  Raja R Harinath  <rharinath@novell.com>
13085
13086         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
13087         definition that introduces the virtual function slot.
13088         Also fix Coverity #105.
13089
13090 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
13091
13092         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
13093         for dynamic assemblies. Fixes #78724.
13094
13095 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
13098         Fixes #78722.
13099
13100 2006-06-21  Martin Baulig  <martin@ximian.com>
13101
13102         * reflection.c
13103         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
13104         fixes #76484.
13105
13106 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13107
13108         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
13109
13110 2006-06-20  Raja R Harinath  <rharinath@novell.com>
13111
13112         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
13113         nor TYPEREFs.
13114         * class.c (mono_class_create_from_typespec): Add 'context' argument.
13115         Inflate result if necessary.
13116         (mono_class_get_full): Remove old version.  Rename from
13117         'mono_class_get' and add 'context' argument.  Pass it to
13118         ..._create_from_typespec.
13119         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
13120         (mono_ldtoken): Revert change below.
13121
13122 2006-06-20  Martin Baulig  <martin@ximian.com>
13123
13124         * class.c (mono_ldtoken): Don't pass the generic context to
13125         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
13126
13127 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
13128
13129         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
13130         and later freeing it. Fixes #78638.
13131
13132 2006-06-15  Miguel de Icaza  <miguel@novell.com>
13133
13134         * icall.c (mono_class_get_throw): Revert over-zealous error
13135         throwing, the caller for mono_class_get_throw will cope with
13136         errors when classes are not properly initialized already.
13137
13138         The code still copes with loader exceptions though.
13139
13140         Fixes the regression in reftype1 and reftype3 from the CAS tests.
13141         
13142 2006-06-14  Miguel de Icaza  <miguel@novell.com>
13143
13144         Fixes the `make run1' version of RuntimeAbort (to be commited,
13145         source is in Bugzilla).
13146         
13147         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
13148         FALSE on class loading failure instead of returning true.
13149
13150         * class.c (mono_class_create_from_typedef): It is possible for
13151         mono_metadata_interfaces_from_typedef_full to fail if a class is
13152         not found, cope with this.
13153         
13154
13155 2006-06-14  Dick Porter  <dick@ximian.com>
13156
13157         * socket-io.c: 
13158         * process.c: Fix a bunch of signed/unsigned warnings from gcc
13159         4.1.1
13160
13161 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
13162
13163         * culture-info-table.h : oops, forgot to make it nsync with r61548.
13164
13165 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13166
13167         * icall.c: Another fix for building mono in Visual Studio.
13168
13169 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13170
13171         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
13172         
13173 2006-06-09  Martin Baulig  <martin@ximian.com>
13174
13175         * debug-mono-symfile.c: Put this back and really fix it this
13176         time. Sorry for all the trouble.
13177
13178 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * icall.c (mono_class_get_throw): Fix a warning.
13181         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
13182         ReflectionTypeLoadException if needed. Fixes #78606.
13183
13184         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
13185         (mono_class_init): Ditto.
13186
13187         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
13188         ref_only exceptions.
13189         (mono_loader_clear_error): Make this work even if there is no error.
13190
13191 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
13192
13193         * object-internals.h marshal.c marshal.h icall.c: Implement method 
13194         Marshal.GetComSlotForMethodInfo using internal call.
13195
13196 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
13197
13198         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
13199         a function for signalling it.
13200
13201         * class.c (mono_class_from_typeref): Use the new kind of loader error when
13202         a referenced assembly is not found.
13203
13204         * loader.c (mono_loader_error_prepare_exception): Add support for 
13205         LOADER_ERROR_ASSEMBLY. Fix formatting.
13206
13207 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
13208
13209         * domain.c appdomain.c class-internals.h marshal.c: Add support 
13210         for VARIANT marshalling on windows and increment corlib version
13211         since Variant struct was added.
13212
13213 2006-06-03  Miguel de Icaza  <miguel@novell.com>
13214
13215         * debug-mono-symfile.c: Revert Martin's previous patch which broke
13216         stack trace line information:
13217
13218         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
13219         (Martin) when looking up B which is between A and C, return A not C.
13220
13221         Bug is #78573.
13222
13223         Thanks to Alexander Olk for tracking this down.
13224
13225 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
13228         
13229         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
13230         avoid clobbering its value.
13231         (mono_string_to_lpstr): Fix a warning on windows.
13232
13233 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13234
13235         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
13236
13237         * reflection.c loader.c: Removed references to 'dummy' flag.
13238
13239         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
13240
13241         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
13242         it gets GC tracking.
13243
13244         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
13245         GC tracking.
13246         
13247         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13248
13249         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13250
13251         * appdomain.c: Bump corlib version.
13252
13253 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13256         CEE_STIND_REF when working with object references.
13257
13258 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13259
13260         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13261         Fixes #78539.
13262
13263 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13264
13265         * loader.c (method_from_memberref): Fix argument value for
13266         mono_loader_set_error_method_load (I was passing the MonoClass
13267         instead of the class name char *).
13268
13269 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13270
13271         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13272         CEE_STIND_REF when working with object references.
13273
13274 2006-05-30  Martin Baulig  <martin@ximian.com>
13275
13276         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13277         mono_method_full_name() change and replace the ':' with a '.'
13278         here.
13279
13280 2006-05-30  Martin Baulig  <martin@ximian.com>
13281
13282         * debug-mono-symfile.c
13283         (mono_debug_symfile_lookup_location): Fix the algorithm:
13284         when looking up B which is between A and C, return A not C.
13285
13286 2006-05-29  Martin Baulig  <martin@ximian.com>
13287
13288         * mono-debug.h
13289         (MonoDebugMethodInfo): Make the typedef public.
13290         (MonoDebugSourceLocation): New public struct.
13291
13292         * mono-debug.c
13293         (mono_debug_source_location_from_address): Removed.
13294         (mono_debug_source_location_from_il_offset): Removed.
13295         (mono_debug_il_offset_from_address): Removed.
13296         (mono_debug_address_from_il_offset): Removed.
13297         (mono_debug_lookup_method): New public function.
13298         (mono_debug_lookup_source_location): New public function; replaces
13299         the old mono_debug_source_location_from_*() functions; see the
13300         inline documentation.
13301         (mono_debug_free_source_location): New public function.
13302         (mono_debug_print_stack_frame): New public function; see the
13303         inline documentation.
13304
13305         * debug-mono-symfile.c
13306         (mono_debug_find_source_location): Renamed into
13307         mono_debug_symfile_lookup_location(); only take a
13308         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13309         documentation.
13310         (mono_debug_find_method): Renamed into
13311         mono_debug_symfile_lookup_method().
13312
13313 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13314
13315         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13316         returned by mono_image_open_full ().
13317
13318         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13319         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13320         #78517.
13321
13322         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13323         #78518.
13324
13325 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13326
13327         * class.c (mono_class_from_typeref): handle missing images
13328         earlier, deals with bug #78418.   Refactor code; 
13329
13330         Fix a warning introduced in my previous commit (some stale code
13331         from before I revisited my patch).
13332
13333         * class.c (mono_class_create_from_typedef): On failure, remove the
13334         class from the MonoImage->class_cache as the class is not
13335         initialized;   Fixes the leak pointed out by Paolo.
13336
13337 2006-05-25  Dick Porter  <dick@ximian.com>
13338
13339         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13340         DeleteCriticalSections until I figure out which one may still be
13341         sometimes locked when mono_thread_cleanup is called.
13342
13343 2006-05-24  Dick Porter  <dick@ximian.com>
13344
13345         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13346         of mono_thread_manage and back into its own function, so it can be
13347         called after the finalizer thread has finished.
13348
13349         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13350
13351 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13354         Fixes #78495.
13355
13356         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13357         with non-blittable elements.
13358         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13359
13360 2006-05-24  Martin Baulig  <martin@ximian.com>
13361
13362         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13363         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13364
13365         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13366         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13367         `mono_debugger_event_handler' to NULL.
13368
13369 2006-05-24  Martin Baulig  <martin@ximian.com>
13370
13371         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13372
13373 2006-05-24  Martin Baulig  <martin@ximian.com>
13374
13375         * mono-debug-debugger.h
13376         (mono_debugger_create_notification_function): Added
13377         `MonoCodeManager *' argument.
13378
13379 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13380
13381         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13382
13383 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13384
13385         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13386         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13387         implementation.
13388
13389 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13390
13391         * icall.c: precise GC support: objects can't be stored in unmanaged
13392         memory anymore, even if they are kept alive by other references: since
13393         they can move the GC needs to be able to always find them.
13394
13395 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13396
13397         * object.c: precise GC support for static fields. Support
13398         for moving GCs: write barriers and pinned allocation for interned
13399         strings.
13400
13401 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13402
13403         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13404         structure.
13405
13406 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13407
13408         * class.c, gc.c: sgen and precise GC updates.
13409
13410 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13411
13412         * marshal.h, marshal.c: added write barrier wrapper and precise type
13413         fixes.
13414
13415 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13416
13417         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13418         support.
13419
13420 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13421
13422         * reflection.c: precise and sgen GC updates.
13423
13424 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13425
13426         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13427
13428 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13431
13432 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13435         MONO_TYPE_OBJECT. Fixes #78462.
13436
13437 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13440         and blittable types.
13441
13442 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13443
13444         * class.c (mono_class_get_exception_for_failure): Implement parts
13445         of a TODO: if the loader error is set (instead of the class
13446         error), we return a Loader exception that can be properly thrown
13447         elsewhere.
13448
13449         This was exposed by some Winforms 2.0 code that I tried to run
13450         (Atsushi pointed me to it).
13451
13452 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13453
13454         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13455         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13456         
13457         * marshal.c (emit_marshal_vtype): Add limited support for 
13458         UnmanagedType.LPStruct. Fixes #78427.
13459
13460         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13461         Applied a patch from kangaroo to fix #77523.
13462
13463 2006-05-17  Martin Baulig  <martin@ximian.com>
13464
13465         * threads.c
13466         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13467         (debugger_thread_created): Removed.
13468         (debugger_thread_exited): Removed.
13469
13470 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13473
13474         * object-internals.h (MonoReflectionResource): Sync with managed version.
13475
13476 2006-05-12  Wade Berrier <wberrier@novell.com>
13477
13478         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13479
13480 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13481
13482         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13483         functions try to allocate from the image mempool.
13484
13485 2006-05-12  Dick Porter  <dick@ximian.com>
13486
13487         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13488
13489 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13490
13491         * object.c: The FieldGetter and FieldSetter methods require the full
13492         name of the class, not only the name. Fixes bug #78277.
13493
13494 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13495
13496         * loader.c (method_from_memberref): Do not pass the NULL klass to
13497         mono_loader_set_error_() methods.  Pass the non-NULL value
13498         (class). 
13499
13500 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13501
13502         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13503         (mono_assembly_close): Null out assembly->image->references after freeing it.
13504
13505         * image.c (mono_image_close): Free image->references.
13506         
13507         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13508
13509 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13510
13511         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13512         before checking if it's NULL (g_assert).
13513
13514 2006-05-10  Martin Baulig  <martin@ximian.com>
13515
13516         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13517         I thought I already killed that two months ago, but now it somehow reappeared.
13518
13519 2006-05-10  Martin Baulig  <martin@ximian.com>
13520
13521         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13522
13523 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13524
13525         * reflection.c: Allocate memory for dynamically created methods in the image
13526         mempools.
13527
13528 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13529
13530         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13531         don't use the ad pointer before checking if it's NULL (g_assert).
13532
13533 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13534
13535         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13536         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13537
13538         * marshal.c: Allocate all signatures from mempools.
13539
13540         * marshal.c: Allocate some more signatures from mempools.
13541
13542 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13543
13544         * object.c (mono_load_remote_field): The code used to provide a
13545         temporary variable for returning results if the user did not
13546         provide a result pointer.  But our temporary variable was allocted
13547         on the satck.
13548
13549         Fix calling code to always pass a result area.   Coverity ID 103.
13550
13551 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13552
13553         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13554         value, not the old. Fixes #78312.
13555         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13556
13557         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13558         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13559         per-image cache.
13560
13561         * assembly.c (mono_assembly_close): Free image->references.
13562
13563         * assembly.c (mono_assembly_names_equal): Fix a warning.
13564         (mono_assemblies_cleanup): Cleanup more global data.
13565
13566         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13567
13568         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13569         ptr_cache and image->modules.
13570
13571         * image.c (mono_image_init): Allocate array_cache lazily.
13572         
13573 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13574
13575         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13576         behavior was changed recently and has bad side effects.
13577
13578 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13579
13580         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13581         
13582         * assembly.c (mono_assembly_close): Remove a debug printf.
13583
13584         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13585
13586         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13587         to also allow for temporary references between mono_image_open ()/close ().
13588
13589         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13590
13591 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13592
13593         * marshal.c: Fix support for dynamic methods.
13594
13595         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13596
13597         * marshal.c (mono_marshal_cleanup): New cleanup function.
13598
13599         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13600         image mempools.
13601
13602         * class.c (mono_class_init): Fix leaking class->nested_classes.
13603
13604         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13605
13606         * image.c (mono_image_init): Initialize the new cashes.
13607
13608         * image.c (mono_image_close): Destroy the new cashes.
13609
13610         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13611
13612         * mempool.c (mono_mempool_strdup): New helper function.
13613
13614         * class-internals.h: Add prototype for mono_loader_unlock ().
13615
13616         * domain.c (mono_jit_info_table_find): Fix a warning.
13617         (mono_debugger_check_runtime_version): Ditto.
13618
13619         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13620         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13621         functions to these modules.
13622
13623         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13624         metadata modules.
13625         
13626         * marshal.c (mono_free_bstr): Fix a warning.
13627
13628         * assembly.c (mono_assembly_open_full): Fix another small leak.
13629
13630         * object.c: Fix some unload leaks in the remoting code.
13631
13632         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13633         function.
13634
13635         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13636
13637         * reflection.c: Fix some unload leaks in dynamic assemblies.
13638
13639 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13640
13641         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13642         * marshal.h: Add BSTR support on Win32
13643         * icall.c: Add BSTR icalls
13644         * metadata.h: Add BSTR enums
13645
13646 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13647
13648         Work to catch the crash from #76795 and turn it into an
13649         exception.   As I stubbed out pieces of the VisualBasic support,
13650         I found a number of places where the code was failing and I added
13651         checks to those places. 
13652         
13653         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13654         function return a status code.  If we fail to parse the signature
13655         from mono_metadata_parse_generic_inst, return FALSE.
13656
13657         * loader.c (mono_get_method_from_token): If we fail to load the
13658         method (mono_class_get) return NULL.   
13659
13660         * (method_from_memberref): Return NULL if we are unable to parse
13661         the method signature
13662
13663         (mono_loader_error_prepare_exception): Since we now use the
13664         loader_error flag internally to stop processing, and obtaining
13665         exceptions that might be thrown will walk this code path the
13666         proper way of going from a MonoLoaderError into a
13667         MonoException was convoluted.   This new routine encapsulates the
13668         process of turning the error into an exception and *clearing* the
13669         error afterwards.
13670         
13671 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13672
13673         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13674         with missing assemblies), and to cope with:
13675
13676                 * Missing fieldref from a non-existing assembly.
13677                 * Missing methodref from a non-existing assembly.
13678
13679         The first batch of work to address *some* of the issues from 76661.
13680         
13681         * object.c (mono_class_create_runtime_vtable): If we fail to
13682         initialize the class raise the exception here. 
13683
13684         * metadata.c (mono_class_get_overrides_full): If any methods fail
13685         to load return the failure to the caller.
13686
13687         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13688         flagging assemblies that failed to load.   
13689
13690         Do not crash if we are unable to load the assembly.
13691
13692         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13693         assemblies. 
13694
13695         * loader.c (mono_loader_set_error_type_load): Change the
13696         convention to always pass unallocated strings, so we make our own
13697         copies (I know our own code had duplicated strings before, but
13698         this keeps the normal conventions).
13699         (method_from_memberref): Call mono_loader_set_error_method_load
13700         for all possible failures of loading the class. 
13701         Remove assert, turn into a loader error.
13702
13703         (mono_loader_error_to_exception): Move this routine from mini
13704         (mini_loader_error_to_exception) there was no need to have that in
13705         mini. 
13706
13707         * class.c (mono_class_from_typeref): If we were not able to load
13708         the assembly with mono_assembly_load_reference, call the
13709         mono_loader_set_error_type_load to register the problem.
13710
13711         (mono_class_setup_fields): If we fail to load the type from
13712         mono_metadata_parse_type_full, call mono_class_set_failure and
13713         break from the loop.
13714
13715         If class->exception_type is set, we do not layout the fields as
13716         that might crash the runtime, and instead return (from breaking
13717         from the previous loop).
13718
13719         (mono_class_setup_vtable): This now returns a boolean indicating
13720         whether the table was properly setup.   The decision is driven by
13721         mono_class_get_overrides_full which might run into non-existing
13722         methods. 
13723         
13724         (mono_class_init): Returns TRUE on success or FALSE if there was a
13725         problem in loading the type (incorrect assemblies, missing
13726         assemblies, methods, etc).
13727
13728         When we call mono_class_setup_fields we also check for a potential
13729         error inside this call (either a class exception or a general
13730         loader exception).
13731
13732         (mono_class_create_from_typedef): If the parent fails to load
13733         (calling mono_class_get_full) return NULL.
13734         
13735         ** Important **
13736
13737         calls to mono_metadata_parse_type_full should be checked
13738         everywhere and set the mono_class_set_failure
13739         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13740
13741         The current patch checks the places where my manually constructed
13742         tests show the errors are showing up, but we should do it
13743         everywhere. 
13744
13745         ** Important2 **
13746
13747         mono_class_init return values should be tested everywhere, like
13748         the previous case this is something that we should audit
13749         everywhere and not only on the cases exposed by the tests I
13750         created. 
13751
13752 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13753
13754         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13755         boolean parameter and instead pass the information on `options'
13756         parameter (FileOptions).
13757
13758         * icall.c: Register the new signature for MonoIO.Open.
13759
13760         * debug-helpers.c (dis_one): Trying to understand how coverity
13761         works.  Fix Run 5, item 78.
13762
13763 2006-04-26  Dick Porter  <dick@ximian.com>
13764
13765         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13766         dereference.
13767
13768 2006-04-25  Martin Baulig  <martin@ximian.com>
13769
13770         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13771
13772         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13773         debugger_thread_created().
13774         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13775         special way.
13776         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13777         (mono_debugger_finalize_threads): New function; undo the effects
13778         of mono_debugger_init_threads().
13779         (mono_debugger_create_all_threads): Removed.
13780
13781 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13782
13783         * image.c (mono_image_close): Tidy up trace messages.
13784
13785         * assembly.c (mono_assembly_close): Ditto.
13786
13787         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13788         no longer references an already freed assembly. Fixes #78168.
13789
13790 2006-04-21  Dick Porter  <dick@ximian.com>
13791
13792         * threads.c (mono_thread_detach): Fix reference counting when
13793         detaching threads.
13794
13795 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13796
13797         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13798         #78155.
13799
13800 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13801
13802         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13803         (mono_type_to_stind): Ditto.
13804
13805         * marshal.c: Use the new helper functions to simplify code.
13806
13807         * image.c (mono_image_close): Add some code for help debug assembly unloading
13808         problems.
13809
13810         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13811         image mempool.
13812
13813         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13814         assembly was already loaded in another appdomain. Fixes #78083.
13815
13816 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13817
13818         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13819         referenced assemblies.
13820         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13821
13822         * domain.c (mono_domain_free): Add a trace message.
13823
13824         * appdomain.c (add_assemblies_to_domain): Ditto.        
13825
13826         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13827         field.  
13828
13829 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13830
13831         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13832
13833 2006-04-12  Martin Baulig  <martin@ximian.com>
13834
13835         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13836         `USE_INCLUDED_LIBGC'.   
13837
13838 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13839
13840         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13841         the patch contains ../ and a small directory name later. Hopefully fixes
13842         #78035.
13843
13844 2006-04-10  Martin Baulig  <martin@ximian.com>
13845
13846         Clean up the debugger's thread-handling code.
13847
13848         The debugger's thread-handling code has been moved from
13849         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13850         over the `threads' hash, keep track of exiting threads and also
13851         use proper locking.
13852
13853         We can now debug XSP and XSP based applications with the debugger.
13854
13855         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13856
13857         * threads.h
13858         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13859         (mono_install_thread_callbacks): Likewise.      
13860
13861         * threads.c (mono_thread_callbacks): Removed.
13862         (debugger_thread_created, debugger_thread_exited): New static functions.
13863         (start_wrapper): Call debugger_thread_created().
13864         (thread_cleanup): Call debugger_thread_exited().
13865         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13866         (mono_debugger_init_threads): New public function.
13867         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13868         iterate directly over the `threads' hash and also use proper locking.
13869
13870         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13871
13872         * mono-debug-debugger.h
13873         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13874
13875 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13876
13877         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13878         argument type=array. Fixes #78057.
13879
13880 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13881
13882         * culture-info-table.h : regenerated. Fixed bug #69652.
13883
13884 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * loader.c metadata.c: Reapply a variant r59116.
13887         
13888         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13889
13890         * class.c (mono_class_setup_interface_offsets): New internal function.
13891
13892         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13893         interfaces too. Fixes #77398.
13894
13895         * reflection.c (encode_cattr_value): Add support for 
13896         parameter type=object, argument type=array.
13897         (load_cattr_value): Ditto. Fixes #77916.
13898
13899         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13900         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13901
13902         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13903         a byval char array and CharSet is Ansi.
13904
13905         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13906
13907 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * metadata.c: Add some locking comments.
13910         
13911         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13912         mempool.
13913         (mono_metadata_free_method_signature): Don't free the signature itself.
13914
13915         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13916
13917         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13918         reference the same MonoImage.
13919         (mono_assembly_load_from_full): Add an assert.
13920
13921 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * image.c (mono_image_close): Don't put the image we are about to free into the
13924         loaded_images_guid_hash.
13925
13926         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13927         to reduce code duplication.
13928
13929         * marshal.c: Register the native functions called by this module as icalls, to
13930         somewhat centralize the creation of MonoMethodSignature's.
13931
13932         * loader.c (mono_method_signature): Add a cache for method signatures.
13933
13934         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13935         the parameter attributes of a method.
13936         (mono_metadata_parse_method_signature_full): Refactored the computation of
13937         parameter attributes into a separate function. Also avoid one allocation in
13938         most cases.
13939
13940         * assembly.c (mono_assembly_close): Ditto.
13941
13942         * image.c (mono_image_close): Log trace messages with INFO level.
13943
13944         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13945
13946         * image.c reflection.c: Correct reference counting of image modules.
13947         
13948         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13949         of this function from the image mempool.
13950         
13951         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13952         to allow more cached types to be used.
13953
13954         * mono-debug.c (mono_debug_add_method): Appled patch from
13955         David S. Miller  <davem@sunset.davemloft.net>: Access 
13956         minfo->lexical_blocks[] entry elements using read32().
13957
13958 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13959
13960         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13961         methods as it is allocated from the mempool.
13962
13963         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13964         image mempool.
13965
13966         * metadata-internals.h: Add comments describing the reference counting scheme
13967         used for MonoImage and MonoAssembly.
13968
13969         * image.c assembly.c reflection.c: Rework reference counting of images and 
13970         assemblies so they are freed when the runtime is shut down. Free some 
13971         additional memory structures when an image is unloaded.
13972         
13973 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * class.c loader.c reflection.c: Allocate more data structures in
13976         the image mempool.
13977
13978 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13979
13980         * icall.c
13981         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13982         build on pre glib 2.4 systems.
13983
13984 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13985
13986         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13987
13988         * icall.c: Fix some warnings.
13989
13990 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13991
13992         * culture-info-table.h : regenerated.
13993
13994 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13995
13996         * threads.c, object-internals.h, verify.c: changed the culture caching
13997         code to use a normal MonoArray for storage so the GC can keep track of
13998         them easily. Fixed bits of the cache logic, too and simplified the
13999         code.
14000
14001 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
14002
14003         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
14004         thread for non-Boehm GCs.
14005
14006 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
14007
14008         * domain.c, object.c, domain-internals.h: reduce the amount of memory
14009         needed to keep track of the data for static fields.
14010
14011 2006-03-29  Raja R Harinath  <rharinath@novell.com>
14012
14013         Fix #75172
14014         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
14015         for interface classes.  Use 'num_methods' instead.
14016         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
14017         before using '->vtable_size' field.
14018
14019 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14020
14021         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
14022         doesn't contain managed pointers, so use a normal hashtable.
14023
14024 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14025
14026         * reflection.c, class-internals.h, domain.c: fixed handling of types
14027         used as values for objects in custom attributes (bug #77915):
14028
14029 2006-03-24  Martin Baulig  <martin@ximian.com>
14030
14031         * class.c (mono_class_setup_fields): Added support for generic
14032         instances; fixes #77580.
14033
14034 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14035
14036         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
14037
14038 2006-03-24  Dick Porter  <dick@ximian.com>
14039
14040         * file-io.c (get_file_attributes): More stat macro breakage.
14041         Fixes bug 77759.
14042
14043 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
14044
14045         * profiler.c: added the file=filename option in the default profiler
14046         to output the profile data to filename.
14047
14048 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14049
14050         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
14051         bug #77877.
14052
14053 2006-03-22  Martin Baulig  <martin@ximian.com>
14054
14055         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
14056         allocated `MonoClassField *' in `fb->handle'.
14057
14058 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14059
14060         * class.c, image.c, metadata-internals.h: implemented new mechanism to
14061         allocate interface ID to save memory and allow better ID reuse on
14062         appdomain unload. setup_generic_vtable () removal from Martin.
14063
14064 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14065
14066         * object.h, appdomain.c, domain.c, exception.c, icall.c,
14067         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
14068         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
14069         write barriers for reference stores with managed objects accessed with
14070         C structures in the runtime and in embedding programs.
14071
14072 2006-03-20  Raja R Harinath  <rharinath@novell.com>
14073
14074         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
14075         'interface_id' and 'max_interface_id' fields of MonoClasses
14076         representing open generic types.
14077
14078 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
14079
14080         * object.h, object.c, icall.c: added functions to deal with
14081         storing valuetypes that contain references in managed objects.
14082         * reflection.c, string-icalls.c, threads.c, marshal.c: small
14083         fixes and comments around uses of mono_array_addr ().
14084
14085 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
14086
14087         * object.h, icall.c, monitor.c: object.GetHashCode ()
14088         implementation that supports the moving garbage collector.
14089
14090 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14091
14092         * icall.c, threads-types.h, threads.c: implemented finalizer for
14093         LocalDataStoreSlot.
14094
14095 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14096
14097         * metadata.c (mono_type_size): Add a fixme.
14098         (mono_type_stack_size): Ditto.
14099
14100         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
14101         'type_forwarders' field.
14102
14103         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
14104         attribute from net 2.0.
14105
14106         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
14107         from class.c.
14108
14109         * class.c (mono_class_setup_fields): Fix a warning.
14110         
14111         * class.c (mono_class_from_name): Add support for assemblyref entries
14112         in the EXPORTEDTYPE table.
14113
14114         * reflection.c: Add support for handling type forwarders under net 2.0.
14115
14116         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
14117         
14118 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14119
14120         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
14121         overwriting entries in ModuleBuild->types, also clean up the code
14122         a little. Fixes #77774.
14123
14124 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14125
14126         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
14127         load friend assembly info when present.
14128
14129 2006-03-14  Raja R Harinath  <rharinath@novell.com>
14130
14131         Fix crasher on gtest-158.cs.
14132         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
14133         the return value if the MonoClass we want is yet in an
14134         inconsistent state.
14135         * class.c (mono_class_create_from_typedef): Add an comment
14136         explaining an order dependency between mono_class_setup_parent and
14137         mono_class_setup_mono_type.
14138
14139 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14140
14141         * class.c: documentation updates and events bug fix.
14142
14143 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14144
14145         * class.c: some cleanup, locking fixes.
14146
14147 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14148
14149         * class.c: fix the generics code to setup nested
14150         type info to the instantiated type (bug #77770).
14151
14152 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14153
14154         * marshal.c: fixed a few type correctness issues.
14155
14156 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14157
14158         * loader.c: the Set/Get/Addrtess array methods should be public.
14159
14160 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14161
14162         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
14163         
14164         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
14165         info->wrapper.
14166
14167 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14168
14169         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
14170
14171         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
14172
14173         * mempool.c (mono_mempool_alloc): Speed this up a bit.
14174         (mono_mempool_alloc0): Ditto.
14175
14176 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14177
14178         * socket-io.c:
14179         (create_object_from_sockaddr): it was allocating 4 extra bytes
14180         for the AF_UNIX data. Fixes bug #77747.
14181
14182 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
14185
14186 2006-03-09  Dick Porter  <dick@ximian.com>
14187
14188         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
14189         Fixes bug 76966 again.
14190
14191 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
14192
14193         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
14194         names from r57532
14195         * appdomain.c: Bumped corlib version to 48 (due to r57532)
14196
14197 2006-03-07  Martin Baulig  <martin@ximian.com>
14198
14199         * object.c
14200         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
14201
14202 2006-03-07  Martin Baulig  <martin@ximian.com>
14203
14204         * class.c
14205         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
14206         regression introduced in r56970; see gtest-252.cs.
14207
14208         * loader.c (mono_get_method_constrained): Correctly handle generic
14209         methods; see gtest-253.cs.
14210
14211 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14212
14213         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
14214
14215 2006-03-04  Martin Baulig  <martin@ximian.com>
14216
14217         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
14218         compute the parent type at runtime, just like we're already doing
14219         it for interfaces.
14220
14221         * reflection.c
14222         (mono_reflection_bind_generic_parameters): Don't compute the
14223         parent type anymore.
14224
14225         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
14226
14227 2006-03-04  Martin Baulig  <martin@ximian.com>
14228
14229         * mono-debug-debugger.h
14230         (mono_debugger_create_notification_function): Allocate memory at
14231         runtime and return a pointer to it.
14232
14233 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
14234
14235         * assembly.c: Fix windows build.
14236         
14237         * assembly.c: Fix build.
14238
14239         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
14240
14241         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
14242         
14243 2006-03-03  Dick Porter  <dick@ximian.com>
14244
14245         * process.c
14246         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14247         Check parameters before dereferencing them.  Fixes Aaron's part of
14248         bug 77393.
14249
14250 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14251
14252         Fix performance regression.
14253         * loader.c (find_method_in_class): Add 'from_class' argument.
14254         Rename 'klass' argument to 'in_class'.  The signature is compared
14255         against the method in 'in_class', and the corresponding method is
14256         returned from 'from_class'.
14257         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14258         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14259         type definition and generic instantiation in parallel.
14260         (mono_get_method_constrained): Update to changes.
14261
14262 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14263
14264         * threads.c: make sure the domain is correct, too when doing
14265         mono_thread_attach ().
14266
14267 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14268
14269         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14270         windows. Fixes #77683.
14271
14272 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14273
14274         * object.h, *: introduced specific way to set elements of an array
14275         of references to be used as write barrier. Still need to audit the
14276         uses of mono_array_addr.
14277
14278 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14279
14280         * object-internals.h: New field to cache the assmebly name, patch
14281         from Tambet Ingo (tambet@ximian.com)
14282
14283 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14284
14285         * decimal.h, class-internals.h, metadata-internals.h,
14286         file-io.h: mark a few function declarations as internal, to
14287         reduce the number of PLT entries.
14288
14289 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14290
14291         * file-io.c: fix typo in warning message.
14292
14293 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14294
14295         * loader.c: on unix, lookup the "*A" version of a function
14296         if charset is auto as a second option before failing.
14297
14298 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14299
14300         * class.h (mono_class_inflate_generic_method): Revert to two
14301         argument version.
14302         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14303         (mono_class_inflate_generic_method_full): Add.
14304         * class.c (mono_class_inflate_generic_method_full): Rename from
14305         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14306         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14307         * loader.c, reflection.c: Update to changes.
14308
14309 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14310
14311         * icall.c: const fixes and small improvements.
14312
14313 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14314
14315         * threadpool.c: for asynchronous connect(), enable the same workaround
14316         for BSD 6 as for the Mac. Fixes bug #77637.
14317
14318 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14321         formatted classes. Fixes #77524.
14322
14323 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14324
14325         * class.c (inflate_generic_type): Add a couple more
14326         micro-optimizations.
14327         (inflate_generic_context): Don't use the 'gmethod' from
14328         'inflate_with'.
14329         (mono_class_inflate_generic_method): If the method has generic
14330         parameters, but the passed-in context doesn't have a 'gmethod',
14331         create one.  Use the possibly simplified generic instantiation
14332         from the declaring class instead of the one passed in.
14333
14334 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14335
14336         Make generic method signature and method header handling lazy.
14337         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14338         (inflate_generic_header): Likewise.
14339         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14340         parameter to avoid inflating types.
14341         (mono_get_inflated_method): Empty out.
14342         * class.h (mono_class_inflate_generic_method): Update to changes.
14343         * loader.c (mono_get_method_from_token): Don't parse signature for
14344         generic methods, nor methods of generic classes.
14345         (mono_method_signature): Rename from 'mono_method_signature'.
14346         Inflate signature on demand.
14347         (mono_method_get_header): Inflate method header on demand.
14348         * reflection.c: Update to changes.
14349
14350 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14351
14352         * metadata.c (mono_metadata_inflate_generic_inst): If the
14353         instantiation is closed, don't bother expanding it in the new
14354         context.
14355         * class.c (inflate_generic_class): If the generic instantiation
14356         doesn't change after inflation, return the argument itself.
14357         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14358         Add bounds checks.
14359         (inflate_generic_context): If neither the generic class nor the
14360         generic method instantiations change, return the original context.
14361         * reflection.c (mono_method_get_object): Do
14362         'mono_get_inflated_method' before accessing the ->klass field.
14363         (inflate_mono_method): Don't create a MonoGenericMethod unless
14364         necessary.
14365         (inflate_method): Don't pass a constructed type as the declaring
14366         type of a methodbuilder.
14367
14368 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14369
14370         * object.c: fix memory overwrite.
14371
14372 2006-02-22  Dick Porter  <dick@ximian.com>
14373
14374         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14375         it doesn't work any more.
14376         (mono_threads_request_thread_dump): Fix unused variable warnings.
14377
14378 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14379
14380         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14381         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14382         the public header file.
14383
14384 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14385
14386         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14387
14388 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14389
14390         * class-internals.h, object.c: reduce the size of MonoVTable
14391         and store the interface_offsets array at negative offsets.
14392
14393 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14394
14395         * metadata.c: tweak table descriptors data structures to reduce
14396         size and runtime relocations.
14397
14398 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14399
14400         * marshal.c: fix some types and opcodes to be type-safe
14401         in marshaling wrappers.
14402
14403 2006-02-21  Ankit Jain  <jankit@novell.com>
14404
14405         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14406
14407 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14408
14409         * metadata.c (get_constraints): Relax debugging checks for monodis.
14410
14411 2006-02-21  Ankit Jain  <jankit@novell.com>
14412
14413         * metadata.c (mono_metadata_load_generic_params): Move the code
14414         checking for ambiguous generic params from here to mono/dis/get.c
14415         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14416
14417 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14418
14419         Fix assertion triggered when compiling nemerle.
14420         * class.c (mono_get_shared_generic_inst): Rename from
14421         get_shared_inst and make non-static.
14422         * loader.c (mono_get_shared_generic_method): New.  Used to create
14423         the MonoGenericContext-equivalent of a MonoGenericContainer.
14424         (mono_get_method_from_token): Initialize the 'context' field of
14425         the created MonoGenericContainer.
14426         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14427         * metadata.c (get_constraints): Add sanity check.
14428         * class-internals.h: Add new internal methods.
14429
14430         * reflection.c (verify_safe_for_managed_space): New sanity check.
14431         Currently checks that owner-less generic parameters aren't allowed
14432         in managed space.
14433         (mono_type_get_object): Use it.
14434         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14435         that are now in mono_type_get_object.
14436         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14437
14438 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14439
14440         * metadata.c (mono_type_create_from_typespec): Rename from
14441         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14442         argument and caching of types in the generic container.
14443         (unwrap_arrays, find_generic_param): Remove.
14444         * metadata-internals.h: Update.
14445         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14446
14447 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14448
14449         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14450
14451         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14452         return values. Fixes #77581.
14453
14454         * class.c (mono_fnptr_class_get): Switch name and name_space.
14455
14456         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14457         classes and add support for [In, Out] attributes.
14458         (mono_marshal_free_asany): Ditto. Fixes #77524.
14459
14460 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14461
14462         * class.c (mono_class_from_generic_parameter): Make more robust to
14463         incomplete MonoGenericContainers from monodis.
14464
14465 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14466
14467         * class-internals.h: added some more exception types.
14468         * class.c, metadata.c: added a few checks to handle missing
14469         types.
14470
14471 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14472
14473         Use owner-less generic-params some more.
14474         * class.c (my_mono_class_from_generic_parameter): Remove.
14475         (mono_class_from_generic_parameter): Handle null image,
14476         param->name and param->owner.
14477         (mono_class_from_mono_type): Update.
14478         (mono_class_create_from_typespec): Remove 'container' parameter.
14479         If that parameter is non-null, the result is always inflated by
14480         'mono_class_get_full' anyway.
14481         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14482         parameter.
14483         (mono_class_get_full): Update.
14484
14485         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14486         instance is not open, don't bother inflating.
14487         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14488         parse metadata for inflated classes.
14489         (_mono_class_get): Change GenericContext* parameter to
14490         GenericContainer*.
14491         (mono_class_create_from_typespec): Likewise.  Simplify, and
14492         implement trivially.  All the cases are handled in
14493         mono_class_from_mono_type.  Don't inflate returned class.
14494         (mono_class_get_full): Delegate GENERICINST optimization to
14495         inflate_generic_type.
14496         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14497
14498 2006-02-16  Dick Porter  <dick@ximian.com>
14499
14500         * socket-io.c (create_object_from_sockaddr): Fix typo.
14501         (create_sockaddr_from_object): Check array lengths before
14502         potentially accessing items off the end.
14503         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14504         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14505         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14506         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14507         length checks to avoid wraparound overflows.
14508         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14509         contents of the array of sockets
14510         (hostent_to_IPHostEntry2)
14511         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14512         Check return value of inet_ntop ().
14513         (addrinfo_to_IPHostEntry): Fix typo
14514
14515 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14516
14517         Type metadata parsing doesn't use generic-instantiation information.
14518         * metadata.c (mono_metadata_parse_array_full): Change
14519         MonoGenericContext* parameter to MonoGenericContainer*.
14520         (mono_metadata_parse_type_full): Likewise.
14521         (mono_type_create_from_typespec_full): Likewise.
14522         (mono_metadata_parse_mh_full): Likewise.
14523         (mono_metadata_parse_generic_inst): Likewise.
14524         (do_mono_metadata_parse_generic_class): Likewise.
14525         (do_mono_metadata_parse_type): Likewise.
14526         * metadata-internals.h: Update to changes.
14527         * class.c (mono_class_find_enum_basetype): Likewise.
14528         (mono_class_setup_fields): Likewise.
14529         (mono_class_create_from_typespec): Likewise.
14530         * loader.c (method_from_methodspec): Likewise.
14531         (mono_get_method_from_token): Likewise.
14532         (mono_method_get_header): Likewise.
14533
14534 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14535
14536         * marshal.c: handle additional GENERICINST case (patch from
14537         Thong Nguyen <tum@veridicus.com>).
14538         Fix a few cases where LDIND_I/STIND_I was used for references.
14539
14540 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14541
14542         * reflection.c (mono_reflection_get_token): Remove unused variable.
14543
14544 2006-02-16  Martin Baulig  <martin@ximian.com>
14545
14546         * reflection.c (mono_reflection_get_token): Add support for fields
14547         in instantiated generic types.
14548
14549         * icall.c
14550         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14551
14552 2006-02-15  Martin Baulig  <martin@ximian.com>
14553
14554         * icall.c
14555         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14556         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14557         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14558         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14559
14560 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14561
14562         * class.c, metadata.c, metadata.h, object.c, icall.c,
14563         marshal.c: changed mono_type_get_underlying_type () to do
14564         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14565         Fixed handling of instantiated generic valuetypes (bug #75479).
14566
14567 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14568
14569         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14570         Delegate to mono_metadata_decode_value, and work on the returned value.
14571
14572         * icall.c (ves_icall_MonoType_GetGenericArguments):
14573         Add consistency check here too.
14574         
14575 2006-02-15  Ankit Jain  <jankit@novell.com>
14576
14577         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14578         char/short etc.
14579
14580 2006-02-15  Ankit Jain  <jankit@novell.com>
14581
14582         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14583         signed values, used only for representing lower bounds of arrays.
14584         (mono_metadata_parse_array_full): Use new
14585         mono_metadata_decode_signed_value to decode lower bounds.
14586
14587 2006-02-14  Martin Baulig  <martin@ximian.com>
14588
14589         * reflection.c
14590         (mono_reflection_get_token): Support "MonoGenericMethod" and
14591         "MonoGenericCMethod" and allow generic instances / methods.
14592
14593 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14594
14595         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14596         to obtain the terminal size using an ioctl.
14597
14598         * object.c (mono_nullable_init): Revert this as nullable reference
14599         types are not valid.
14600         (mono_nullable_box): Ditto.
14601
14602 2006-02-09  Dick Porter  <dick@ximian.com>
14603
14604         * threads.c (mono_thread_detach): Drop a reference to the thread
14605         we're detaching.
14606
14607 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14608
14609         * object.c (mono_nullable_init): Handle nullable reference types.
14610         (mono_nullable_box): Ditto. Fixes #77446.
14611
14612 2006-02-07  Martin Baulig  <martin@ximian.com>
14613
14614         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14615
14616 2006-02-07  Ankit Jain  <jankit@novell.com>
14617
14618         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14619         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14620         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14621         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14622         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14623         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14624
14625 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14626
14627         * class.c (mono_class_create_generic): Set type_token as well.
14628
14629         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14630         compatible with MS.
14631
14632 2006-02-02  Martin Baulig  <martin@ximian.com>
14633
14634         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14635         has never been used so far.
14636
14637 2006-02-02  Martin Baulig  <martin@ximian.com>
14638
14639         * mono-debug-debugger.h: Changed comment at the top of this file;
14640         the header is not installed, but it's safe to #include it from
14641         within the JIT.
14642
14643         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14644         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14645
14646 2006-02-02  Martin Baulig  <martin@ximian.com>
14647
14648         * mono-debug.h
14649         (MonoSymbolTable): Removed the `metadata_info' field.
14650
14651         * mono-debug.c
14652         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14653
14654         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14655         (mono_debugger_add_builtin_types): Removed.
14656         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14657         (mono_debugger_create_notification_function): We now operate on a
14658         pre-allocated area; take a `gpointer' and return `void'.
14659
14660         * mono-debug-debugger.c
14661         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14662         (mono_debugger_add_builtin_types): Removed.
14663
14664 2006-02-02  Martin Baulig  <martin@ximian.com>
14665
14666         * threads.c (mono_debugger_create_all_threads): New public method.
14667
14668 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14669
14670         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14671         breaks on several platforms.
14672
14673 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14674
14675         * assembly.c: the VS.NET build doesn't supply default values for
14676         MONO_ASSEMBLIES and MONO_CFG_DIR.
14677
14678 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14681         helper function.
14682
14683         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14684
14685         * loader.c (method_from_memberref): Fix a warning.
14686
14687         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14688
14689         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14690         with explicit layout. Fixes #77433.
14691
14692 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14693
14694         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14695         max_interface_id is initialized before using it. Fixes #77398.
14696         (ves_icall_Type_GetInterfaces): Ditto.
14697
14698 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14699
14700         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14701         allocate memory for parameter attributes when parsing memberref
14702         signatures.
14703         * loader.c (mono_loader_set_error_method_load): Don't warn.
14704         (method_from_memberref): Ensure MissingMethodException gets thrown
14705         if method is not found.  Make warning more informative.
14706
14707 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14708
14709         Fix #77397
14710         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14711         return true if is byref.
14712         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14713         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14714         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14715
14716 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14717
14718         Fix tests/find-method.2.il
14719         * loader.c (find_method, find_method_in_class): Remove is_inflated
14720         argument.  Revert 2006-01-18 change.
14721         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14722         is generic, search for method in its generic definition.
14723         * class.c (mono_class_setup_vtable_general): Print generic
14724         arguments of generic types in debugging printf.
14725
14726 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14727
14728         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14729
14730         * threads.c (mono_threads_request_thread_dump): New helper function.
14731
14732 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14733
14734         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14735
14736 2006-01-25  Ankit Jain  <jankit@novell.com>
14737
14738         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14739         move definition to ..
14740         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14741         
14742 2006-01-25  Ankit Jain  <jankit@novell.com>
14743             Raja R Harinath  <rharinath@novell.com>
14744
14745         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14746         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14747         as necessary.
14748
14749 2006-01-25  Martin Baulig  <martin@ximian.com>
14750
14751         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14752         `MonoDebuggerThread' into debug-debugger.c.
14753
14754 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14755
14756         * profiler.c: fix printing of data.
14757
14758 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14759
14760         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14761           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14762
14763 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14764
14765         * object.c: fix deadlock related to string interning.
14766
14767 2006-01-23  Martin Baulig  <martin@ximian.com>
14768
14769         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14770
14771         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14772
14773 2006-01-23  Martin Baulig  <martin@ximian.com>
14774
14775         * mono-debug.h: Moved the prototypes of some functions which are
14776         used by the JIT here from mono-debug-debugger.h.
14777
14778 2006-01-21  Martin Baulig  <martin@ximian.com>
14779
14780         * Makefile.am: Don't install mono-debug-debugger.h.
14781
14782 2006-01-21  Martin Baulig  <martin@ximian.com>
14783
14784         * mono-debug-debugger.h: Enforce the private status of this header
14785         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14786         Moved some stuff from mono-debugger-jit-wrapper.h here.
14787
14788 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14789
14790         * class.c (mono_class_from_typeref): Add a sanity test to help
14791         catch lack of assembly load/search hooks.
14792
14793 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14794
14795         * marshal.c (emit_struct_conv): Relax the fields with same offset
14796         check even more. Fixes #77230.
14797
14798 2006-01-18  Martin Baulig  <martin@ximian.com>
14799
14800         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14801         argument; if false, we compare the uninstantiated signatures.
14802         (method_from_memberref): Compare the uninstantiated signatures;
14803         fixes #76417.
14804
14805 2006-01-18  Robert Jordan  <robertj@gmx.net>
14806
14807         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14808         Clear the weak link. Fixes bug #77170.
14809
14810         * gc.c (mono_gchandle_free):
14811         Reflect *-gc.c changes (tiny optimization).
14812
14813 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14814
14815         * metadata.c (mono_metadata_signature_dup): Applied patch from
14816         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14817         Fixes #77288.
14818
14819 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14822         marshalling from native to managed code. Fixes #77230.
14823
14824 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14825
14826         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14827         connect. Fixes bug #77020.
14828
14829 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14830
14831         * class.c: fixed id assignement for nested interfaces (bug #77275).
14832         Added also better info for --print-vtable debugging.
14833
14834 2006-01-12  Martin Baulig  <martin@ximian.com>
14835
14836         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14837         interfaces on-the-fly; fixes #76625.
14838
14839         * class-internals.h
14840         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14841         don't need that anymore.
14842
14843 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14844
14845         * socket-io.c
14846         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14847         To avoid initing the nested_classes when not needed I turned the
14848         PeerCredData as a toplevel internal class, as it has to be shared
14849         anyways. 
14850
14851         Fixes the CASA issue.
14852
14853 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14854
14855         * domain.c: Accessors for MonoJitInfo
14856
14857         * profiler-private.h: Add jitinfo to the end jit hook
14858
14859         * profiler.[ch]: Define new hooks, called after jitting which give
14860         the MonoJitInfo that was compiled
14861
14862 2006-01-10  Martin Baulig  <martin@ximian.com>
14863
14864         * class.c (mono_class_setup_events): Add support for generic
14865         classes; fixes #76440.
14866
14867 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14868
14869         Fix #77160.
14870         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14871         on passed-in method.
14872
14873 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14874
14875         * object.c (mono_runtime_invoke_array): Add Nullable support.
14876
14877         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14878
14879 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14880
14881         * file-io.c: Don't consider sockets as directory and avoid an endless
14882         loop. Fix bug #76966.
14883
14884 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * object.c (mono_nullable_init): New helper function.
14887         (mono_nullable_box): Ditto.
14888
14889         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14890
14891         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14892
14893         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14894         
14895 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14896
14897         * class.c (mono_class_is_assignable_from): Make T assignable to 
14898         Nullable<T>.
14899
14900 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14901
14902         * appdomain.c: Bump corlib version to 46.
14903         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14904         serialization purpose) and changed ves_icall_System_Reflection_
14905         Assembly_get_code_base signature to accept a boolean (to escape, or 
14906         not, the assembly code base).
14907
14908 2005-12-23  Dick Porter  <dick@ximian.com>
14909
14910         * icall.c: 
14911         * threads-types.h: 
14912         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14913         CreateEvent icall now returns "created" boolean parameter.
14914
14915 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14916
14917         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14918         #76967.
14919
14920         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14921         when attr_klass is an interface. Fixes #77045.
14922
14923 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14924
14925         * marshal.c (emit_struct_conv): Fix previous patch.
14926         
14927         * marshal.c (emit_struct_conv): Add a check for fields with the same
14928         offset.
14929
14930 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14931
14932         Fix regression in Mono.C5.
14933         * class.c (mono_class_create_generic): If 'klass' is an interface
14934         set up the interface offsets.
14935         (mono_class_is_assignable_from): Don't throw away generic arguments.
14936
14937 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14938
14939         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14940         type parameters.
14941
14942 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14943
14944         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14945         dead store.
14946         (do_mono_metadata_parse_generic_class): Don't pass the current
14947         generic context when parsing the type being instantiated: it
14948         cannot use it, anyway.
14949
14950         * loader.c (method_from_memberref): Don't inflate a signature if
14951         it doesn't contain any type parameters.
14952
14953 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14954
14955         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14956
14957 2005-12-14  Martin Baulig  <martin@ximian.com>
14958
14959         * class.c
14960         (mono_type_get_name_recurse): Don't return null for type
14961         parameters and open generic classes.
14962         (mono_class_setup_methods): Don't exclude generic instances.
14963         (mono_get_unique_iid): Use different IDs for different
14964         instantiations of the same generic type.
14965         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14966         open generic instances; create a normal vtable for closed generic
14967         instances.
14968         (mono_class_setup_vtable_general): We're now also called for
14969         closed generic instances.
14970
14971         * reflection.c
14972         (mono_reflection_bind_generic_parameters): Correctly use
14973         mono_metadata_lookup_generic_inst() everywhere.
14974
14975 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * object.c (mono_class_create_runtime_vtable): Call 
14978         mono_class_setup_vtable ().
14979
14980         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14981         function.
14982         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14983         #76959.
14984
14985         * loader.c (mono_loader_set_error_type_load): Print the type load
14986         warnings to the console so they are more visible to the user.
14987         (mono_loader_set_error_method_load): Ditto.
14988
14989         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14990         is still broken.
14991         
14992         * reflection.c (ensure_runtime_vtable): Fix build.
14993
14994         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14995         doesn't work in all cases.
14996
14997 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * object.c (mono_array_new_full): Treat a single dimensional array
15000         with 0 lower bounds as an szarray. Fixes #76973.
15001
15002         * reflection.c (custom_attr_visible): Really fix this.
15003
15004 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
15005
15006         * reflection.c (custom_attr_visible): Allow nested public attributes
15007         as well.
15008
15009         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
15010         interface check.
15011
15012 2005-12-12  Raja R Harinath  <harinath@gmail.com>
15013
15014         * class.c (set_generic_param_owner): Delete.
15015         (mono_class_create_from_typedef): Don't set ->owner field of
15016         generic parameters to "param containers" of enclosing classes.
15017         * reflection.c (mono_reflection_initialize_generic_parameter):
15018         Likewise.
15019
15020 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * reflection.c (custom_attr_visible): Fix build.
15023
15024 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
15025
15026         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
15027         private attributes.
15028         
15029         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
15030         handling of null parameter defaults.
15031
15032 2005-12-09  Raja R Harinath  <rharinath@novell.com>
15033
15034         * class.c (mono_class_from_generic_parameter): Don't set
15035         klass->generic_container.
15036         (my_mono_class_from_generic_parameter): Likewise.
15037
15038 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * reflection.c (load_public_key): Fix a warning.
15041         (method_encode_code): Fix unaligned accesses.
15042
15043 2005-12-07  Martin Baulig  <martin@ximian.com>
15044
15045         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
15046
15047         * reflection.c
15048         (write_generic_param_entry): Encode our custom attrs.
15049
15050         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
15051
15052 2005-12-07  Martin Baulig  <martin@ximian.com>
15053
15054         * reflection.c (encode_new_constraint): Removed; we don't use the
15055         `NewConstraintAttribute' anymore.
15056
15057 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
15060         not fire a TypeResolve event when Assembly.GetType () is called.
15061
15062 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15063
15064         Beginning of support for nullable types in the runtime. Parts of
15065         this patch are from Martin.
15066
15067         * appdomain.c (MONO_CORLIB_VERSION): Bump
15068
15069         * domain.c (mono_init_internal): get the nullable type
15070
15071         * class.c (mono_class_is_nullable): New method
15072         (mono_class_get_nullable_param): New mehod
15073         (mono_class_create_generic): In types T? set cast_class to T
15074
15075         * class-internals.h (MonoDefaults): new nullable default class
15076         (mono_class_get_nullable_param, mono_class_get_nullable_param):
15077         new methods.
15078
15079 2005-12-05  Raja R Harinath  <rharinath@novell.com>
15080
15081         * metadata.c (select_container): New.  Refactor code to select the
15082         appropriate GenericContainer given the type of generic parameter
15083         we are looking for.
15084         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
15085         not a MonoGenericContext.  Use select_container.  Update parameters.
15086         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
15087         and MONO_TYPE_MVAR.
15088         (unwrap_arrays): Remove duplicate tests.
15089         (find_generic_param): Rename from 'has_same_context'.  Now walks a
15090         generic instantiated class to find any arguments that are generic
15091         parameters.
15092         (mono_type_create_from_typespec_full): Use find_generic_param to
15093         avoid evicting some generic instantiations from the typespec
15094         cache.
15095
15096 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
15097
15098         * reflection.c: fixed writing of doubles on ARM FPA.
15099
15100 2005-12-02  Robert Jordan  <robertj@gmx.net>
15101
15102         * icall.c: Fixed EventInfo.ReflectedType (#76829).
15103
15104 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15105
15106         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
15107         least on SUSE 10 they are not the same (on debian, they are just the
15108         same thing).
15109
15110 2005-12-01  Raja R Harinath  <rharinath@novell.com>
15111
15112         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
15113         DeclaringType for VARs and MVARs.
15114         * class.c (set_generic_param_owner): Fix initialization of owner
15115         fields.
15116
15117 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
15118
15119         * icall.c: fixed Enum.ToObject() to correctly convert the values.
15120
15121 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15122
15123         * threadpool.c: workaround for a bug that shows up on the Mac:
15124         select()+connect() on a blocking socket is not like it should
15125         be, so we proceed to connect() in that case, wasting the I/O
15126         threadpool thread until connect succeedes. Fixes bug #75436.
15127
15128 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15129
15130         * threadpool.c: fix typo when setting file descriptor states.
15131
15132 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15133
15134         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
15135         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15136         create a temporary signature container.
15137         (mono_metadata_parse_generic_param): Update to changes.
15138         (mono_type_create_from_typespec_full): Update to changes.
15139         * loader.c (method_from_memberref): Don't use a
15140         MonoGenericContainer while parsing a memberref signature.
15141         (method_from_methodspec): Remove dead-store of the 'container'
15142         variable.  It's overwritten before use.
15143
15144         * metadata.c (mono_type_create_from_typespec_full): Make debugging
15145         checks tighter.
15146         (mono_metadata_parse_generic_param): Likewise.
15147         * loader.c (find_method_in_class): Does not need a
15148         MonoGenericContainer.  Use 'mono_method_signature' rather than
15149         'mono_method_signature_full'.
15150         (find_method, mono_get_method_constrained, method_from_memberref):
15151         Update to changes.
15152
15153         * metadata.c (mono_type_create_from_typespec_full): Ensure that
15154         owner-less generic-parameters are never evicted from the typespec
15155         cache.
15156
15157         * loader.c (method_from_memberref): Don't use the current context
15158         when parsing signatures.
15159         (method_from_methodspec, mono_get_method_from_token): Update to changes.
15160
15161         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
15162         side-effects in g_assert.
15163         * loader.c (mono_get_method_from_token): Resolve klass earlier so
15164         that we don't potentially lose information.
15165
15166 2005-11-26  Dick Porter  <dick@ximian.com>
15167
15168         * icall.c:
15169         * threads.c: icalls to implement basic (ie, not named)
15170         System.Threading.Semaphore.
15171
15172 2005-11-24  Dick Porter  <dick@ximian.com>
15173
15174         * process.c
15175         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15176         Use GetProcessId() if it's available.
15177
15178 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
15179
15180         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
15181
15182 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15183             Ankit Jain  <jankit@novell.com>
15184
15185         * loader.c (mono_get_method_from_token): Initialize 'method' field
15186         of all generic parameters before parsing the signature.  Remove
15187         code that "fixed"-up MVAR references.
15188
15189 2005-11-23  Ankit Jain  <jankit@novell.com>
15190
15191         * metadata.c (mono_metadata_has_generic_params):
15192         (mono_metadata_load_generic_param_constraints):
15193         (mono_metadata_load_generic_params): Move duplicate code ...
15194         (mono_metadata_get_generic_param_row): ... here. Returns the
15195         first row-id in GenericParam table for a given owner (token).
15196         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
15197         prototype.
15198
15199 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15200             Ankit Jain  <jankit@novell.com>
15201
15202         * metadata.c (mono_metadata_class_equal): Pass signature_only when
15203         comparing VARs too.
15204         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
15205         type->data.generic_param only if the type is an MVAR.
15206         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
15207         leak owner-less VARs and MVARs into managed space.
15208
15209 2005-11-21  Martin Baulig  <martin@ximian.com>
15210
15211         * class-internals.h
15212         (MonoMethod): Moved the `generic_container' here from
15213         `MonoMethodNormal' since we now also need it for
15214         `MonoMethodPInvoke';
15215         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
15216         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
15217         an union containing both `MonoMethodNormal' and
15218         `MonoMethodPInvoke'.
15219
15220         * loader.c
15221         (mono_get_method_from_token): Allow implementing generic methods
15222         as interncalls.
15223
15224         * threads.c
15225         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
15226         icall.
15227
15228 2005-11-17  Dick Porter  <dick@ximian.com>
15229
15230         * icall.c: 
15231         * process.h: 
15232         * process.c: Split the Process Start_internal icall into
15233         ShellExecuteEx_internal and CreateProcess_internal, which are
15234         called depending on whether UseShellExecute is true.  Fixes bug
15235         76670.
15236
15237         * appdomain.c (MONO_CORLIB_VERSION): Incremented
15238
15239 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15240
15241         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
15242         'msize' parameters, use the information in 'mspec' instead.
15243         (emit_object_to_ptr_conv): Ditto.
15244
15245         * marshal.c (emit_struct_conv): Handle explicit layout structs with
15246         fields out of order. Fixes #76733.
15247
15248 2005-11-17  Ankit Jain  <jankit@novell.com>
15249
15250         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15251
15252 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15253
15254         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15255           bug #76575.
15256
15257 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15258
15259         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15260         for types with non-auto layout. Fixes #76717.
15261
15262 2005-11-16  Ankit Jain  <jankit@novell.com>
15263
15264         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15265         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15266         if generic_context is null.
15267           (mono_metadata_generic_param_equal): param->owner can be null.
15268           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15269         null.
15270
15271 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15274         the correct value.
15275
15276 2005-11-15  Martin Baulig  <martin@ximian.com>
15277
15278         * object.c (set_value): Use mono_class_from_mono_type() instead of
15279         the hack for generic instances; fixes #76136.
15280
15281 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15284         fields.
15285
15286         * image.c (load_metadata_ptrs): Initialize the new fields.
15287
15288         * reflection.c (create_dynamic_mono_image): Ditto.
15289
15290         * reflection.c (build_compressed_metadata): Use the new fields.
15291
15292         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15293         icall.
15294
15295         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15296         icall.
15297         
15298 2005-11-15  Ankit Jain  <jankit@novell.com>
15299             Raja R Harinath  <harinath@gmail.com>
15300
15301         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15302         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15303         new per-generic_container cache if the cached MonoType's context matches
15304         the current context.
15305           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15306         to the expected context.
15307           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15308
15309 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15310
15311         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15312         we changed the signature of an icall.
15313         * icall.c: Modify to mono_double_ParseImpl return true/false 
15314         depending on the success, instead of throwing the exception. This will
15315         help us in Double.TryParse methods.
15316         
15317 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15318
15319         * marshal.c (emit_marshal_object): Throw an exception when
15320         marshalling 'object' instead of crashing. Fixes #76696.
15321
15322 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * class-internals.h: Add prototype for mono_type_get_full_name ().
15325
15326 2005-11-11  Dick Porter  <dick@ximian.com>
15327
15328         * threads.c (mono_thread_manage): Make sure the main thread has
15329         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15330
15331 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15332
15333         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15334         console about the missing type.
15335         (mono_loader_set_error_method_load): Ditto.
15336
15337 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15338
15339         * mono-config.c (mono_get_config_dir): Set the system defaults if
15340         none is specified.
15341
15342         * assembly.c (mono_set_dirs): New API entry point to set the
15343         assembly and the config directory in one call
15344
15345 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15346
15347         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15348         the ftnptr was created from a delegate in a domain other than the
15349         current domain. Fixes #75377.
15350
15351         * exception.h exception.c: Add mono_get_exception_not_supported ().
15352
15353 2005-11-08  Martin Baulig  <martin@ximian.com>
15354
15355         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15356
15357 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15358
15359         * security-manager.h: Added definitions to deal with strongname key 
15360         pairs bigger (and smaller) than 1024 bits.
15361         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15362         adjust wrt the public key length being used.
15363
15364 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15365
15366         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15367           Windows build (r51396-51397).
15368
15369 2005-11-03  Martin Baulig  <martin@ximian.com>
15370
15371         * class.c (mono_class_setup_vtable_general): Also add generic
15372         methods to the vtable; fixes #76581.
15373
15374 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15375
15376         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15377         sure that we lookup GetString method from the System.Text.Encoding
15378         class, not the derived class or we get an empty method.
15379
15380         Fixed class #76612.
15381
15382 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15383
15384         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15385         if it has been previously set (embedders). 
15386
15387         Make mono_set_rootdir available also on Unix.
15388
15389 005-10-24  Robert Jordan  <robertj@gmx.net>
15390
15391         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15392
15393 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15394
15395         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15396         only calls which are made to native code use this flag.
15397
15398         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15399
15400 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15401
15402         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15403         Add support for FieldBuilders.
15404
15405 2005-10-29  Martin Baulig  <martin@ximian.com>
15406
15407         * mono-debug.c
15408         (mono_debug_using_mono_debugger): New public method; returns
15409         whether we're running inside the debugger.
15410
15411 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15412
15413         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15414         for Method/Constructor/FieldBuilders.
15415
15416 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15417
15418         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15419         and fields as well.
15420
15421 2005-10-26  Martin Baulig  <martin@ximian.com>
15422
15423         * mono-debug-debugger.c
15424         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15425
15426 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15427
15428         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15429         integer to isspace.
15430
15431 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15434         when passing valuetypes byref. Fixes #76502.
15435
15436 2005-10-19  Jackson Harper  <jackson@ximian.com>
15437
15438         * profiler.c: Don't put a . in front of types that are not in a
15439         namespace.
15440
15441 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15442
15443         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15444
15445 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15446
15447         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15448         #76436.
15449         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15450
15451 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15452
15453         * assembly.c metadata-internals.h icall.c: Define an additional
15454         parameter for mono_assembly_name_parse_full, so we can avoid creating
15455         S.R.AssemblyName.Version when no version info wasn't passed.
15456         
15457 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15458
15459         * class.c (mono_type_get_full_name): Reimplement method that was
15460         removed. 
15461
15462         * image.c: Some docs
15463
15464 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15465
15466         * profiler.c (output_newobj_profile): Fix printing of Total memory
15467         on x86.
15468
15469 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15470
15471         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15472
15473 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15474
15475         * threads.c: remove debug output.
15476
15477 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15478
15479         * threads.c (mono_thread_manage): Fix crashes if more than 64
15480         threads need to be aborted. Hopefully fixes #75899.
15481
15482         * assembly.c (mono_stringify_assembly_name): New helper function.
15483
15484         * class.c: Use mono_stringify_assembly_name instead of the similar
15485         static function.
15486
15487         * assembly.h assembly.c: Add support for calling a postload search 
15488         hook if an assembly cannot be loaded.
15489
15490         * appdomain.c: Register new search hooks which call the AssemblyResolve
15491         events in AppDomain. Fixes #75231
15492
15493 2005-10-07  Martin Baulig  <martin@ximian.com>
15494
15495         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15496         methods without debug info.
15497
15498 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15499
15500         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15501         wrappers.
15502
15503 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15504
15505         * file-io.c: now that we return symlinks, use lstat and, when the file
15506         is a symbolic link, stat, to get the file attributes. Also avoid the
15507         conversion to/from utf16/external.
15508
15509 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15510
15511         * class.c (mono_class_layout_fields): Compute klass->has_references
15512         correctly if an embedded valuetype is not yet initialized. Fixes
15513         #76331.
15514
15515 2005-10-04  Martin Baulig  <martin@ximian.com>
15516
15517         * metadata.c
15518         (mono_metadata_load_generic_param_constraints): New public
15519         function; splitted the constraints loading out from
15520         mono_metadata_load_generic_params().
15521
15522         * class.c (mono_class_create_from_typedef): Call
15523         mono_metadata_load_generic_param_constraints() after setting up
15524         the type and creating our parent; fixes #75329.
15525
15526 2005-10-04  Martin Baulig  <martin@ximian.com>
15527
15528         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15529         non-dynamic parent classes.
15530
15531 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15532
15533         * file-io.c : win32 build fix (ETXTBSY seems not found).
15534
15535 2005-10-04  Martin Baulig  <martin@ximian.com>
15536
15537         * reflection.c
15538         (mono_image_get_methodspec_token): Make the cache actually work;
15539         fixes #75974.
15540
15541 2005-10-04  Martin Baulig  <martin@ximian.com>
15542
15543         * class.c (mono_class_name_from_token): Removed the unneccessary
15544         `MonoGenericContext *' argument.
15545
15546 2005-10-04  Martin Baulig  <martin@ximian.com>
15547
15548         * loader.c
15549         (method_from_methodspec): Make the caching work again; fixes the
15550         performance regression from #76262.
15551
15552 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15553
15554         * file-io.c:
15555         * file-io.h:
15556         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15557         GetFileSystemEntries that performs the same work but without going
15558         into io-layer, locking, etc.
15559
15560 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15561
15562         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15563         ThreadState_Stopped as well. Fixes #76047.
15564
15565 2005-09-29  Martin Baulig  <martin@ximian.com>
15566
15567         * class.c
15568         (inflate_generic_context): If the new context has a `gmethod', set
15569         its `container' that that gmethod's `container'.
15570
15571         * metadata.c
15572         (mono_metadata_parse_generic_param): Simplify things;
15573         `generic_container = generic_context->container;' is just fine.
15574
15575         * loader.c (method_from_methodspec): Code cleanups.
15576
15577 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15578
15579         * decimal.c: fix warning (and let gcc generate correct
15580         code on ARM with optimizations).
15581
15582 2005-09-28  Martin Baulig  <martin@ximian.com>
15583
15584         * loader.c
15585         (method_from_memberref): Added `MonoGenericContext *class_context'
15586         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15587         (method_from_methodspec): If we're a memberref, use the enclosing
15588         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15589
15590 2005-09-28  Martin Baulig  <martin@ximian.com>
15591
15592         * object.c (mono_runtime_invoke_array): Added support for
15593         MONO_TYPE_GENERICINST; fixes #75917.
15594
15595 2005-09-27  Martin Baulig  <martin@ximian.com>
15596
15597         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15598         `k->byval_arg.type' to determine the actual type.
15599
15600         * loader.c (method_from_methodspec): Removed some hacks.
15601
15602 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15603
15604         * class-internals.h (mono_field_is_deleted): Do the test for
15605         rtspecialname before we check the actual name of the field. This
15606         prevents us from dereferencing a pointer into the string table,
15607         saving us from accessing a few pages
15608
15609         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15610         macros. This will allow a deadlock debugger to easily be plugged
15611         in.
15612
15613 2005-09-27  Martin Baulig  <martin@ximian.com>
15614
15615         * loader.c (method_from_methodspec): Create a "signature"
15616         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15617
15618 2005-09-27  Martin Baulig  <martin@ximian.com>
15619
15620         * class.c
15621         (inflate_generic_class): Correctly set the new context's
15622         container.
15623
15624         * loader.c
15625         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15626         instead of a `MonoGenericContext *'.
15627         (mono_method_signature_full): Take a `MonoGenericContainer *'
15628         instead of a `MonoGenericContext *'.
15629
15630         * metadata.c
15631         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15632         instead of a `MonoGenericContext *'.
15633         (mono_metadata_parse_method_signature_full): Likewise.
15634
15635 2005-09-26  Martin Baulig  <martin@ximian.com>
15636
15637         * class.c
15638         (mono_class_from_generic_parameter): Set `klass->generic_container'
15639         (mono_class_from_generic_parameter): Likewise.
15640         (mono_bounded_array_class_get): We inherit the generic container
15641         from the element class.
15642
15643         * loader.c
15644         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15645         argument rather than computing it here.
15646         (method_from_memberref): Correctly set the generic context before
15647         parsing the signature.  Fixes #75681.
15648
15649 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15650
15651         * object.c (mono_class_has_special_static_fields): Fix warnings.
15652
15653 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15654
15655         * assembly.c: Add parse_public_key function, to
15656         par the public keys. Also added mono_assembly_name_parse_full,
15657         to define it the parsed key should be freed or not.
15658         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15659         to parse a long format assembly name.
15660         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15661         private, since calling it to preserve the key requires
15662         freeing it manually.
15663         
15664 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15665
15666         * locales.c : removed HAVE_ICU part.
15667
15668 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15671         field_is_special_static if the klass has no special static fields.
15672
15673         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15674         (MonoCachedClassInfo): Likewise.
15675
15676         * object.c (mono_class_has_special_static_fields): New helper function.
15677
15678 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * class.c (mono_class_create_from_typedef): Don't call 
15681         interfaces_from_typedef_full for enums.
15682         (mono_class_create_from_typedef): Compute the base types of enums directly
15683         without calling mono_class_setup_fields ().
15684         (mono_class_find_enum_basetype): New helper function.
15685
15686         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15687         one place inside the string heap.
15688         
15689 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15690
15691         * class.c: locking fixes, code cleanups, some docs added.
15692         Allocate some data structures in the image mempool.
15693
15694 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15695
15696         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15697         the example code.
15698         
15699 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15700
15701         * class-internals.h, class.c, reflection.c: reduce memory taken by
15702         MonoClass.
15703
15704 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15705
15706         * metadata.c, metadata.h, loader.h: documentation updates, code and
15707         API cleanups.
15708
15709 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15712         the example code.
15713
15714         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15715         page faults caused by the runtime while reading metadata.
15716
15717 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15718
15719         * socket-io.c: the field names were changed 3 months ago and no one
15720         realized until bug #76077 got filed!
15721
15722 2005-09-20  Martin Baulig  <martin@ximian.com>
15723
15724         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15725
15726 2005-09-20  Martin Baulig  <martin@ximian.com>
15727
15728         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15729         write the rank into the class entry.
15730
15731 2005-09-20  Martin Baulig  <martin@ximian.com>
15732
15733         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15734
15735 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15738
15739         * icall.c (custom_attrs_defined_internal): New icall.
15740
15741         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15742         function.
15743         (mono_custom_attrs_construct_by_type): New helper function.
15744
15745 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15746
15747         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15748         terminate the resulting string. Fixes #76123.
15749
15750 2005-09-16  Martin Baulig  <martin@ximian.com>
15751
15752         * mono-debug.c
15753         (mono_debug_add_method): Ignore inflated methods for the moment.
15754
15755 2005-09-14  Martin Baulig  <martin@ximian.com>
15756
15757         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15758
15759 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15760
15761         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15762         return a success/failure indication.
15763         (mono_metadata_interfaces_from_typedef_full): Ditto.
15764         (get_constraints): Ditto.
15765
15766 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15767
15768         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15769         
15770         * marshal.c (emit_marshal_array): Add support for returning string
15771         arrays from delegates. Fixes #76063.
15772
15773         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15774
15775 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15776
15777         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15778         icall.
15779
15780 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * reflection.c icall.c: Fix after mono_get_exception_type_load
15783         signature change.
15784
15785         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15786         (mono_assembly_load_reference): Use the new helper.
15787
15788         * class-internals.h (MonoLoaderError): New structure containing 
15789         information about type loading errors.
15790
15791         * class-internals.h loader.c: Add APIs to store per-thread loader
15792         error information.
15793
15794         * loader.c class.c: Set the loader error if needed.
15795
15796         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15797
15798 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15799
15800         * decimal.c: fixed to handle the broken ARM fp format.
15801
15802 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15803
15804         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15805         broken.
15806
15807 2005-09-06  Martin Baulig  <martin@ximian.com>
15808
15809         * domain.c (supported_runtimes): Added v2.0.50727.
15810
15811 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15812
15813         * culture-info.h: reduce the size of some structures.
15814
15815 2005-09-05  Martin Baulig  <martin@ximian.com>
15816
15817         Reflect latest API changes in the August CTP.
15818
15819         * icall.c
15820         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15821         ("MonoType.HasGenericArguments"): Removed.
15822         ("MonoMethod.BindGenericParameters"): Renamed to
15823         "MakeGenericMethod".
15824         ("MethodBuilder.BindGenericParameters"): Renamed to
15825         "MakeGenericMethod".    
15826
15827 2005-09-05  Martin Baulig  <martin@ximian.com>
15828
15829         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15830
15831 2005-09-05  Martin Baulig  <martin@ximian.com>
15832
15833         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15834
15835         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15836         generic_container is non-NULL.
15837
15838 2005-09-05  Martin Baulig  <martin@ximian.com>
15839
15840         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15841
15842         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15843
15844 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15845
15846         * reflection.c (encode_locals,
15847         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15848         for large generic types.
15849
15850 2005-09-05  Martin Baulig  <martin@ximian.com>
15851
15852         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15853
15854         * class.c (mono_dup_array_type): New public method.
15855         (mono_metadata_signature_deep_dup): New public method.
15856         (dup_type): Correctly duplicate array and function types.
15857
15858 2005-09-05  Martin Baulig  <martin@ximian.com>
15859
15860         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15861
15862         * reflection.c (get_default_param_value_blobs): Handle generic types
15863         and generic methods.
15864
15865 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15866
15867         * class.c: Fixed error reporting (method/class were inversed) for 
15868         inheritance demands.
15869         * security-manager.c|h: Added the AppDomain when calling the managed
15870         System.Security.SecurityManager.InheritanceDemand method.
15871
15872 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15873
15874         * reflection.c (encode_marshal_blob): 'marshaltype' and
15875         'marshaltyperef' are alternate sources for the custom marshaler
15876         name.
15877
15878 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15879
15880         * class.c: fix creation of array classes with rank == 1
15881         (patch by Ankit Jain <jankit@novell.com>).
15882
15883 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15884
15885         * object.c: fix check for creating the bound data for arrays vs
15886         szarrays.
15887
15888 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15889
15890         * object.c: configuration file name is now based on the executable name,
15891         not the image name. Fixes bug #75931.
15892
15893 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15894
15895         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15896         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15897
15898 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15901
15902 2005-08-24  Ankit Jain  <jankit@novell.com>
15903             Raja R Harinath  <rharinath@novell.com>
15904
15905         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15906           called by it recursively.
15907           (mono_class_init): Remove special case in pending_init handling, since it's
15908           superseded by the fix to mono_class_from_typeref.
15909
15910 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15911
15912         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15913         BROKEN_THREAD_START stuff.
15914
15915 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15916
15917         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15918         trampoline.
15919
15920         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15921         
15922         * object.c (mono_delegate_ctor): Replace the original function address with
15923         a delegate trampoline.
15924
15925 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15926
15927         * icall.c: add boolean argument to base64_to_byte_array and 
15928         InternalFromBase64String to control whether a whitespace-only string
15929         is allowed (or should casue a FormatException to be thrown). We need
15930         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15931         to match the MS behaviour in both profiles.
15932         * appdomain.c: Bump corlib version.
15933
15934 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15935
15936         This patch implements a big portion of publisher policy
15937         support, used to bind assembly versions and redirect
15938         one assembly from version A to version B.
15939
15940         * assembly.c:
15941         New GSList loaded_assembly_bindings, for storing the cached
15942         assembly bindings.
15943         (assembly_binding_maps_name): New static function for checking if a 
15944         assembly binding information maps an assembly name.
15945         (mono_assembly_binding_info_free): New function for freeing
15946         assembly binding information resources.
15947         (get_publisher_policy_info): New static function for retrieving 
15948         assembly binding information from a MonoImage.
15949         (compare_versions): New static function for comparing an assembly
15950         binding information data and the version of an assembly name.
15951         (check_policy_versions): New static function for checking if an
15952         assembly binding info mapping an assembly name is valid for it.
15953         (mono_assembly_load_publisher_policy): New static function for
15954         loading the 'policy.major.minor.MyAssembly' image for an assembly
15955         with an assembly name 'aname'.
15956         (mono_assembly_bind_version): New static function for updating
15957         assembly redirection.
15958         (mono_assembly_apply_binding): New static function for applying
15959         assembly binding.
15960         (search_binding_loaded): New static function for searching 
15961         loaded assembly binding infos in the cache domain.
15962         (mono_assembly_load_full): Don't apply assembly binding for
15963         reflection only assemblies.
15964
15965         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15966         which contains information about assembly binding. Also
15967         declare signature for mono_config_parse_publisher_policy ()
15968         function, used to retrieve pub policy info.
15969         
15970         * mono-config.c:
15971         (publisher_policy_start): New static function used to parse publisher 
15972         policy config files.
15973         (publisher_policy_parser): New static MonoParseHandler containing 
15974         the functions used when parsing config files.
15975         (mono_config_parse_publisher_policy): New function for parsing
15976         publisher policy files.
15977         
15978 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15979
15980         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15981
15982         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15983
15984         * object.c (mono_get_addr_from_ftnptr): New helper function.
15985
15986         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15987
15988         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15989
15990 2005-08-19  Dick Porter  <dick@ximian.com>
15991
15992         * threads.c, threads.h, appdomain.c, appdomain.h,
15993         profiler-private.h, monitor.c, object.c, object-internals.h,
15994         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15995         store the thread ID, so it can hold a 64 bit value if needed.
15996
15997 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15998
15999         * reflection.c (mono_reflection_create_dynamic_method): Store the
16000         handle class into the method references as well so ldtoken works in
16001         dynamic methods.
16002
16003         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
16004         types.
16005
16006 2005-08-19  Ankit Jain <jankit@novell.com>
16007
16008         Fix #75847.
16009         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
16010           here rather than using the method signature of a arbitrary function
16011           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
16012           two arguments.
16013           Hack done with Harinath.
16014
16015 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16016
16017         * threadpool.c: disable printing stack traces when we get a exception
16018         in a threadpool thread. I need to do more testing to figure out which
16019         cases actually print this. Fixes bug #75828.
16020
16021 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16022
16023         * icall.c: there might be ignored whitespace after the last '='. This
16024         fixes length computation and bug #75840.
16025
16026 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
16027
16028         * assembly.c (mono_assembly_load_full): Consider .exe extension as
16029         well. Fixes #75809.
16030
16031         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
16032         #75784.
16033         
16034         * reflection.c (create_custom_attr_data): Ditto.
16035
16036 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
16037
16038         * locales.c, culture-info.h : removed RegionLCIDMap.
16039         * culture-info-tables.h : regenerated.
16040
16041 2005-08-16  Martin Baulig  <martin@ximian.com>
16042
16043         * class.c (mono_type_get_name_recurse): Small fix.
16044
16045 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
16046
16047         * locales.c : indentation fixie.
16048
16049 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
16050
16051         * object-internals.h,
16052           locales.h,
16053           locales.c,
16054           culture-info.h,
16055           icall.c : added RegionInfo table support.
16056         * culture-info-table.h : regenerated for region support.
16057
16058 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
16059
16060         * reflection.c (resolve_object): handle all kinds of MonoMethod
16061         including generic ones
16062
16063 2005-08-12  Ankit Jain <jankit@novell.com>
16064
16065         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
16066           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
16067
16068 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
16069
16070         * process.c: Don't close a thread handle when it's NULL. This is a
16071         workaround for bug #75733.
16072
16073 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
16076
16077 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
16078
16079         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
16080
16081 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16082
16083         * threadpool.c: if a work item in the thread pool has a callback that
16084         catches a exception, don't propagate it after invoking the callback.
16085         Fixes bug #75336.
16086
16087 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16088
16089         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
16090
16091         * class-internals.h (MonoCachedClassInfo): Add some new fields.
16092
16093         * class.c (mono_class_init): Load field info lazily in the AOT case.    
16094
16095         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
16096
16097 2005-08-03  Ankit Jain  <jankit@novell.com>
16098
16099         Fix #75683.
16100         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
16101           PInvoke calling convention is 0.
16102
16103 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
16104
16105         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
16106         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
16107
16108 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
16109
16110         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
16111         to handle threads not started by the GC (patch by Michael Meeks
16112         <michael.meeks@novell.com>).
16113
16114 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
16115
16116         * reflection.c: Make buffer used in emitting types larger for some
16117         big generic types (patch by Michal Moskal).
16118
16119 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * mono-debug.c: Fix some (not all) alignment problems.
16122
16123 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16124
16125         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
16126         Invoke mono_image_load_from_data_full passing the refonly
16127         parameter.
16128
16129         * assembly.c
16130         (mono_assembly_open_from_bundle): Add the refonly argument, 
16131         in order to pass it to other methods it calls to.
16132         (do_mono_assembly_open): Add the refonly argument, in order 
16133         to pass it to other methods it calls to.
16134         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
16135         the refonly parameter to it.
16136
16137         * image.c: Add loaded_images_refonly_hash and
16138         loaded_images_refonly_guid_hash to cache the reflection
16139         only loaded images.
16140         (mono_images_init): Initialize the hash tables used for
16141         caching the reflection only images.
16142         (load_modules): Invoke mono_image_open_full passing the refonly
16143         parameter to load the modules the correct way.
16144         (build_guid_table): Add the refonly argument, to re-build the 
16145         correct hash table.
16146         (do_mono_image_open): Added the refonly argument, in order to
16147         define it for the loaded image.
16148         (mono_image_loaded_full): New function, which receives an
16149         additional parameter to look for the image in the refonly or
16150         non-refonly section.
16151         (mono_image_loaded): Updated, using mono_image_loaded_full.
16152         (mono_image_loaded_by_guid_full): The same case that happens
16153         with mono_image_loaded_full.
16154         (mono_image_loaded_by_guid): Likewise.
16155         (register_image): Use the ref_only variable inside MonoImage
16156         to decide in which hash table store the current image.
16157         (mono_image_open_from_data_full): Rename
16158         mono_image_open_from_data to mono_image_open_from_data_full,
16159         adding the refonly argument, to define the ref_only variable 
16160         inside MonoImage.
16161         (mono_image_open_from_data): Return 
16162         mono_image_open_from_data_full.
16163         (mono_image_open_full): Rename mono_image_open to
16164         mono_image_open_full, receiving the new refonly argument,
16165         to pass it to inner methods.
16166         (mono_pe_file_open): Update this function, to open
16167         a MonoImage as a non-refonly image.
16168         (mono_image_close): Use the refonly variable inside
16169         MonoImage to remove the image from the correct caches.
16170
16171         * image.h: Add the signatures of mono_image_open_full,
16172         mono_image_open_from_data_full, mono_image_loaded_full,
16173         mono_image_loaded_by_guid_full.
16174
16175         * metadata-internals.h: Add the ref_only field to 
16176         MonoImage.
16177         
16178 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16179
16180         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
16181         Fix the last behavior, which used to load the assemblies and
16182         extract MonoReflectionAssemblyName information, instead of
16183         extract it from the metadata tables. Needed for Reflection
16184         Only assemblies.
16185         
16186 2005-07-29  Martin Baulig  <martin@ximian.com>
16187
16188         * mono-debug-debugger.c
16189         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
16190         not initialized.
16191
16192         * mono-debug.c
16193         (mono_debug_address_from_il_offset): Check whether we have
16194         debugging support before attempting to take the lock.
16195         (mono_debug_source_location_from_address): Likewise.
16196         (mono_debug_source_location_from_il_offset): Likewise.
16197         (mono_debug_il_offset_from_address): Likewise.
16198         (mono_debug_address_from_il_offset): Likewise.
16199
16200 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * class.c (mono_class_from_name_case): Add support for dynamic images.
16203         Fixes #75650.
16204
16205         * object.c (mono_class_compute_gc_descriptor): Add a workaround
16206         for #75479.
16207
16208 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16209         
16210         * reflection.c (mono_method_get_object): Fix warning.
16211
16212 2005-07-28  Martin Baulig  <martin@ximian.com>
16213
16214         * mono-debug.c
16215         (mono_debug_add_wrapper): Also write the wrapper type.
16216
16217 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16218
16219         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
16220         
16221         * class.c (mono_class_init): Avoid reading nested classes if the AOT
16222         data indicates the class has none.
16223
16224 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
16225
16226         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
16227         loader lock with the debugger lock. Prevents deadlocks for beagle.
16228
16229         Beagle can now run on an smp box for a weekend without any
16230         issues. Woohoo!
16231
16232 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
16235         in a module. Fixes #75629.
16236
16237 2005-07-26  Martin Baulig  <martin@ximian.com>
16238
16239         * mono-debug.c (mono_debug_add_wrapper): New static method.
16240         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
16241         interncall or a wrapper.
16242
16243         * mono-debug.h (MonoDebugWrapperData): New public typedef.
16244         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
16245         (MONO_DEBUGGER_VERSION): Bump to 51.
16246
16247         * mono-debug-debugger.c
16248         (mono_debugger_add_type): Removed this empty function.
16249         (mono_debugger_add_method): Likewise.
16250
16251 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16252
16253         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16254         before accessing method->slot.
16255
16256 2005-07-21  Jb Evain  <jbevain@gmail.com>
16257
16258         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16259         Fixes #75010.
16260
16261 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16264         #75587.
16265
16266 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16267
16268         * image.h image.c: Add mono_image_get_guid () API function.
16269
16270 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16271
16272         There were issues when multiple threads tried to load
16273         assemblies. A deadlock was created between assemblies_mutex and
16274         mono_domain_assemblies_lock. This fixes the issue by making the
16275         assembly ref counting be lock free. See bug 75586.
16276         
16277         * image.c (mono_image_close): The add ref function here was using
16278         Interlocked operations while the unref was using a mutex and a
16279         --. I don't think this was ever a bug that would be exposed in a
16280         non-pendantic way (ie, by an embedder doing a ref on one thread
16281         and an unref on another), but for the sake of correctness, this is
16282         now Interlocked.
16283
16284         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16285         (mono_assembly_load_reference): Call mono_assembly_addref rather
16286         than touching the refcount ourselves.
16287         (mono_assembly_close): Use InterlockedDecrement to unref the
16288         assembly. Don't acquire the lock unless it is actually needed.
16289
16290 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16291
16292         * class.c (mono_class_layout_fields): Fix calculation of has_references
16293         for generic types.
16294
16295 2005-07-12  Martin Baulig  <martin@ximian.com>
16296
16297         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16298
16299         * metadata.c
16300         (mono_type_hash): Provide better hashing for generic instances.
16301         (mono_generic_inst_hash): Improve hashing.
16302         (mono_generic_class_hash): Likewise.
16303
16304         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16305         generic instances.
16306
16307 2005-07-12  Martin Baulig  <martin@ximian.com>
16308
16309         * reflection.c (mono_reflection_create_runtime_class): Remove the
16310         hack for generic type definitions and non-`Run' assemblies.
16311         (mono_reflection_bind_generic_parameters): Also use
16312         `klass->wastypebuilder' to check for TypeBuilders.
16313
16314 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16315
16316         * class.c (mono_class_layout_fields): Fix calculation of has_references
16317         for generic types.
16318
16319         * class.c (inflate_generic_class): Fix a leak.
16320         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16321         for generic types.
16322
16323 2005-07-11  Martin Baulig  <martin@ximian.com>
16324
16325         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16326         on error.
16327
16328 2005-07-11  Martin Baulig  <martin@ximian.com>
16329
16330         * loader.c (find_method): Also lookup in
16331         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16332
16333 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16334
16335         * appdomain.c (mono_domain_unload): Don't free the error message
16336         before passing it to mono_get_exception_...
16337
16338         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16339         
16340 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16341
16342         * threads.c: try to better guess an available RT signal (bug #75387).
16343
16344 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16345
16346         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16347         and CACHE_OBJECT.
16348
16349 2005-07-07  Martin Baulig  <martin@ximian.com>
16350
16351         * class.c (mono_type_get_name_full): Return NULL for
16352         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16353         fixes #75408.
16354
16355 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16356
16357         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16358         exit the appdomain as well being aborted.
16359
16360         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16361         change back to the root domain after calling managed code. This enables
16362         appdomains using threadpools to be unloaded.
16363
16364 2005-07-07  Martin Baulig  <martin@ximian.com>
16365
16366         * class-internals.h
16367         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16368         into `MonoDynamicGenericClass' since we only need it for dynamic
16369         types.
16370
16371         * reflection.c (mono_class_bind_generic_parameters): We don't need
16372         to compute the `parent' here.
16373
16374 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16375
16376         * culture-info-table.h : regenerated.
16377
16378 2005-07-06  Martin Baulig  <martin@ximian.com>
16379
16380         * icall.c
16381         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16382
16383         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16384
16385 2005-07-06  Martin Baulig  <martin@ximian.com>
16386
16387         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16388         we're doing a signature-only comparision; fixes #74945.
16389
16390 2005-07-06  Martin Baulig  <martin@ximian.com>
16391
16392         * class-internals.h (MonoGenericClass): Moved some things out into
16393         a new `MonoInflatedGenericClass' type.  
16394         (MonoInflatedGenericClass): New type; the `klass' of a
16395         `MonoGenericClass' is now computed lazyly in
16396         mono_get_inflated_generic_class().      
16397
16398         * class.c (mono_get_inflated_generic_class): New public function.
16399         (mono_class_inflate_generic_method): Removed the unused
16400         `MonoClass *' argument.
16401         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16402         all the methods.
16403         (mono_class_create_generic): Make this static and merge it with
16404         mono_class_create_generic_2(); we're now called automatically from
16405         mono_get_inflated_generic_class().
16406
16407         * loader.c (mono_method_signature): Call
16408         mono_get_inflated_method() here.
16409
16410 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16413         type of fields with RVA.
16414
16415         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16416         for this pseudo class.
16417         (my_mono_class_from_generic_parameter): Likewise.
16418         (mono_class_init): Allow interfaces to have cctors.
16419
16420 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16421
16422         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16423         lazily for AOT methods.
16424
16425 2005-07-05  Martin Baulig  <martin@ximian.com>
16426
16427         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16428         returns FALSE for a successful match, not TRUE.
16429
16430 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16431
16432         * loader.c (mono_method_get_index): Optimize this a bit.
16433
16434 2005-07-04  Martin Baulig  <martin@ximian.com>
16435
16436         * class.c
16437         (class_compute_field_layout): Move the check for generic type
16438         definitions into mono_class_layout_fields().  Fixes #74684.
16439         (mono_class_from_generic_parameter): Correctly compute
16440         `klass->parent'; fixes #75457.
16441
16442         * reflection.c (register_assembly, register_module): Make sure
16443         `domain->rejobject_hash' is already created.
16444
16445 2005-07-02  Martin Baulig  <martin@ximian.com>
16446
16447         * class-internals.h
16448         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16449         `MonoDynamicGenericClass'.      
16450
16451 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16452
16453         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16454         returned by a field getter is null, since null is a valid value.
16455
16456 2005-07-01  Martin Baulig  <martin@ximian.com>
16457
16458         * reflection.c (mono_reflection_generic_class_initialize): Update
16459         the `dgclass->fields [i].parent' to the correct class.
16460         (mono_image_get_fieldref_token): Use the declaring type, not the
16461         reflected type.
16462
16463 2005-07-01  Martin Baulig  <martin@ximian.com>
16464
16465         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16466
16467 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16468
16469         * threads.c (thread_cleanup): assert that thread != NULL
16470         (wait_for_tids_or_state_change): We were using the wrong variable
16471         when accessing wait->threads. `i' was always out of the bounds of
16472         the array.
16473
16474 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16475
16476         * loader.c: map user32 and kernel32 to libMonoSupportW
16477
16478 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16479
16480         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16481
16482 2005-06-28  Martin Baulig  <martin@ximian.com>
16483
16484         * loader.c (method_from_methodspec): Fix #75334.
16485
16486 2005-06-28  Martin Baulig  <martin@ximian.com>
16487
16488         Fix #74953 - Arrays now implement the generic IList<T> interface
16489         on the 2.0 platform.
16490
16491         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16492
16493         * reflection.c (mono_class_bind_generic_parameters): New public
16494         function; similar to mono_reflection_bind_generic_parameters(),
16495         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16496
16497         * domain.c (mono_init_internal): Try to initialize.
16498         `mono_defaults.generic_array_class' here; this'll only succeed if
16499         we're using the 2.0 corlib.
16500
16501         * icall.c
16502         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16503         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16504         (mono_lookup_internal_call): Added support for nested classes.
16505
16506         * loader.c
16507         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16508         we're an interncall and have generic arguments.
16509
16510         * class.c
16511         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16512         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16513         instance of System.Array.InternalArray<T> for arrays, so they
16514         implement the generic IList<T> interface.
16515
16516 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16517
16518         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16519         (chastamar@yahoo.com). Fixes #75374.    
16520
16521 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16522
16523         * culture-info-table.h: regenerated.
16524
16525 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16526
16527         * icall.c: handle spaces correctly for base64 strings.
16528
16529 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16530
16531         * *.c: Kill some warnings.
16532
16533 2005-06-23  Duncan Mak  <duncan@novell.com>
16534
16535         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16536         that this builds on Solaris 10 (x86).
16537
16538 2005-06-23  Martin Baulig  <martin@ximian.com>
16539
16540         * class.c
16541         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16542         generic type definitions.
16543
16544 2005-06-23  Martin Baulig  <martin@ximian.com>
16545
16546         Fix #75331.
16547
16548         * metadata.c (mono_class_get_overrides): Renamed to
16549         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16550         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16551         pass it to mono_get_method_full().
16552
16553 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16554
16555         * reflection.c (mono_reflection_create_runtime_class): take the
16556         mono_domain_lock in this method. Prevents deadlocks
16557
16558 2005-06-22  Martin Baulig  <martin@ximian.com>
16559
16560         * loader.c (method_from_methodspec): Fix #75330.
16561
16562 2005-06-22  Martin Baulig  <martin@ximian.com>
16563
16564         * reflection.c (type_get_qualified_name): Use
16565         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16566         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16567         argument; use it if we don't have an assembly name.
16568
16569 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16570
16571         * object.c: In mono_message_init, set "copy out" flag for in
16572         parameters with the [Out] flag.
16573
16574 2005-06-21  Martin Baulig  <martin@ximian.com>
16575
16576         * class.c
16577         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16578         and MONO_TYPE_PTR.
16579
16580 2005-06-21  Martin Baulig  <martin@ximian.com>
16581
16582         * class.c (mono_class_init): Don't initialize `class->fields' for
16583         generic instances since they're initialized again in
16584         compute_field_layout(). 
16585         (compute_field_layout): Set the field's `generic_info' here; fix
16586         #75320. 
16587
16588 2005-06-21  Martin Baulig  <martin@ximian.com>
16589
16590         * class-internals.h
16591         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16592
16593         * metadata.c (mono_metadata_generic_method_equal): Also
16594         distinguish the `generic_class'; fixes #75334.
16595
16596 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16597
16598         * domain.c:
16599         * appdomain.c:
16600         * domain-internals.h:
16601         * reflection.c: 'domain_assemblies' field is now protected by its own
16602         lock. Don't call into managed code to run the AssemblyLoad event if we
16603         now there are no registered delegates for it.
16604
16605 2005-06-20  Martin Baulig  <martin@ximian.com>
16606
16607         * class.c (mono_class_is_assignable_from): Use a custom version of
16608         mono_class_has_parent() to make things work for generic instances;
16609         fix #75300.
16610
16611 2005-06-20  Martin Baulig  <martin@ximian.com>
16612
16613         * loader.c (method_from_methodspec): Apply a patch from
16614         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16615
16616 2005-06-20  Martin Baulig  <martin@ximian.com>
16617
16618         * class.c (mono_class_init): Reverted Zoltan's last change; it
16619         breaks generics.
16620
16621 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16622
16623         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16624
16625 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16626
16627         * socket-io.c: fix the index in the socket array for writable/error
16628         sockets. Fixes bug #75306.
16629
16630 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16631
16632         * class.c (mono_class_init): Allow interfaces to have static ctors.
16633
16634 2005-06-17  Martin Baulig  <martin@ximian.com>
16635
16636         * loader.c (method_from_methodspec): Use `context->container' when
16637         parsing the `gmethod->inst'.
16638
16639 2005-06-17  Martin Baulig  <martin@ximian.com>
16640
16641         * class.c (mono_type_get_name_recurse): Don't add the assembly
16642         name for type arguments.
16643
16644 2005-06-15  Martin Baulig  <martin@ximian.com>
16645
16646         * reflection.c (mono_image_get_inflated_method_token): Encode
16647         correct klass; fixes #75260.
16648
16649 2005-06-13 Michal Moskal <malekith@nemerle.org>
16650
16651         * icall.c: Make GetCorrespondingMethod/Constructor take
16652         MonoReflectionMethod method not MonoMethod. Removed
16653         MonoType.GetCorrespondingField, and make
16654         MonoGenericType.GetCorrespondingField take name not
16655         MonoClassField.
16656
16657 2005-06-13  Michal Moskal <malekith@nemerle.org>
16658
16659         * reflection.c (field_encode_signature, encode_locals):
16660          Make sizes of buffers for types larger (for big generic types).
16661          (create_generic_typespec,
16662          mono_reflection_sighelper_get_signature_local,
16663          mono_reflection_sighelper_get_signature_field):
16664          Add asserts for too small buffers.
16665
16666 2005-06-15  Martin Baulig  <martin@ximian.com>
16667
16668         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16669         if our parent is not a dynamic type.
16670
16671 2005-06-15  Martin Baulig  <martin@ximian.com>
16672
16673         * class-internals.h (MonoTypeNameFormat): New enum.
16674
16675         * class.c
16676         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16677         (mono_type_get_full_name): Removed.
16678         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16679         argument instead of the boolean's.
16680
16681         * icall.c (ves_icall_System_MonoType_getFullName):
16682         Added `gboolean assembly_qualified'.    
16683
16684         * reflection.h
16685         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16686
16687         * reflection.c (mono_reflection_parse_type): Parse the new type
16688         name format.
16689
16690 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16691
16692         * icall.c: no need to convert from utf16 to utf8 and then back again
16693         after the call to GetLogicalDrives.
16694
16695 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16696
16697         * icall.c: frombase64. Fix problems exposed by new tests.
16698
16699 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16700
16701         * icall.c: added internal calls for converting char [] and strings in
16702         base64 into byte [].
16703
16704 2005-06-10  Martin Baulig  <martin@ximian.com>
16705
16706         * class.c (mono_class_create_generic_2): Read the nested classes
16707         from the metadata rather than from `gklass->nested_classes' since
16708         `gklass' might not be initialized yet.
16709
16710 2005-06-09  Duncan Mak  <duncan@novell.com>
16711
16712         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16713         all public headers. Fixes #74919.
16714
16715 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16716
16717         * domain.c: The key for proxy_vtable_hash is now a pointer
16718         array. Added new GHashFunc and GCompareFunc functions for this.
16719
16720         * class.h: The list of interfaces in MonoRemoteClass is known in
16721         advance and can't grow (we create a new MonoRemoteClass if needed),
16722         so now the interface array can be allocated together with
16723         MonoRemoteClass.
16724         
16725         * object.c: Added a new method create_remote_class_key.
16726         Fixed mono_remote_class so it does not depend on
16727         mono_upgrade_remote_class.
16728         Removed extend_interface_array.
16729         Added new method clone_remote_class(), which makes a copy of a remote
16730         class and adds a new interface or class to it.
16731         mono_upgrade_remote_class() now creates a new remote class (or gets
16732         it from the cache) if an vtable upgrade is needed. In this way
16733         we make sure that other objects sharing the same remote class
16734         don't get the new vtable with unwanted interfaces.
16735         
16736         * object-internals.h:
16737         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16738         
16739         * marshal.c: Track changes in mono_upgrade_remote_class().
16740
16741 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16742         * icall.c: Add runtime methods for obtaining members of inflated
16743         class, which were created from supplied non-inflated members. It
16744         is used in internal Get{Method,Constructor,Field} methods in
16745         System.Type
16746
16747 2005-06-09  Martin Baulig  <martin@ximian.com>
16748
16749         * reflection.c
16750         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16751
16752 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16753         * reflection.c (mono_image_basic_init): Define
16754         Version in MonoDynamicAssembly. 
16755         
16756 2005-06-08  Martin Baulig  <martin@ximian.com>
16757
16758         Fix #75136.
16759
16760         * loader.c
16761         (mono_method_signature_full): New public method; takes a
16762         `MonoGenericContext *'.
16763         (find_method): Use mono_method_signature_full() and pass the
16764         klass'es context to it.
16765
16766         * class.c (mono_class_is_inflated_method): Use
16767         mono_method_signature_full() and pass the context to it.
16768
16769 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16770
16771         * object.c: add proper locking in mono_remote_class_vtable(),
16772         fixes possible memory corruption.
16773
16774 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16775
16776         * marshal.c (mono_remoting_marshal_init): set
16777         initialized after initialization.
16778
16779 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16780
16781         * locales.c : hush.
16782
16783 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16784
16785         * object.c (extend_interface_array): fix really silly
16786         memory corrupting / comparison bug.
16787
16788 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16789
16790         * reflection.c: Functions added to support the creation
16791         of CustomAttributeData, which includes Attribute data
16792         used by ReflectionOnly methods.
16793
16794         * reflection.h:  mono_reflection_get_custom_attrs_data and
16795          mono_custom_attrs_data_construct added (functions exposed).
16796
16797          * icall.c: Added mono_reflection_get_custom_attrs_data
16798          as icall.
16799         
16800 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16801
16802         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16803         lupus's request.
16804
16805 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16806
16807         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16808
16809         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16810         dynamic DllImportAttribute.
16811
16812         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16813         dynamic DllImportAttribute.
16814
16815         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16816         Fixes #75162.
16817
16818 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16819
16820         * threads.c: avoid segfault when an unstarted thread is aborted.
16821
16822 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16823
16824         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16825         Returns the name and version of the runtime for reporting.
16826
16827 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16828
16829         * appdomain.c: bump corlib version.
16830         * object-internals.h: new field in MonoReflectionAssembly.
16831
16832 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16833
16834         * object-internals.h: Carlos forgot to add this field.
16835
16836 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16837
16838         * icall.c: Added create_version to create instances
16839         of Version of MonoReflectionAssemblyName. This change helps
16840         the AssemblyName tests to keep running fine.
16841         
16842 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16843   
16844         * object.c (mono_method_return_message_restore): A somehow less
16845         intrusive fix for #75138.
16846
16847 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16848
16849         * object.c (mono_method_return_message_restore): Fix computation
16850         of expected number of out args.
16851
16852 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16853
16854         * reflection.c (mono_image_get_method_info): Fix the case when the
16855         charset is empty.
16856
16857 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16858
16859         * object.c: Added missing null check in
16860           mono_method_return_message_restore.
16861
16862 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16863
16864         * reflection.c (mono_image_get_method_info): Handle the case when
16865         dllentry is empty.
16866
16867 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16868
16869         * object.c: When creating the vtable for a proxy, take into account
16870         all inherited interfaces, not only the ones registered in
16871         iclass->interfaces. This fixs bug #74996.
16872         Also, in mono_method_return_message_restore, verify that the array
16873         of out args has the expected lengh.
16874
16875 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16876
16877         * socket-io.c: update the timeout in Poll when the call is interrupte.
16878
16879 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16880
16881         * socket-io.c: support abort/suspend in Select_internal after last
16882         change.
16883
16884 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16885
16886         * threadpool.c: remove warning.
16887
16888 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16889
16890         * icall.c:
16891         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16892         removing the 1024 limit from select(). Runtime part of the fix for
16893         bug #71203.
16894
16895 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16896
16897         * socket-io.c: when resolving the addresses for the same
16898         host returned by gethostname(), get the local IPs from the interface
16899         list. Loopback addresses are discarded if the are interfaces up with
16900         non-loopback ones. Fixes bug #63265.
16901
16902 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16903
16904         * appdomain.c, verify.c, object-internals.h, reflection.c:
16905         bumped corlib number to 36, and added new extra_flags field
16906         to ReflectionMethodBuilder and friends.  Fixes #75060.
16907
16908 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16909
16910         * gc.c: register a new weak link only if the object is non-null
16911         (fixes bug#75047).
16912
16913 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16914
16915         * culture-info.h : short time pattern too.
16916
16917 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16918
16919         * culture-info.h : expand long time pattern string length.
16920
16921 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16922
16923         * culture-info-table.h : update (more French date format; #72788).
16924
16925 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16926
16927         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16928         the method is static. Fixes #75029.
16929
16930 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16931
16932         * reflection.c: Update the table_idx field of method builders after
16933         saving the module, since it can change. This is a workaround for
16934         bug #74914. 
16935
16936 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16937
16938         * culture-info-table.h : update (additional French date format).
16939
16940 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * icall.c (ves_icall_type_Equals): Revert last change.
16943         
16944         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16945
16946         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16947
16948 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16949
16950         * class-internals.h: Added executioncontext_class field to 
16951         MonoDefaults structure.
16952         * domain.c: Cache System.Threading.ExecutionContext class in 
16953         mono_defaults.
16954         * object.c: Capture the ExecutionContext for asynchroneous calls in
16955          mono_async_result_new.
16956         * object-internals.h: Added execution_context and original_context 
16957         fields to MonoAsyncResult. Added execution_context to MonoThread.
16958         * security-manager.c|.h: Added mono_get_context_capture_method to 
16959         return the capture method (if required by the security manager or by
16960         the framework version used).
16961         * threadpool.c: Apply capture (if present) ExecutionContext in 
16962         mono_async_invoke and revert to original context after it completes.
16963
16964 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16965
16966         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16967
16968 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16969
16970         * culture-info-table.h : zh-CHT related workaround.
16971
16972 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * marshal.c (emit_marshal_custom): Add some error checking and call the
16975         methods in the ICustomMarshaler interface. Fixes #74875.
16976         
16977         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16978         native->managed wrappers.
16979
16980 2005-05-12  Martin Baulig  <martin@ximian.com>
16981
16982         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16983         here and use the loader lock.
16984
16985         * mono-debug.c: Properly lock when the debugger is not attached.
16986         (mono_debug_init): Release the initial lock if we're not running
16987         in the debugger.
16988
16989 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16990
16991         * marshal.c (emit_marshal_custom): Pass through NULL values without
16992         calling the custom marshalling routines.
16993
16994         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16995         conversion in structures. Fixes #74882.
16996
16997 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16998
16999         * culture-info-table.h : zh-* cultures were missing.
17000
17001 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
17002
17003         * threads.c: Added a new event background_change_event which is signaled
17004         when a thread changes its background mode.
17005         Moved here several checks previously done in managed code. The checks
17006         require the thread lock, and using the thread lock in managed code
17007         can result in deadlocks.
17008         Merged Start_internal and Thread_internal into a single method. Now 
17009         Thread_internal does all work of creating and starting a thread.
17010         Added icalls for setting and getting the state of the object. Moved from
17011         managed code to avoid locking there.
17012         Added wait_for_tids_or_state_change() which is called instad of
17013         wait_for_tids when waiting for non-backround threads to end. This method
17014         will return if one of the threads ends or the background_change_event
17015         is signaled.
17016         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
17017         the background mode. This method signals the background_change_event
17018         event.
17019         * icall.c:
17020         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
17021         removed Start_internal.
17022         
17023 2005-05-11  Martin Baulig  <martin@ximian.com>
17024
17025         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
17026         to order of some fields to get proper alignment on 64-bit machines.
17027
17028 2005-05-11  Martin Baulig  <martin@ximian.com>
17029
17030         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
17031         changes as they're broken and completely fuck up the debugger.
17032
17033         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
17034
17035 2005-05-10  Martin Baulig  <martin@ximian.com>
17036
17037         * reflection.c (mono_reflection_generic_class_initialize): Don't
17038         call mono_class_setup_parent() here.
17039
17040 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17041
17042         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
17043         send/receive timeout use an integer in milliseconds. We were using a
17044         struct timeval.
17045
17046 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17047
17048         * locales.c:
17049         (internal_get_cultures): reserve the first slot of the array for the
17050         InvariantCulture, which will be filled in managed code.
17051
17052 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
17053
17054         * reflection.c (mono_image_fill_module_table): Initialize the
17055         GENERATION field as well.
17056
17057 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17058
17059         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
17060         Monitor.Enter on the object.
17061
17062 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17063
17064         * threads.c: Enable the wait for running threads when exiting.
17065         * icall.c: Suspend all threads before exiting.
17066
17067 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17068
17069         * assembly.c (mono_assembly_load_reference): Fix warning.
17070
17071 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17072
17073         * threadpool.c: changed the default number of threads per cpu. From now
17074         on, the default will be 20 + (5 * number of cpus) instead of 50.
17075
17076 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * loader.c (mono_method_get_signature_full): Add locking here.
17079
17080 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
17081
17082         * appdomain.c: Moved methods for parsing and freeing assembly
17083         names to assembly.c.
17084         * assembly.c, domain-internals.h: Created public methods for parsing
17085         assembly names. Fixed mono_assembly_load_with_partial_name:
17086         it now finds the best match, taking into account the version,
17087         token and culture specified in the partial name. Also return
17088         the latest version if no version information is specified.
17089
17090 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
17091
17092         * threadpool.c: replace check for SocketAsyncCall class.
17093
17094 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17095
17096         * threadpool-internals.h:
17097         * Makefile.am: added threadpool-internals.h
17098
17099         * threadpool.c: call mono_unhandled_exception on exceptions not handled
17100         that happen in threadpool threads (tested on MS).
17101         (mono_thread_pool_remove_socket): new function that dispatch any pending
17102         AIO call on a socket that is closing. By now only epoll really needs it,
17103         as select/poll wake up when the socket closes.
17104
17105
17106         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
17107
17108 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
17109
17110         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
17111
17112 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
17113
17114         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
17115
17116 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
17117
17118         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
17119         has an abort request, convert it into a suspend request.
17120
17121 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
17122
17123         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
17124         warning for the usage of `UnmanagedFunctionPointerAttribute' which
17125         is not supported yet.
17126
17127 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17128
17129         * image.c: register assemblies loaded from data (bundles) in the loaded
17130         assemblies hash. Fixes bug #74772.
17131
17132 2005-04-29  Martin Baulig  <martin@ximian.com>
17133
17134         * class.c (mono_type_get_name_recurse): Update to the new naming
17135         schema from the latest .NET 2.x beta2.
17136         (mono_class_setup_vtable_general): If we're a generic instance,
17137         copy the vtable from our generic type definition and inflate all
17138         the methods in it.
17139
17140         * loader.c (find_method): Update to the new naming schema from the
17141         latest .NET 2.x beta2.
17142
17143 2005-04-29  Raja R Harinath  <harinath@gmail.com>
17144
17145         * class.c (mono_class_init): Add a mono_loader_unlock to the
17146         #74734 fix.
17147
17148 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17149
17150         * icall.c (ves_icall_System_Environment_Exit): Remove the 
17151         suspend_all_other_threads () call for the time being, since it can hang.
17152
17153         * threads.c (mono_thread_manage): Similarly, disable the waiting for
17154         the background threads to exit, since it can also hang.
17155
17156         * class.c (mono_class_init): Applied patch from Ankit Jain 
17157         (radical@gmail.com). Avoid pending init errors when a field refers
17158         to a nested class using a typeref. Fixes #74734.
17159
17160         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
17161         this for dynamic modules.
17162
17163 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17164
17165         * threads.c: don't wait for threads that are in the process of aborting
17166         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
17167         and waiting for background threads to finish. This makes xsp and
17168         mod-mono-server exit without random length delays and/or hangs.
17169
17170 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17171
17172         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
17173
17174 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
17175
17176         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
17177         dynamic types to prevent infinite loops. Fixes #74727.
17178
17179         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
17180         ..._is_assignable_to.
17181
17182 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
17183
17184         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
17185
17186 2005-04-25  Martin Baulig  <martin@ximian.com>
17187
17188         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
17189
17190         * domain.c
17191         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
17192
17193         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
17194
17195         * reflection.c (build_compressed_metadata): Set metadata header
17196         version to 2.0.
17197
17198 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17199
17200         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
17201         number into an integral and a decimal part. Fixes #70473.
17202
17203         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
17204
17205 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
17206
17207         * culture-info-table.h : reflected the latest locale-builder output.
17208
17209 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17210
17211         * threadpool.c: check for SuspendRequested too when deciding if
17212         mono_thread_interruption_checkpoint should be called.
17213
17214 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17215
17216         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
17217         * threads.c: remove interruption_mutex and use Interlocked instead. When
17218         suspending all the threads, wait for all the suspended events at once.
17219         If we're shutting down and get an APC that is going to be queued,
17220         call mono_thread_execute_interruption immediately, as the thread might
17221         be sleeping on a pthread condition or mutex.
17222
17223         * icall.c: call mono_runtime_set_shutting_down before suspending the
17224         threads.
17225
17226         Fixes bug #74693. And now xsp is happier when exiting.
17227
17228 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17229
17230         * loader.c (mono_stack_walk): Fix #74690.
17231
17232 2005-04-22  Martin Baulig  <martin@ximian.com>
17233
17234         * mono-debug.h (MonoDebugMethodJitInfo): Added
17235         `MonoDebugMethodJitInfo *jit'.
17236
17237         * mono-debug.c (mono_debug_read_method): Cache the
17238         MonoDebugMethodJitInfo in `address->jit'.
17239         (mono_debug_free_method_jit_info): New public method.
17240
17241 2005-04-22  Martin Baulig  <martin@ximian.com>
17242
17243         * class.c (mono_class_is_assignable_from): Disallow
17244         type parameter -> interface.
17245
17246 2005-04-21  Dick Porter  <dick@ximian.com>
17247
17248         * threads.c (mono_thread_create): Turn an assertion into an error.
17249
17250 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17251
17252         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17253         
17254         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17255         Fix some gcc 4.0 warnings.
17256
17257 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17258
17259         * file-io.c: fix alt dir separator char on unix systems
17260         and cleanup (fixes bug #71214).
17261
17262 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17263
17264         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17265         a call to a remote domain, since the method may be an
17266         interface method in the client domain. This fixes bug #74192.
17267
17268 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17269
17270         * threadpool.c: recv/send are now performed before going back to managed
17271         code to save one transition.
17272
17273 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17274
17275         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17276
17277         * metadata/threadpool.c: removed hack to workaround the bug above.
17278
17279         Fixes bug #74618.
17280
17281 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17282
17283         * reflection.c reflection.h: Fix handling of parameter defaults in
17284         dynamic methods. Also fixes handling of parameter attributes.
17285         Fixes #74609.
17286
17287         * mono-debug.c (mono_debug_close_image): Fix warning.
17288
17289 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17290
17291         * socket-io.h: replaced old unused field with new 'blocking'.
17292         * threadpool.c: restore socket blocking state on windows(tm).
17293
17294 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17295
17296         * icall.c: don't return the codebase in the AssemblyName[] returned by
17297         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17298         * object-internals.h: Removed FIXME (fields were presents) and fixed
17299         versioncompat declaration.
17300
17301 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17302
17303         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17304         not closed, so don't cleanup when it happens.
17305
17306 2005-04-13  Chris Toshok  <toshok@ximian.com>
17307
17308         * mono-debug-debugger.h: change prototype for
17309         mono_debugger_lookup_type.
17310
17311         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17312         this function, although it should probably be named
17313         mono_debugger_init_type.
17314
17315 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17316
17317         * threadpool.c: fix non-AIO case.
17318
17319 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17322         the built-in profiler to measure just JIT compilation times.
17323
17324 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17325
17326         * threadpool.c: the epollfd might be closed by another thread at
17327         any time, so ignore EBADF at treat it as a "we're closing" sign.
17328
17329 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17330
17331         * threadpool.c: release the semaphores with a count equals to the number
17332         of working threads in both IO and regular pools. Fixed typo that messed
17333         up the count of IO pool threads. Don't initialize the pipe handles if
17334         we're using epoll.
17335
17336 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17337
17338         * threadpool.c: some systems don't like a NULL when deleting the socket
17339         from epoll.
17340
17341 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17342
17343         * threadpool.c: fix semaphore allocation.
17344
17345 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17346
17347         * threadpool.c: added epoll() based implementation for asynchronous IO
17348         that is used instead of the default poll() when available.
17349         It can be disabled by setting MONO_DISABLE_AIO.
17350
17351 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17352
17353         * threadpool.c: windows needs 'closesocket' and instead of returning
17354         0 when the stream is closed while in select, it returns -1. Fixes bug
17355         #74573.
17356
17357 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17358
17359         * class.c (class_compute_field_layout): Fix the regression caused by
17360         the previous try.
17361
17362 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17363
17364         * threadpool.c: separate pool for socket async. IO.
17365         * threadpool.h: mono_max_worker_threads is not a global any more.
17366
17367 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * class.c (class_compute_field_layout): Fix #74549.
17370
17371 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17372
17373         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17374         use 2 connected sockets instead.
17375
17376 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17377
17378         * mono-config.c: Add new entry point for mkbundle
17379         mono_config_parse_memory. 
17380
17381 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17382
17383         * threadpool.c: removed another unused function.
17384
17385 2005-04-08  Ankit Jain  <radical@corewars.org>
17386
17387         * reflection.c (get_default_param_value_blobs): Add 'types'
17388         parameter to get the types encoded in the constant table.
17389         (mono_param_get_objects): Use the type from the constant table,
17390         not the type of the parameter, when creating default values.
17391         Handle null default values correctly.
17392
17393 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17394
17395         * file-io.c:
17396         * file-io.h:
17397         * threadpool.c:
17398         * threadpool.h:
17399         * icall.c:
17400         * socket-io.c: removed dead code for async IO.
17401
17402 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17403
17404         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17405
17406         * threadpool.c: intercept socket async. calls and pass them to a thread
17407         that is polling and dispatching the job items to the threadpool as
17408         socket become ready. Fixes bugs #71217, #71933.
17409
17410         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17411         between char and short/ushort arrays.
17412
17413         * socket-io.c: remove dead code.
17414
17415 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17416
17417         * locales.c,
17418           icall.c : removed InternalToUpper_Comp() and
17419           InternalToLower_Comp().
17420
17421 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17422
17423         * char-conversions.h : The tables were incorrectly generated. Should
17424           be generated against invariant culture.
17425
17426 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17427
17428         * object.c (mono_runtime_invoke_array): Fix return value when 
17429         passing pre-created valuetype objects to ctors.
17430
17431         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17432         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17433         Fixes #74338.
17434
17435 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17436
17437         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17438         only used with --security and hides the wrong corlib version error.
17439
17440 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17441
17442         * class.c: Changed mono_class_name_from_token so that types
17443         outside of a namespace don't have an initial period.  Improved
17444         the g_warning message used in _mono_class_get when loading
17445         fails.
17446         * assembly.c: In mono_assembly_load_reference, when an assembly
17447         can't be found, "No such file or directory" is misleading and
17448         unhelpful because a few paths were checked for the presence of
17449         the assembly.  When that happens (ENOENT), display a nicer
17450         message indicating the directories that were searched.  In all
17451         cases, the warning is made easier to read for non-hackers.
17452
17453 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17454
17455         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17456         project/solution.
17457         * appdomain.h|domain.c: Removed inline from functions.
17458         * appdomain.c: Reduced warnings when compiling on windows.
17459         * icall.c: Fixed output_debug declaration to gunichar2*.
17460         * mono-config.c: Reduced warnings when compiling on windows.
17461         * rand.c: Added missing "windows.h". Added missing return value.
17462         * rawbuffer.c: Added missing winsock2.h for windows.
17463         * sysmath.h: Added mono-compiler.h header to allow/ease 
17464         compilation with non-GCC compilers.
17465         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17466         Removed cast warnings.
17467
17468         Adapted from the work of J Lothian (for VC6).
17469
17470 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17471
17472         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17473         from default_path.
17474
17475 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17476
17477         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17478         the 2.0 profile.
17479
17480 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17481
17482         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17483         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17484         stuff, and it would probably use $(prefix)/share rather than
17485         $(prefix)/lib.
17486
17487 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17488
17489         * console-io.c: added 2 includes that might be missing.
17490
17491 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17492
17493         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17494         profile.
17495
17496         * reflection.c (create_custom_attr): Allocate the params array using
17497         alloca so it gets GC tracking.
17498
17499 2005-03-23  Chris Toshok  <toshok@ximian.com>
17500
17501         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17502         out some spew.
17503
17504 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17505
17506         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17507         changes to pick up any changes in prefix, etc.
17508
17509 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17510
17511         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17512         
17513         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17514         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17515
17516 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * class-internals.h object-internals.h class.c reflection.c: Extend the
17519         mono_lookup_dynamic_token () function to return the class of the
17520         token as well. 
17521
17522         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17523         well. Fixes #73848.
17524
17525 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17526
17527         * security-manager.c: Skip inheritance checks for intra-corlib
17528         class inheritance and method overrides. This skips a lot of checks
17529         and (anyway) permissions cannot work until corlib is loaded.
17530
17531 2005-03-23  Martin Baulig  <martin@ximian.com>
17532
17533         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17534         MONO_TYPE_GENERICINST.  
17535
17536 2005-03-23  Martin Baulig  <martin@ximian.com>
17537
17538         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17539
17540 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17541
17542         * class.c: added locking comments to some functions.
17543         Cache the interface offsets arrays (saves about 20 KB
17544         of runtime memory in a typical app).
17545         Reduce the time overhead in mono_class_setup_supertypes ().
17546
17547 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17548
17549         * icall.c: speedup and fix leaks in GetMethodsByName and
17550         GetPropertiesByName.
17551
17552 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17553
17554         * reflection.c: some locking fixes.
17555
17556 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17557
17558         * metadata.c: added missing break in case statement.
17559
17560 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17563         typedbyref return values. Fixes #73941.
17564
17565 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17566
17567         * security-manager.c|h: Added demandunmanaged method and 
17568         suppressunmanagedcodesecurity class to MonoSecurityManager.
17569         Renamed aptc class to allowpartiallytrustedcallers.
17570
17571 2005-03-17  Martin Baulig  <martin@ximian.com>
17572
17573         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17574
17575 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17576
17577         * file-io.c: disabled file async. IO using aio_*. It uses the
17578         threadpool now. Workaround for bug #73718.
17579
17580 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17581
17582         * assembly.h, mono-config.c: added code to deal with bundled configs
17583         for bundled assemblies.
17584
17585 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17586
17587         * *.c, private.h: cleanup, removing old private.h header file.
17588
17589 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17590
17591         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17592         and throw_on_unmappable_char attributes.
17593
17594 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17595
17596         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17597         _ProcessName_internal.
17598
17599 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17600
17601         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17602         #73631.
17603
17604         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17605         are no longer used.
17606
17607 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17608
17609         * object.c (compute_class_bitmap): Add support for generics. Fixes
17610         #73527.
17611
17612 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17615
17616 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17617
17618         * filewatcher.c: commented out the code for windows watcher, as we don't
17619         use it (we use the managed implementation instead).
17620
17621 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17622
17623         * object-internals.h (MonoThread): Remove 'unused1' field.
17624
17625         * appdomain.c: Bump corlib version.
17626
17627         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17628
17629         * reflection.c (mono_reflection_create_runtime_class): Remove the
17630         AssemblyBuilder.Save optimization since it causes too many problems.
17631
17632 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17633
17634         * exception.c|h: Added mono_get_exception_reflection_type_load to
17635         create a ReflectionTypeLoadException object.
17636         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17637         to return NULL is a InheritanceDemand fails during reflection. Updated
17638         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17639         ReflectionTypeLoadException if an InheritanceDemand fails during 
17640         reflection. Added icall mapping for GetLinkDemandSecurity.
17641         * security-manager.c|h: Added ves_icall_System_Security_
17642         SecurityManager_GetLinkDemandSecurity internal call to return the
17643         class and methods permissions set for a LinkDemand. Removed unused
17644         fields in MonoSecurityManager.
17645
17646 2005-03-10  Martin Baulig  <martin@ximian.com>
17647
17648         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17649         it's a generic instance.
17650
17651 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * reflection.c (mono_get_object_from_blob): Applied patch from
17654         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17655
17656         * class.c (mono_class_is_assignable_from): Another try at fixing 
17657         #73469 without breaking anything.
17658
17659 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17660
17661         * class.c: (mono_class_is_assignable_from): Revert the last changes
17662         since they don't work with generics.
17663         
17664         * class.c (mono_class_is_assignable_from): Fix build bustage.
17665
17666         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17667         the managed IsAssignableFrom method. Fixes #73469.
17668
17669         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17670         function.
17671
17672 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17673
17674         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17675         memory when the remoting callback does not sets the out arguments.
17676         Fixes #73007.
17677
17678         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17679         by mistake.
17680
17681         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17682
17683         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17684
17685         * appdomain.c: Bump corlib version.
17686
17687 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17688
17689         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17690         function.
17691
17692         * threads.c (mono_thread_attach): Detect threads which are not started
17693         by the GC pthread wrappers.
17694
17695 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17696
17697         * icall.c: Added new icall for RNG.
17698         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17699         single handle on Linux to access /dev/urandom and fix #73183.
17700
17701 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17702
17703         * object.c: setting the new vtable in a transparent proxy object must
17704         not change the GC descriptor.
17705
17706 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17707
17708         * object.c: fixed compilation without GCJ support.
17709         * reflection.c: for runtime-created types ensure klass->has_references
17710         is correct (bug #73215).
17711
17712 2005-03-02  Martin Baulig  <martin@ximian.com>
17713
17714         * class.c (mono_class_is_assignable_from): Make this work if
17715         `oklass' is a generic instance; fixes #72831.
17716
17717 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17718
17719         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17720         with hasthis set.
17721         
17722         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17723
17724         * marshal.c: Reorganize native->managed marshalling code to also use
17725         the emit_marshal_... functions.
17726
17727 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17728
17729         * object.c: typed allocs have issues with bitmap sizes > 30,
17730         so check for max_set >= 30.
17731
17732 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17733
17734         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17735         managed code. Fixes #73012.
17736
17737         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17738
17739         * metadata.c reflection.c: Load/Emit elem_mult as well.
17740         
17741         * metadata.h (MonoMarshalSpec): Add comment.
17742
17743         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17744
17745         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17746         num_elem to -1 if not given.
17747
17748         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17749
17750         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17751         given values.
17752
17753 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17754
17755         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17756
17757 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17760
17761         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17762
17763 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17764
17765         * object.c: generalized the reference bitmap creation
17766         and added hooks for the new GC.
17767         * class-internals.c: removed the gc_bitmap field from MonoClass.
17768
17769 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17770
17771         * domain.c: help the compiler to produce better code
17772         in mono_jit_info_table_find ().
17773
17774 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17775
17776         * object.c: make all allocations look typed.
17777
17778 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17779
17780         * socket-io.c: load Mono.Posix if it's not loaded already
17781         (fixes bug#73033).
17782
17783 2005-02-24  Martin Baulig  <martin@ximian.com>
17784
17785         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17786         * reflection.c (dup_type): Likewise.
17787
17788 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17791         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17792
17793 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17794
17795         * domain.c, threads.c, object-internals.h: make the critical thread
17796         local vars use the fast access mode (even when we're compiled in
17797         a lib). Provide accessors to be used by the jit during codegen.
17798
17799 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17800
17801         * appdomain.c: Changed hook functios behavior to include
17802         support for the reflection only assemblies. Some icalls were changed
17803         to support the mentioned assemblies too. Signatures of static methods
17804         try_assembly_resolve and real_load now have an additional parameter:
17805         refonly.
17806
17807         * assembly.c: General changes to mono_assembly_ methods to support
17808         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17809         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17810         suffix, to support an additional gbool parameter to specify whether
17811         the assembli is reflection only or not. Created some new hook functions 
17812         to add support for reflection only assemblies. Signatures of static 
17813         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17814         have now an additional parameter: refonly.
17815
17816         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17817         indicating whether the assembly is reflection only or not.
17818
17819         * exception.c: Add mono_get_exception_invalid_operation.
17820
17821         * icall.c: Throw an InvalidOperationException when trying to invoke
17822         a property/method/event, or trying to set/get the value of a field.
17823         Also add an icall to retrieve the ref_only flag to the
17824         MonoReflectionAssembly.
17825
17826 2005-02-23  Chris Toshok  <toshok@ximian.com>
17827
17828         Part of fix for #72827.
17829         * mono-debug.c (mono_debug_add_method): add lexical block data to
17830         the info we write.  Kind of a hack at the moment - we copy the
17831         lexical block info from the MonoDebugMethodInfo to the
17832         MonoDebugMethodJitInfo here, before writing it.
17833         (mono_debug_read_method): read the lexical block info.
17834
17835         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17836
17837         * debug-mono-symfile.h: add lexical block support.
17838
17839         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17840         support.
17841
17842 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17845
17846         * object.c (mono_runtime_free_method): Call mono_free_method () and
17847         put the TODOs there.
17848
17849         * loader.c (mono_free_method): Free up most memory allocated for 
17850         dynamic methods.
17851
17852 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17853
17854         * reflection.c: properly flag a Type argument to a
17855         named custom attr value (bug #72248).
17856
17857 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17858
17859         * reflection.c: reduce code duplication in named custom
17860         attribute encoding.
17861
17862 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17863
17864         * reflection.c: properly encode custom attrs of type object
17865         (bug #72649).
17866
17867 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17870
17871 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17872
17873         * socket-io.c: load System.dll if it's not loaded already
17874         (bug #72850 and #70477).
17875
17876 2005-02-21  Martin Baulig  <martin@ximian.com>
17877
17878         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17879         generic instances.
17880
17881 2005-02-21  Martin Baulig  <martin@ximian.com>
17882
17883         * reflection.c (mono_image_build_metadata): We also need to
17884         "fixup" the MethodImpl table after we computed the final method
17885         indices.  Call fixup_methodimpl() to do that.
17886         (fixup_methodimpl): New private method.
17887
17888 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17889
17890         * assembly.c: special case mscorlib.dll (bug#72536),
17891         patch from Carlos Alberto Cortez.
17892
17893 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17894
17895         * threads-types.h threads.c: Fix build bustage.
17896
17897         * threads.c: Use a union for long<->double conversions.
17898
17899         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17900         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17901
17902         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17903         containing the checkpoint call with NOT_TAKEN.
17904         
17905         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17906         checkpoint before pushing the arguments, so they won't have to be
17907         spilled to stack.
17908
17909 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17910
17911         * domain.c, assembly.c, domain-internals.h: make some data
17912         const and relocation-free.
17913
17914 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17915
17916         * object.c, appdomain.c, class-internals.h: introduce the
17917         MonoClassRuntimeInfo structure to hold the info needed to
17918         use a class at runtime. Made mono_class_vtable() lock-free
17919         for all the appdomains.
17920
17921 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17922
17923         * metadata-internals.h, image.c: introduce a per-image mempool to
17924         be used for memory that has the same lifetime as the image.
17925
17926 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17927
17928         * domain.c: In mono_init_internal(), instead of selecting the first
17929         runtime version supported by an executable, get a list of all
17930         supported versions and select the one for which an mscorlib exists
17931         (since even if the runtime supports a given version, it doesn't mean
17932         that the framework for that version is installed).
17933         Modified get_runtimes_from_exe to support this behavior.
17934         In supported_runtimes, added information about additional system
17935         assembly versions.
17936         
17937         * assembly.c: Added support for more than one system assembly version
17938         per runtime version. Updated the assembly list.
17939         In mono_assembly_remap_version, removed the initial version check,
17940         since we don't know to which version we need to compare until we
17941         get the version set on which the assembly is based.
17942         Moved the code for loading corlib into the new method
17943         mono_assembly_load_corlib(), so it can be used by the initialization
17944         code.
17945         
17946         * domain-internals.h: Updated data structures and added declaration
17947         for mono_assembly_load_corlib.
17948
17949 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17950
17951         * reflection.c (resolve_object): Fix the creation of the signature in 
17952         the SignatureHelper case.
17953
17954         * assembly.c (mono_assembly_remap_version): Fix binary search.
17955         
17956 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17957  
17958         * class.c: Added inheritance check when a method is overloaded (from a
17959         virtual method or when implementing an interface) and when a class is
17960         inherited. Added functions to set a failure for a class and to 
17961         retreive the exception from a failure.
17962         * class-internals.h: Added fields to MonoClass to keep the exception
17963         information status for inheritance (or other exceptions) to be thrown
17964         later (i.e. not at load time).
17965         * object.c: Throw the inheritance SecurityException when a type is to 
17966         be created with either class or method inheritance violations.
17967         * reflection.c|h: Fix when getting declsec from a class. Removed 
17968         unrequired code for class. Improved sanity in parameter naming.
17969         * security-manager.c|h: Added functions to check for class and method
17970         inheritance.
17971
17972 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17973
17974         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17975         and has_finalize in dynamic types as well.
17976
17977 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17978
17979         * culture-info-table.h : fixed currency format for en-GB (and so on).
17980
17981 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17982
17983         * gc.c: ensure the GC handles never have 0 as a value.
17984
17985 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17986
17987         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17988         a pointer to a struct to unmanaged code. Fixes #72625.
17989
17990 2005-02-16  Martin Baulig  <martin@ximian.com>
17991
17992         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17993
17994 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17995
17996         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17997
17998 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
18001
18002         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
18003         UnmanagedFunctionPointerAttribute, use it for determining calling convention
18004         etc. Fixes #71471.
18005
18006         * reflection.c (mono_custom_attrs_get_attr): New helper function.
18007
18008         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
18009
18010 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
18011
18012         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
18013         changes to make the current context a field in MonoThread.
18014
18015 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
18016
18017         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
18018         the last change.
18019         
18020         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
18021         extracted from mono_marshal_get_native_wrapper.
18022
18023         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
18024         to create wrappers around native functions.
18025
18026         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
18027         delegates for arbitrary function pointers. Fixes #71472.
18028
18029 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18030
18031         * threads.c: cleaned up the code a little.
18032
18033 2005-02-15  Martin Baulig  <martin@ximian.com>
18034
18035         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
18036         the data table.
18037
18038         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
18039         allocate larger chunks if needed.
18040
18041 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18042
18043         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
18044         in by mistake.
18045
18046 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
18047
18048         * domain.c: keep the domains in an array and ensure the domain ids
18049         are kept small, so they can be used as indexes to domain-specific data
18050         with a small memory overhead.
18051
18052 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18053
18054         * icall.c: Handle byref types in Type icalls. Fixes #72544.
18055
18056 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
18057
18058         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
18059
18060 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
18063
18064         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
18065         values.
18066
18067         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
18068         
18069 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18070
18071         * domain-internals.h: add the hashtable here.
18072
18073         * class-internals.h: Remove `info' from MonoMethod
18074
18075         * domain.c: Add a new hashtable, jit_trampoline_hash
18076
18077 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18078
18079         * object.c: don't set the value of static fields
18080         (fixes bug#72494).
18081
18082 2005-02-11  Martin Baulig  <martin@ximian.com>
18083
18084         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
18085         (mono_debug_add_method): Silently ignore the method if it's too big.
18086         (mono_debug_add_type): Likewise.
18087
18088 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
18089
18090         * threads.c, appdomain.c: remove #ifdefs from the code.
18091
18092 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18093
18094         * metadata-internals.h: Added flags to MonoAssembly to cache the most
18095         common security informations. This allows us to stay in unmanaged code
18096         when doing LinkDemand and it's special cases (except for the first 
18097         time for initialization). The flags a very much used with --security.
18098         * reflection.c|h: Added code to get declarative security attributes 
18099         for LinkDemand and InheritanceDemand. This required to refactor the
18100         existing code for Demand.
18101         * security-manager.c|h: Added new method fields for the special cases
18102         of LinkDemand.
18103
18104 2005-02-10  Martin Baulig  <martin@ximian.com>
18105
18106         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
18107         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
18108
18109 2005-02-10  Martin Baulig  <martin@ximian.com>
18110
18111         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
18112         debugging code; this is almost a complete rewrite.
18113
18114         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
18115
18116 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18117
18118         * domain.c, object.h: expose mono_string_equal () and 
18119         mono_string_hash ().
18120         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
18121         it's implemented in managed code.
18122
18123 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18124
18125         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
18126         lo leak objects between appdomains.
18127
18128 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18129
18130         * assembly.c: old compilers compilation fix from 
18131         robertj@gmx.net (Robert Jordan).
18132
18133 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
18134
18135         * class-internals.h: Little reminder for the future.
18136
18137         * debug-helpers.c: Fix up wrapper_type_names
18138
18139 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18140
18141         * image.c, metadata-internals.h: when loading an image from a file,
18142         mmap all of it and use the same codepaths as when using a
18143         in-memory image: the code is simpler and we use less memory
18144         (both writable and readonly).
18145
18146 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18147
18148         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
18149         API to alloc runtime data structures that need to be tracked by the
18150         GC and contain pointers.
18151         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
18152         make the code more readable and eventually use a different GC.
18153
18154 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
18155
18156         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
18157         for out arguments.
18158         
18159 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
18160
18161         * object.c: In release_type_locks(), don't release the cctor lock
18162         if it has already been released. This fixes a crash in the
18163         thread5 test.
18164
18165 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18166
18167         * gc.c, marshal.c, icall.c: register a delegate for finalization
18168         only when the native function pointer has been allocated for it.
18169
18170 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18171
18172         * object.c: cleaned up some code, allocate objects that are
18173         pointer free with the atomic malloc variant. Allocate memory
18174         for static data from the mempool if it's pointer-free.
18175         Allocate the bounds array at the end of the array data, when needed.
18176         * object-internals.h, object.h: move a private function in a private
18177         header.
18178         * class.c: handle missing case in tracking references in fields.
18179
18180 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18181
18182         * class.c, class-internals.h: keep track if a type has
18183         reference fields in either the instance or static fields.
18184
18185 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
18186
18187         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
18188         and renamed to MonoRuntimeInfo. Added fields to store the expected
18189         framework assembly version. Changed mono_get_framework_version and
18190         mono_get_runtime_version for a single mono_get_runtime_info method.
18191         
18192         * assembly.c: Added method to remap system assembly versions to the
18193         current executing runtime version. Removed old mapping code.
18194         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
18195         
18196         * icall.c, reflection.c: Track api changes.
18197
18198 2005-02-06  Miguel de Icaza  <miguel@novell.com>
18199
18200         * loader.c (method_from_memberref): Improve error reporting,
18201         produce the class name instead of the typeref/typedef index. 
18202
18203 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
18204
18205         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
18206
18207 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18208
18209         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
18210         stdcall and charset name mangling.  Reorganize the code and add
18211         some tracing stuff.
18212
18213 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18214
18215         * monodiet.c: More iters!
18216
18217         * marshal.c: Iter usage.
18218
18219         * icall.c: Iter usage.
18220
18221         * object.c: Use iters.
18222
18223         * debug-helpers.c: More iters
18224
18225 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18226
18227         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
18228         under win32.
18229
18230 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18231
18232         * mono-debug-debugger.c: use iters
18233
18234         * class.c, class-internals.h: mono_class_setup_events is static
18235         now
18236
18237         * All callers: use iters
18238
18239 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18240
18241         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
18242         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18243
18244 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18245
18246         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
18247
18248         * marshal.h: Add prototypes for ldfld/stfld_remote.
18249
18250         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18251         this is called during startup.
18252         
18253 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18254
18255         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18256         MonoThreadsSync struct private in monitor.c. Changed the way
18257         MonoThreadsSync is allocated so it's faster and there is no
18258         need to keep track of it with a finalizer and it uses less memory.
18259         This also finally allows us to allocate mono objects as ptrfree when
18260         there are no reference fields.
18261
18262 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18263
18264         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18265         disappearing link to the GC interface and use them to simplify
18266         the gchandles code.
18267
18268 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18269
18270         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18271         stfld_remote which call mono_load/store_field_new. This allows methods
18272         calling ldfld/stfld wrappers to be AOTed.
18273
18274         * console-io.c: Include sys/filio.h under solaris.
18275         
18276         * console-io.c: Include curses.h if needed correctly.
18277
18278 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18279         
18280         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18281         method->klass as well.
18282
18283         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18284
18285         * class.c (mono_class_init): Switch on lazy initialization of 
18286         methods.
18287
18288         * class.c (mono_class_get_finalizer): Handle the case when the 
18289         finalizer is inherited.
18290
18291 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18292
18293         * console-io.c: <curses.h> is needed by term.h on solaris.
18294
18295 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18296
18297         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18298         mono_class_setup_properties where possible. Remove this ftn from
18299         the header file, and make it static.
18300
18301 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * loader.c: Add missing setup_... call.
18304
18305         * class.c: Add missing setup_... calls.
18306
18307         * class.c (mono_class_init): Switch on lazy initialization of 
18308         the generic vtable.
18309         
18310         * class.c (mono_class_init): Fix generics broken by the recent changes.
18311
18312         * monodiet.c (handle_type): Add missing setup_... calls.
18313
18314         * class.c: Back out garbage in previous patch.
18315         
18316         * class.c: Add missing setup_... calls.
18317
18318         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18319         mono_class_setup_methods () if possible.
18320
18321         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18322
18323         * class-internals.h (MonoCachedClassInfo): New structure.
18324
18325         * class.c: Initialize properties and events fields of MonoClass lazily.
18326
18327         * class.c: Add infrastructure for lazily initializing the methods and
18328         vtable fields of MonoClass. Not yet used.
18329
18330         * class.c (mono_class_get_finalizer): New helper function.
18331
18332         * class.c: Add infrastructure for loading some class related data from
18333         an AOT file.
18334
18335         * object.c: Add infrastructure for initializing the vtable from data
18336         in the AOT file.
18337
18338         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18339
18340         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18341         appropriate initialization function before accessing parts of the
18342         MonoClass structure.
18343
18344         * marshal.c: Fix warnings.
18345         
18346         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18347
18348         * mono-debug-debugger.c (get_exception_message): Use 
18349         mono_class_get_method_from_name_flags ().
18350
18351 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18352
18353         * reflection.c, appdomain.c: Replace a few manual searches that
18354         Zoltan missed. (Paolo approved this part of my initial patch).
18355
18356 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18357
18358         * profiler.c: disable recording statistical events at report time.
18359
18360 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18361
18362         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18363         to byteswap arrays of enum values, too (bug #72080).
18364
18365 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18366
18367         * appdomain.c (set_domain_search_path): Allow this to be called if
18368         domain->setup is not yet set.
18369
18370         * loader.c (mono_method_get_index): New helper function.
18371
18372         * loader.c reflection.c: Use mono_method_get_index ().
18373
18374         * class.c (mono_class_get_method_from_name_flags): New helper method.
18375
18376         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18377         this.
18378
18379         * class.c (mono_class_get_cctor): New helper method.
18380
18381         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18382         mono_class_get_method () to look up methods.
18383
18384 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18385
18386         * console-io.c: Fix the build, this should work on Windows.
18387
18388 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18389
18390         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18391         be set to null to keep things valid
18392
18393 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18394
18395         * icall.c: added Console 2.0 icalls.
18396         * Makefile.am: added console-io.[ch]
18397         * console-io.[ch]: internal calls for Console 2.0 API.
18398
18399 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18400
18401         * class.c: make sure we consider all the interfaces
18402         when calculating max_interface_id (bug found by
18403         Jeroen Frijters running ikvm).
18404
18405 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18406
18407         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18408         valuetype fields to null.
18409
18410         * object.c (set_value): Ditto. Fixes #71669.    
18411
18412 2005-01-31  Martin Baulig  <martin@ximian.com>
18413
18414         * metadata.c (mono_metadata_has_generic_params): New public
18415         function; checks whether something is a generic method.
18416
18417 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18418
18419         * appdomain.c: fix infinite recursion when adding assemblies.
18420
18421 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18422
18423         * object.c: Fix small typo to return all items for Environment.
18424         GetCommandLineArgs.
18425
18426 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18427
18428         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18429         reflection.c: more domain and assembly-unload related fixes
18430         and memory leaks plugs.
18431
18432 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18433
18434         * 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.
18435
18436 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18437
18438         * loader.c (mono_method_signature): Make this method lazy
18439         (mono_get_method_from_token): Don't computate the signature here.
18440
18441         Doing this saves quite a bit of memory. I got 90 kb on starting up
18442         monodoc. It should also save some disk reads on startup.
18443
18444         * *: MonoMethod->signature might be NULL now. You *MUST* use
18445         mono_method_signature.
18446
18447 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * object.c (mono_runtime_get_main_args): Return an array from the
18450         current domain here. Fixes #71938.
18451
18452 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18453
18454         * monitor.c: formatting changes to comply with the
18455         mono coding style and remove #ifdefs from the code.
18456
18457 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18458
18459         * metadata.c, private.h: remove some unneeded data
18460         and use a more compact representation for table schemas.
18461
18462 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18463
18464         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18465         to get a better distribution in hash tables.
18466         * *.c: use mono_aligned_addr_hash() where appropriate.
18467         * assembly.c: make var static.
18468
18469 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * domain-internals.h: Put MonoJitInfo on a diet.
18472
18473         * domain.c: Fix a warning.
18474
18475 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18476
18477         * gc.c: rework the gc handles code to reuse handles
18478         when freed.
18479
18480 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18481
18482         * domain.c: fixed long standing bug in mono_string_equal() which
18483         was brought to light with the ldstr changes.
18484
18485 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18486
18487         * reflection.c: Remove warning by adding missing include for marshal.h
18488
18489 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18490
18491         * domain.c, object.c: change the ldstr_table to hold
18492         MonoString* as keys: makes the runtime isinterned lookup
18493         faster and simplifies memory management.
18494
18495 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18496  
18497         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18498         possible to add imperative security checks before calling the icall.
18499         * reflection.c: Return security attributes on the original MonoMethod
18500         (and not the wrapped one). This fix permissions on icalls.
18501
18502 2005-01-25  Dick Porter  <dick@ximian.com>
18503
18504         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18505         the check for mktime() support actually test the mktime() return
18506         value.  "Fixes" bug 71682, though the output is still different to
18507         MS.
18508
18509 2005-01-25  Martin Baulig  <martin@ximian.com>
18510
18511         * class.c (mono_class_is_assignable_from): Make this work for
18512         generic instances.
18513
18514 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18515
18516         * marshal.c (mono_string_utf8_to_builder)
18517         (mono_string_builder_to_utf16): We might not have ownership of the
18518         string. In thise case, we need to create a new buffer.
18519
18520         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18521         be null, in which case, use the default capacity.
18522
18523 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18524
18525         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18526         GC events to the profiler.
18527
18528 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18529
18530         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18531         if you don't want the GC to run.
18532
18533 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18534
18535         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18536         start providing a GC API and keeping different implementations in
18537         their own file.
18538         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18539
18540 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18541
18542         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18543         mmap rather than allocating a huge buffer.
18544         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18545         above.
18546
18547 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18548
18549         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18550         and CheckExecutionRights.
18551         * reflection.c|h: Keep the index of the declarative security to be 
18552         used, instead of the pointer, when AOT compiler is used. Also add 
18553         class initialization when requesting demands.
18554         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18555         CheckExecutionRights. Both properties are now FALSE by default, and
18556         unmodifiable, unless the --security option is used.
18557
18558 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18559
18560         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18561         reflection.c: properly refcount images and assemblies, many leaks fixed.
18562
18563 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18564
18565         * threadpool.c: increase the timeout for threads in the thread pool to
18566         10s.  Fixes bug #67159.
18567
18568 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18569
18570         * class-internals.h: Sun's compiler insists on explicit
18571         signed on bit fields to handle then correctly.
18572
18573 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18574
18575         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18576         Make the size of the array fit only the number of invalid path
18577         chars that we have.
18578
18579         * class.c (_mono_class_get): Improve the error reporting when a
18580         class referenced is not found, to assist debugging. 
18581
18582 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18583
18584         * threads.c: fix off-by-one error.
18585         * domain.c: free data allocated in the domain.
18586
18587 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18588
18589         * reflection.c (mono_method_body_get_object): Fill out exception info
18590         as well.
18591
18592         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18593         structure.
18594         
18595 2005-01-19  Martin Baulig  <martin@ximian.com>
18596
18597         * loader.c (mono_get_method_constrained): Make this work again.
18598
18599 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18602         guint16 to match the managed side.
18603
18604         * reflection.c (mono_reflection_body_get_object): Fill out local
18605         variables array.
18606
18607         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18608         as well.
18609
18610         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18611         'local_var_sig_token'.
18612
18613 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18614
18615         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18616         System.Drawing.
18617
18618         * reflection.c (mono_method_body_get_object): Handle abstract and
18619         runtime methods.
18620
18621 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18622
18623         * marshal.c, loader.c, class-internals.h, reflection.c:
18624         store the emthod data for a wrapper in an array instead of a list.
18625
18626 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18627
18628         * marshal.c: change the code to allocate memory more
18629         conservatively for method wrappers.
18630
18631 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18632
18633         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18634         fields from MonoClass to the marshal info structure where they belong.
18635
18636 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18637
18638         * class.c, object.c, class-internals.h, marshal.c: rearrange
18639         some fields and tweak some types to lower memory usage.
18640
18641 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * threads.c (signal_thread_state_change): Handle the case when the
18644         target thread is the current thread.
18645
18646         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18647
18648         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18649         emit_ptr_to_object_conv. 
18650
18651         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18652         marshalling. Fixes #71352.
18653
18654 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18655
18656         * metadata.h, blob.h: move table enum to blob.h so it can be included
18657         in any header.
18658         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18659         cut the size of MonoImage/MonoDynamicImage.
18660
18661 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18662
18663         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18664
18665 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18666
18667         * reflection.c, reflection.h, icall.c: add a function to check
18668         if an attribute type is defined for a metadata object.
18669
18670 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18671
18672         * object-internals.h: Added some needed fields from StringBuilder class.
18673         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18674
18675 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18676
18677         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18678         threads before shutting down the runtime.
18679
18680         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18681
18682 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18683
18684         * object-internal.h, threads.c: implement stacksize and 
18685         parameterized thread start functionality (requires
18686         matching corlib). Marked broken code for later removal.
18687
18688 2005-01-12  Martin Baulig  <martin@ximian.com>
18689
18690         * class-internals.h (MonoGenericClass): Moved the `initialized'
18691         flag to MonoDynamicGenericClass, removed `init_pending'.
18692         (MonoGenericInst): Added `is_reference' flag.
18693
18694 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18697         inside the MSDOS header. Fixes #71201.
18698
18699         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18700         gc thread.
18701         (mono_domain_finalize): Ditto.
18702
18703 2005-01-12  Martin Baulig  <martin@ximian.com>
18704
18705         * class.c (mono_get_shared_generic_class): Use the cache for
18706         non-dynamic generic classes.
18707
18708         * class-internals.h (mono_class_create_generic_2): Removed
18709         function prototype, this function is now static inside class.c.
18710
18711         * class.c (mono_class_create_generic_2): Made this static, only
18712         call it from mono_class_init() and mono_class_setup_parent().
18713         (collect_implemented_interfaces_aux): Call mono_class_init() on
18714         the interfaces we collect.
18715         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18716
18717 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18718
18719         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18720         it a real thread handle.
18721
18722         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18723         MonoJitExceptionInfo, since each catch clause needs its own variable.
18724         
18725 2005-01-11  Dick Porter  <dick@ximian.com>
18726
18727         * image.c (mono_pe_file_open): New variant on mono_image_open()
18728         that does not set up the CLI metadata; used for FileVersionInfo so
18729         it can get the data for windows binaries too.
18730         
18731         * process.c (process_read_string_block): Don't read off the end of
18732         the StringTable block.
18733
18734         These both fix bug 70766.
18735
18736 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18737
18738         * gc.c: set some fields to NULL at GC cleanup time.
18739         * threads.c: if we quit the main thread, call exit ().
18740
18741 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18744
18745 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18746
18747         * threads.h, threads.c, object.c: added accessor and settor for
18748         main_thread. Handle it specially when exiting from it: wait
18749         for other foreground threads to exit.
18750
18751 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18752
18753         * process.c, verify.c: remove some bloat.
18754
18755 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18758         the calling convention to cdecl under win32.
18759
18760 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18761
18762         * object.c (mono_object_get_size): New function to get the size of
18763         an object instance.
18764
18765         * profiler.c (simple_allocation): Use above.
18766
18767 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18768
18769         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18770         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18771         get an appdomain by it's id and we can't assume the root's id is 0).
18772         * domain-internals.h: Change the function prototype to match.
18773         * icall.c: Change the icall table for AppDomain.
18774
18775 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18776
18777         * locales.c (string_invariant_compare_char): Only compute
18778         GUnicodeTypes in the case where we need them.  Test for ordinality
18779         first and return if so.
18780
18781         From the commit:
18782
18783                 /*
18784                  * FIXME: here we must use the information from c1type and c2type
18785                  * to find out the proper collation, even on the InvariantCulture, the
18786                  * sorting is not done by computing the unicode values, but their
18787                  * actual sort order.
18788                  */
18789
18790 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18791
18792         * loader.c: for P/Invoke methods, allow the "Internal" shared
18793         library name to refer to the calling process symbol namespace.
18794
18795 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18796
18797         * Makefile.am: Add the security manager to the build.
18798         * security-manager.c|h: New. Initialization of the security manager.
18799
18800 2005-01-07  Dick Porter  <dick@ximian.com>
18801
18802         * threads.c: 
18803         * monitor.c: Update thread state during Monitor and WaitHandle
18804         waits.  Fixes bug 71031.
18805
18806 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * reflection.c (property_encode_signature): Correctly handle when the
18809         property has no methods.
18810
18811 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18812
18813         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18814         
18815         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18816         fields from mb, not rmb. Fixes #71017.
18817
18818         * marshal.c (emit_ptr_to_str_conv): Add support for 
18819         ByValTStr -> string conversion. Fixes #71015.
18820
18821         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18822
18823         * mempool.c (mono_mempool_contains_addr): New helper function.
18824
18825 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18828         HasSematics encoded fields.
18829         
18830         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18831         invalid string marshalling.
18832
18833         * metadata.c: Fix warnings.
18834         
18835 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18836
18837         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18838         profiler support.
18839
18840 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18841
18842         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18843         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18844         tests.
18845
18846 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18847
18848         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18849         so methods containing these can be AOTed.
18850
18851 2005-01-03  Martin Baulig  <martin@ximian.com>
18852
18853         * loader.c (find_method): Removed the hack for generic instances.
18854         (method_from_memberref): If our parent is a generic instance, pass
18855         its generic type definition to find_method() and then inflate the
18856         method.
18857         (mono_get_method_constrained): Pass the generic type definition to
18858         find_method() and inflate the method later.
18859
18860         * class-internals.h (MonoStats): Added `generic_class_count'.
18861
18862         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18863         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18864
18865         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18866         generic type definitions.
18867
18868 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18869
18870         * loader.c icall.c: Fix warnings.
18871
18872 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18873
18874         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18875         blittable types. Fixes #70864.
18876
18877 2004-12-29  Martin Baulig  <martin@ximian.com>
18878
18879         * icall.c
18880         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18881
18882         * reflection.c (mono_method_get_object): Create a
18883         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18884         call mono_get_inflated_method().
18885
18886         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18887
18888 2004-12-27  Martin Baulig  <martin@ximian.com>
18889
18890         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18891         (MonoMethodInflated): Added `inflated' field.
18892
18893         * class.c (mono_class_inflate_generic_method): Don't really
18894         inflate the method here; just set the `is_inflated' flag in the
18895         MonoMethod.
18896         (mono_class_get_inflated_method): Actually inflate the method here
18897         if it's not already inflated; we use the MonoMethodInflated's new
18898         `inflated' field as a cache.
18899
18900 2004-12-26  Martin Baulig  <martin@ximian.com>
18901
18902         * class.c
18903         (inflate_generic_class): Moved some code out of inflate_generic_type().
18904         (mono_class_inflate_generic_method): If we're already inflated,
18905         inflate the context and use the declaring method; ie. make sure
18906         the declaring method of an inflated method is always the generic
18907         method definition.
18908         (mono_class_create_from_typedef): Create
18909         `class->generic_container->context->gclass'.
18910
18911 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18912
18913         * metadata-internals.h, marshal.c, reflection.c: More
18914         MonoGHashTable->GHashTable.
18915
18916         * domain-internals.h, class.c: Change MonoGHashTable's into
18917         GHashTables for some cases where no gc stuff is used
18918
18919         All users: update apis
18920
18921 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18922
18923         * metadata.c (builtin_types): Make this `const'. Makes this get
18924         put into the shareable section.
18925         (mono_metadata_init): Casts to make gcc happy.
18926
18927 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18928
18929         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18930
18931 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18932
18933         * icall.c: Added an internal call to retrieve the position and length
18934         of assembly-level declarative security attributes (RequestMinimum, 
18935         RequestOptional and RequestRefuse). This is used by the Assembly class
18936         to re-create the corresponding permission sets.
18937
18938 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18939
18940         * marshal.c: fix the stelemref wrapper to be type correct
18941         (and faster).
18942
18943 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18944
18945         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18946         to do key & 0x7fffffff. Hashtable already does this. It just
18947         results in longer code.
18948
18949 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18950
18951         * appdomain.c: Bump corlib version.
18952         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18953         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18954         * reflection.c|h: Add functions to get declarative security infos
18955         (blob position and length) for assemblies, classes and methods.
18956
18957 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18958
18959         * reflection.c: sort the constant table (bug #70693).
18960
18961 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18962
18963         * object-internals.h, threads.c, domain.c: add accessors for
18964         the MonoThread and MonoDomain tls keys.
18965
18966 2004-12-18  Martin Baulig  <martin@ximian.com>
18967
18968         * class.c (inflate_generic_type): If we're inflating a generic
18969         instance, set `ngclass->context->container = context->container';
18970         ie. the container we inflated into.
18971
18972         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18973         inflate_generic_type() changes.
18974
18975 2004-12-17  Martin Baulig  <martin@ximian.com>
18976
18977         * class-internals.h
18978         (MonoGenericClass): Replaced `MonoType *generic_type' with
18979         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18980         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18981         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18982
18983 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * exception.c (mono_exception_from_token): New helper function.
18986
18987 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * assembly.c (mono_assembly_load_with_partial_name): Call 
18990         mono_assembly_loaded before invoking the preload hooks. Fixes
18991         #70564.
18992
18993         * object-internals.h (MonoThread): Change culture_info and 
18994         ui_culture_info into an array.
18995
18996         * threads.c: Cache culture info objects from more than one appdomain.
18997
18998         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18999         current UI culture.
19000
19001 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * threads.h threads.c appdomain.c: Clear the culture_info field of
19004         all threads during unloading if they point to an object in the dying
19005         appdomain.
19006
19007 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
19008
19009         * culture-info.h (TextInfoEntry): New struct
19010         * object-internals.h: sync with managed
19011         * locales.c: fill the `text_info_data' field
19012         * culture-info-tables.h: update
19013
19014 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
19015
19016         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
19017         collector.
19018
19019 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
19020
19021         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
19022         (ves_icall_ModuleBuilder_getMethodToken): Ditto
19023
19024 2004-12-12  Martin Baulig  <martin@ximian.com>
19025
19026         * mono-debug-debugger.c (write_type): If we're an enum and the
19027         builtin types have already been initialized, call mono_class_init().
19028
19029 2004-12-11  Martin Baulig  <martin@ximian.com>
19030
19031         * metadata.c (mono_metadata_load_generic_params): Added
19032         `MonoGenericContainer *parent_container' argument; automatically
19033         compute `container->is_method'; pass the correct owner to
19034         get_constraints().      
19035
19036         * reflection.c (compare_genericparam): Sort the GenericParam table
19037         according to increasing owners. 
19038
19039 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19040
19041         * profiler.c: allow disabling the default profiler.
19042
19043 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
19044
19045         * decimal.c, icall.c: allow disabling System.Decimal support.
19046
19047 2004-12-09  Marek Safar <marek.safar@seznam.cz>
19048
19049         * reflection.c: Add support for null attribute arguments.
19050
19051 2004-12-09  Martin Baulig  <martin@ximian.com>
19052
19053         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
19054         names to get rid of compiler warnings.
19055
19056 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19057
19058         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
19059         mono_marshal_load_type_info (). Fixes #69625.
19060         (mono_marshal_get_ptr_to_struct): Likewise.
19061
19062 2004-12-08  Martin Baulig  <martin@ximian.com>
19063
19064         * mono-debug.h: Bumped version number to 47.
19065
19066         * mono-debug-debugger.c
19067         (mono_debugger_event_handler, mono_debugger_event): Take two
19068         guint64 arguments insteed of a gpointer and a guint32.  
19069
19070 2004-12-08  Martin Baulig  <martin@ximian.com>
19071
19072         * debug-mono-symfile.h
19073         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
19074         `address' to `native_offset'.
19075
19076 2004-12-08  Martin Baulig  <martin@ximian.com>
19077
19078         * class.c (mono_class_create_from_typespec): Only inflate if we
19079         either have `context->gclass' or `context->gmethod'.
19080
19081 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
19084
19085         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
19086
19087         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
19088
19089         * reflection.c (mono_assembly_get_object): Remove the workaround put
19090         in for the release.
19091         
19092         * appdomain.c: Use the corlib_internal field from MonoAssembly.
19093
19094         * appdomain.c: Bump corlib version.
19095
19096         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
19097         be visible in other appdomains.
19098
19099 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
19100
19101         * threads.c: Interlocked inc and dec for longs were messed up,
19102         use a KISS based impl for this. Fixes 70234
19103
19104 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19105
19106         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
19107
19108 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19109
19110         * icall.c: fix to follow policy not to allow struct
19111         arguments in icalls.
19112
19113 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19114
19115         * process.c: make the patch that handles spaces in file paths work
19116         on mono/windows too.
19117
19118 2004-12-06  Martin Baulig  <martin@ximian.com>
19119
19120         * class.c (mono_class_create_generic): Call
19121         mono_class_setup_supertypes() if we're dynamic.
19122         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
19123
19124 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19125
19126         * object-internals.h: Add new fields to MonoThread.
19127
19128         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19129
19130         * icall.c threads-types.h threads.c: Add new icalls.
19131
19132         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
19133
19134         * object-internals.h (MonoReflectionAssembly): Sync object layout with
19135         managed side.
19136
19137         * appdomain.c: Bump corlib version.
19138
19139         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
19140         internal assemblies. Fixes #69181.
19141
19142 2004-12-05  Martin Baulig  <martin@ximian.com>
19143
19144         * class.c (mono_class_inflate_generic_signature): Make this a
19145         no-op if `context' is NULL or we don't have any type parameters;
19146         also copy `sentinelpos'.        
19147
19148 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
19149
19150         * image.c: Add unbox_wrapper_cache.
19151
19152         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
19153
19154         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
19155         function generator.
19156         
19157         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
19158         Fixes #70173.
19159
19160         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
19161         
19162 2004-12-04  Martin Baulig  <martin@ximian.com>
19163
19164         * loader.c (mono_method_get_signature_full): New public function;
19165         like mono_method_get_signature(), but with an additional
19166         `MonoGenericContext *' argument.
19167
19168         * class.c (mono_class_inflate_generic_signature): Formerly known
19169         as inflate_generic_signature(); make this public.
19170
19171 2004-12-04  Martin Baulig  <martin@ximian.com>
19172
19173         * metadata.c
19174         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
19175         instead of a `MonoGenericContainer *'.  
19176         (mono_metadata_parse_array_full): Likewise.
19177         (mono_metadata_parse_signature_full): Likewise.
19178         (mono_metadata_parse_method_signature_full): Likewise.
19179         (mono_metadata_parse_generic_inst): Likewise.
19180         (mono_metadata_parse_generic_param): Likewise.
19181         (mono_metadata_parse_mh_full): Likewise.
19182         (mono_type_create_from_typespec_full): Likewise.
19183
19184 2004-12-03  Martin Baulig  <martin@ximian.com>
19185
19186         * class-internals.h (MonoGenericContainer): Replaced the
19187         `MonoGenericContext * pointer with a `MonoGenericContext'
19188         structure and made it the first element.
19189
19190 2004-12-03  Martin Baulig  <martin@ximian.com>
19191
19192         * class.c
19193         (inflate_generic_type): Set the `context->container' when creating
19194         a new MonoGenericContext.
19195         (mono_class_inflate_generic_method): Likewise.
19196         (mono_class_create_from_typespec): Just use `context->container'
19197         to get the container.
19198
19199         * loader.c (method_from_methodspec): Set `context->parent' from
19200         `context->container' - and if that's a method container, use its
19201         parent.  Also set the `context->container' when creating a new
19202         MonoGenericContext.
19203         (mono_get_method_from_token): Use just `context->container' to get
19204         the container.
19205
19206         * metadata.c (do_mono_metadata_parse_generic_class): Also set
19207         `gclass->context->container'.
19208
19209         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
19210         the `context->container' when creating a new MonoGenericContext.
19211
19212 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
19213
19214         * reflection.c (compare_genericparam): Sort params with identical
19215         owner by their number. Fixes gen-111 on sparc.
19216
19217 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
19220         around the domain changes.
19221
19222         * appdomain.c (mono_domain_unload): Handle the case when the thread
19223         calling Unload is itself being aborted during unloading. Fixes #70022.
19224
19225         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
19226
19227         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
19228         checkpoint_func as an icall so it gets a wrapper.
19229         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
19230         in the cross-appdomain wrappers too.
19231
19232         * threads.c (mono_thread_has_appdomain_ref): Make this public.
19233
19234         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
19235
19236         * reflection.c: Fix some memory leaks.
19237         
19238 2004-12-02  Martin Baulig  <martin@ximian.com>
19239
19240         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
19241
19242         * metadata.c (generic_class_cache): New static hashtable.
19243         (mono_metadata_lookup_generic_class): New public method.
19244
19245 2004-12-02  Martin Baulig  <martin@ximian.com>
19246
19247         * class.c (mono_class_create_from_typedef): Call
19248         mono_class_setup_parent() and mono_class_create_mono_type() before
19249         parsing the interfaces.
19250
19251 2004-12-02  Martin Baulig  <martin@ximian.com>
19252
19253         * metadata.c (generic_inst_cache): New static hashtable.
19254         (mono_metadata_lookup_generic_inst): New public function.
19255         (mono_metadata_inflate_generic_inst): New public function.
19256         (mono_metadata_parse_generic_inst): New public function.
19257         (do_mono_metadata_parse_generic_class): Use the new
19258         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19259         since this'll also use the cache.
19260
19261         * reflection.c (mono_reflection_bind_generic_method_parameters):
19262         Use mono_metadata_lookup_generic_inst() to use the new cache.
19263
19264         * class.c (inflate_mono_type): Use
19265         mono_metadata_inflate_generic_inst() to inflate a generic
19266         instance; this'll also use the new cache.
19267
19268         * loader.c (method_from_methodspec): Use
19269         mono_metadata_parse_generic_inst() and
19270         mono_metadata_inflate_generic_inst() rather than parsing it
19271         manually, so we can use the new cache.
19272
19273 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19274
19275         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19276         the wait times out.
19277
19278 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19279
19280         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19281         iter->args based on whether parameters are passed in registers (i.e.
19282         MONO_ARCH_REGPARMS is defined)
19283
19284 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19287         the exception message. Fixes #70070.
19288         (method_from_methodspec): Fix warnings.
19289
19290 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19291
19292         * process.c: (complete_path) return the path quoted
19293
19294 2004-12-01  Martin Baulig  <martin@ximian.com>
19295
19296         * class-internals.h (MonoGenericInst): New structure.
19297         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19298         `is_open' with `MonoGenericInst *inst'.
19299         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19300         `is_open' with `MonoGenericInst *inst'.
19301
19302 2004-11-30  Martin Baulig  <martin@ximian.com>
19303
19304         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19305
19306         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19307         to `generic_class_cache'.
19308
19309         * metadata.c
19310         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19311         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19312         (mono_generic_inst_is_valuetype): Renamed to
19313         mono_generic_class_is_valuetype().
19314
19315         * class-internals.h
19316         (MonoGenericInst): Renamed to MonoGenericClass.
19317         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19318         (MonoClass): Renamed `generic_inst' to `generic_class'.
19319         (MonoGenericContext): Renamed `ginst' to `gclass'.
19320
19321         * object-internals.h
19322         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19323
19324         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19325         mono_reflection_generic_class_initialize().
19326
19327         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19328         now known as "System.Reflection.MonoGenericClass".
19329         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19330
19331 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19332
19333         * class-internals.h: Added a flag field to MonoClass to cache the
19334         declarative security attributes actions associated with the class.
19335         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19336         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19337         applicable to the JITted method.
19338         * reflection.c|h: Added functions to extract (as flags) which security
19339         actions are available (declaratively) for a method, class or assembly.
19340         * metadata.c|h: Added functions to search the declarative security
19341         table in the metadata.
19342         
19343 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19344
19345         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19346         EXPORTEDTYPES are already in the class name cache, so there is no
19347         need to add extra code here to look at them. Just removes a bit of
19348         cruft.
19349
19350         (ves_icall_System_Environment_get_TickCount): No need for #if
19351         WINDOWS. We already have the code in io-layer.
19352
19353 2004-11-28  Martin Baulig  <martin@ximian.com>
19354
19355         * loader.c
19356         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19357         Fixes gen-112.cs.
19358
19359 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19360
19361         * assembly.c (do_mono_assembly_open): Instead of having a
19362         conditional WITH_BUNDLE, incorporate support for bundles here, by
19363         having a global `bundles' variable holding a pointer to the actual
19364         bundles. 
19365
19366         (mono_register_bundled_assemblies): New API call used by the
19367         bundle code. 
19368
19369         See mkbundle.1 for details.
19370         
19371 2004-11-27  Martin Baulig  <martin@ximian.com>
19372
19373         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19374         the vtable for generic methods.
19375
19376 2004-11-26  Martin Baulig  <martin@ximian.com>
19377
19378         * metadata.c
19379         (mono_metadata_generic_method_hash): New public function.
19380         (mono_metadata_generic_method_equal): Likewise.
19381
19382         * class-internals.h
19383         (MonoGenericContainer): Added `GHashTable *method_hash'.
19384
19385         * reflection.c (ReflectionMethodBuilder): Added
19386         `MonoGenericContainer *generic_container'.
19387         (reflection_methodbuilder_to_mono_method): Don't create a new
19388         MonoGenericContainer each time we're called.
19389         (mono_reflection_bind_generic_method_parameters): Use
19390         `container->method_hash' to cache the results so we don't create a
19391         different method if we're called several times with the same
19392         arguments.
19393
19394         * loader.c (method_from_methodspec): Use the new
19395         `container->method_hash' here, too.
19396
19397 2004-11-26  Martin Baulig  <martin@ximian.com>
19398
19399         * class.c (inflate_generic_signature): Correctly compute
19400         `res->has_type_parameters'.
19401         (mono_class_vtable): Use the `has_type_parameters' flag to
19402         determine whether we're a generic method.
19403
19404         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19405
19406 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * object.c (mono_runtime_run_main): Fix a small memory leak.
19409
19410 2004-11-25  Martin Baulig  <martin@ximian.com>
19411
19412         * class.c (set_generic_param_owner): Fixed the loop.
19413
19414 2004-11-25  Martin Baulig  <martin@ximian.com>
19415
19416         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19417         generic methods.
19418
19419 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19422         names. Fixes #69787.
19423
19424 2004-11-24  Martin Baulig  <martin@ximian.com>
19425
19426         * class.c (mono_class_create_generic_2): If we don't have a
19427         `ginst->parent', inflate `gklass->parent' to get our parent.
19428
19429 2004-11-24  Martin Baulig  <martin@ximian.com>
19430
19431         * reflection.c (compare_genericparam): Correctly sort the
19432         GenericParam table; fixes #69779.
19433
19434 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19435
19436         * reflection.c: When writing a PE file, don't create a huge
19437         buffer in memory. Just write the arrays we have to the file.
19438         This reduces memory usage.
19439
19440         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19441         globally.
19442
19443 2004-11-17  Martin Baulig  <martin@ximian.com>
19444
19445         * class.c (mono_class_init): Don't setup `class->parent' for
19446         dynamic instances; moved this to mono_class_generic_2().
19447         (mono_class_create_generic): Also set `klass->inited' for dynamic
19448         generic instances.
19449         (mono_class_create_generic_2): Don't do anything for dynamic
19450         generic instances.  Set `klass->parent' here and also call
19451         mono_class_setup_parent() here. 
19452
19453         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19454         `MonoType *parent' argument; set `ginst->parent' before calling
19455         mono_class_create_generic_2(), so we set the correct parent.
19456
19457 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19458
19459         * reflection.c: allow getting attributes from ModuleBuilder
19460         (used by ikvm).
19461
19462 2004-11-17  Martin Baulig  <martin@ximian.com>
19463
19464         * class.c (mono_class_create_from_typedef): If a type parameter is
19465         inherited from an outer class, set its owner to that class.
19466
19467 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19468
19469         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19470           for (int*) written size. This fixes bug #69592.
19471
19472 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19473
19474         * icall.c: Added IsAuthenticodePresnet internal call.
19475         * image.c|h: New function that check a MonoImage for an Authenticode
19476         signature in the certificate PE data directory.
19477         * security.c|h: New internal call to ask the runtime if an 
19478         Authenticode signature seems referenced in the PE header.
19479
19480 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19483
19484         * reflection.c (mono_image_create_pefile): Free the assembly streams
19485         after writing out the assembly file.
19486
19487         * object.c (mono_runtime_run_main): Fix small memory leak.
19488
19489         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19490         property access modifiers. Fixes #69389.
19491
19492 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19493
19494         * domain.c, object.c, object-internals.h, domain-internals.h,
19495         object.h, marshal.c: keep dynamic code info per domain.
19496
19497 2004-11-15  Martin Baulig  <martin@ximian.com>
19498
19499         * class.c (mono_type_get_name_recurse): Put type arguments in
19500         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19501         see bug #68387.
19502
19503 2004-11-15  Martin Baulig  <martin@ximian.com>
19504
19505         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19506         (mono_class_setup_vtable): When computing `the_cname' for a
19507         generic instance, don't include the namespace since we'd otherwise
19508         add it twice.
19509
19510 2004-11-15  Martin Baulig  <martin@ximian.com>
19511
19512         * class.c (mono_class_create_generic): Changed return type to void.
19513         (mono_class_create_generic_2): New public function; setup
19514         `class->method', `class->field' and `class->interfaces' here
19515         instead of in mono_class_init().
19516
19517         * class.h (mono_class_create_generic): Moved to class-internals.h.
19518
19519 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19520
19521         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19522         rather than writing to memory, write to this file. Right now,
19523         we are just writting into a buffer, and copying that. However
19524         we can avoid the buffer later.
19525
19526         (mono_dynamic_stream_reset): new function
19527
19528         * icall.c, object-internals.h: update for the above.
19529
19530 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19531
19532         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19533         have been using gc'd memory. First it is slower, unlikely
19534         the comment in the source code said, secondly, it increases
19535         our footprint to do it in the gc.
19536
19537         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19538         the method so that it does not have to copy to managed code.
19539
19540 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19543
19544 2004-11-12  Martin Baulig  <martin@localhost>
19545
19546         * reflection.c (mono_image_create_token): Allow generic method
19547         definitions here, since they may appear in an `.override'; see
19548         gen-98/gen-99 for an example.
19549
19550 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19553         #69365.
19554
19555         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19556         descriptive.
19557
19558 2004-11-11  Martin Baulig  <martin@ximian.com>
19559
19560         * class.c (mono_class_setup_vtable): In an explicit interface
19561         implementation, the method name now includes the arity.
19562
19563 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * object.c (mono_array_full_copy): Fix warning.
19566
19567 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19568
19569         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19570         mono_class_get_method_from_name() instead.
19571         
19572         * class-internals.h: Added two new types of wrappers. 
19573         Added MonoRemotingTarget enum. Added new trampoline function type, which
19574         takes an additional MonoRemotingTarget value as parameter, so it is
19575         possible to request a trampoline for a specific target.
19576         
19577         * class.c: Added new mono_class_get_method_from_name() method.
19578         
19579         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19580         general remoting sinks and one specific for cross domain calls.
19581         
19582         * debug-helpers.c: Added new wrapper names.
19583         
19584         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19585         of a remote class.
19586         
19587         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19588         
19589         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19590         with several other methods (mono_marshal_get_xappdomain_dispatch,
19591         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19592         and others) can generate a fast remoting wrapper for cross domain calls.
19593         More information can be found in docs/remoting.
19594         Other changes: Removed mono_find_method_by_name, and used
19595         mono_class_get_method_from_name instead.
19596         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19597         is stored in the remoting invoke hashtable.
19598         
19599         * marshal.h: published the new method for getting the xdomain wrapper,
19600         and also added a method for getting the adequate wrapper for a given
19601         method and target.
19602         
19603         * object-internals.h, object.c: Added a couple of methods for capying and
19604         cloning arrays.
19605         Modified mono_install_remoting_trampoline, which takes the new remoting
19606         trampoline that has a remoting target as parameter.
19607         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19608         will return the most suitable vtable for the target.
19609         Added mono_remote_class_vtable, which returns the vtable of a remote class
19610         (which can be the normal remoting vtable or the xdomain vtable).
19611         
19612         * threads.c: the xdomain invoke and dispatch wrappers must also be
19613         protected against interruptions.
19614
19615 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19616
19617         * icall.c: use memmove in BlockCopyInternal when the source and
19618         destination arrays are the same.
19619
19620 2004-11-09  Martin Baulig  <martin@ximian.com>
19621
19622         * class-internals.h (MonoGenericContainer): Removed `method' and
19623         `signature', replaced them with `is_method' and `is_signature'
19624         flags.  Added `context'.
19625
19626         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19627         instead of a `MonoGenericContainer *'.
19628
19629         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19630         for dynamic type parameters.
19631         (mono_metadata_load_generic_params): Setup `container->context'.
19632
19633         * reflection.c (mono_reflection_setup_generic_class): Setup
19634         `tb->generic_container->context'.
19635         (do_mono_reflection_bind_generic_parameters): Use
19636         mono_class_inflate_generic_type() to correctly inflate types,
19637         rather than using our own hack just for MONO_TYPE_VAR.
19638
19639 2004-11-09  Martin Baulig  <martin@ximian.com>
19640
19641         * class.c (mono_class_inflate_generic_method): Small fix; don't
19642         crash here.
19643
19644         * icall.c
19645         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19646         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19647         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19648         (ves_icall_Type_BindGenericParameters): Likewise.
19649         (ves_icall_Type_get_IsGenericInstance): Likewise.
19650         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19651         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19652         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19653         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19654
19655 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19658         assembly versions and public key tokens. Fixes #69113.
19659
19660 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19661
19662         * metadata.c: fix bug introduced with the type cache changes
19663         on 2004-11-06.
19664
19665 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19666
19667         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19668         the MonoClass pointer instead of the token in exception clauses.
19669         * reflection.c: updates for the above and make the code not depend
19670         on the structure of MonoExceptionClause.
19671
19672 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19675         Add support for dynamic assemblies. Fixes #69114.
19676
19677         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19678
19679 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19680
19681         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19682         since most only those methods use it. the code member of
19683         MonoMethodPInvoke was dead, so that can be removed too. Also,
19684         remove inline_count (again, not used), and move slot so that it
19685         can share bits with some other flags. This saves 8 bytes in the
19686         structure and gives us about 50 kb back for mcs helloworld.cs
19687
19688         * *.[ch]: Do naming changes for the above.
19689
19690         * loader.c (mono_method_get_header): Lazily init the header
19691         on first access.
19692         (mono_get_method_from_token): don't init the header here
19693         (mono_free_method): the header may never be allocated
19694
19695         Overall, this saves 150 kb of unmanaged allocations
19696         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19697         memory at runtime.
19698         
19699         * loader.c, loader.h (mono_method_get_header): new accessor.
19700
19701         * *.[ch]: use the above method. Prepares us to lazily load
19702         the header.
19703
19704         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19705         three warnings, which are actual bugs (see 69206).
19706
19707         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19708         unused. Saves a cool 4 bytes / method.
19709
19710 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19711
19712         * metadata.c (builtin_types): Add types for System.Object here.
19713         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19714         for a class or valuetype from klass->this_arg or klass->byval_arg.
19715
19716         On mcs for a hello world, this gets us down from 21836 MonoType's
19717         to 14560.
19718
19719         (mono_metadata_free_type): Account for the above change.
19720
19721 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19722
19723         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19724         exception instead of asserting if name is null.
19725         (ves_icall_System_AppDomain_GetData): Ditto.
19726
19727 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19728
19729         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19730         EnumBuilder.
19731
19732         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19733         Return NULL when the domain does not have entry_assembly set.
19734
19735         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19736         Add a 'resource_modules' argument.
19737         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19738
19739         * reflection.c (mono_reflection_create_runtime_class): Move setting
19740         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19741         for enums too.
19742
19743         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19744         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19745         Throw an ArgumentNullException if 'ptr' is null.
19746
19747         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19748         assemblies here. Fixes #69020.
19749
19750 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19751
19752         * reflection.c (build_compressed_metadata): Fix the previous patch for
19753         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19754         the stack.
19755
19756 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19757
19758         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19759         the cultures is false. Fixes #69090.
19760
19761         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19762         detected by valgrind.
19763         
19764         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19765         TypeResolve multiple times for the same type. Fixes #65577.
19766
19767 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19768
19769         * marshal.c: Avoid using ldftn to call managed functions. It is
19770         much slower than just a call.
19771
19772         * reflection.c (mono_module_get_object): free the basename we
19773         allocate here from glib.
19774         
19775         * reflection.c (ensure_runtime_vtable): make sure to free
19776         overrides.  Also, we were allocating an array of MonoMethod not an
19777         array of MonoMethod*.
19778
19779         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19780
19781         * image.c (mono_image_close): free image->guid here.
19782
19783 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19784
19785         * reflection.c: Fix some spec conformance issues with the PE file
19786         structures so mcs compiled apps run on the Net 2.0 beta.
19787
19788 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19791         Implement this. Fixes #67264.
19792
19793         * debug-helpers.h debug-helpers.c marshal.c: Move 
19794         mono_find_method_by_name to debug-helpers.c.
19795
19796 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * object.c (mono_release_type_locks): type_initialization_hash is
19799         a GHashTable.
19800
19801         * reflection.c object.c object-internals.h: Fix warnings.
19802
19803         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19804         without accessors. Fixes #61561.
19805
19806         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19807         application base from the root domain if not set. Fixes #65641.
19808         (mono_runtime_init): Fix warning.
19809
19810 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19811
19812         * appdomain.c: call mono_thread_pool_init.
19813         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19814         of worker threads based on the number of CPUs and the environment
19815         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19816         for non-windows (windows) systems.
19817
19818 2004-10-27  Chris Toshok  <toshok@ximian.com>
19819
19820         * mono-debug-debugger.c (write_class): don't call mono_class_init
19821         here, as even with the check for (!klass->init_pending), we get
19822         into a situation where we're hitting cycles in class
19823         initialization.  Fixes #68816.
19824
19825 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19826
19827         * image.c: Avoid overwriting values in the loaded_images_hash when an
19828         assembly is loaded multiple times. Fixes #61152.
19829
19830         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19831         so multiple satellite assemblies for the same name can be loaded.
19832         Fixes #68259.
19833
19834         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19835         not NULL.
19836
19837         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19838         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19839
19840         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19841         pending finalizers are not invoked after the appdomain has been 
19842         unloaded. Fixes #67862.
19843
19844 2004-10-22  Martin Baulig  <martin@ximian.com>
19845
19846         * mono-debug-debugger.c
19847         (mono_debugger_runtime_invoke): Don't box valuetypes.
19848
19849 2004-10-22  Chris Toshok  <toshok@ximian.com>
19850
19851         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19852         don't hide private methods.
19853
19854 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19855
19856         * icall.c: Allows the runtime to "share" (when known) the public key
19857         token of an assembly. This avoid the need to recalculate the token 
19858         (from the public key) in managed code.
19859
19860 2004-10-21  Chris Toshok  <toshok@ximian.com>
19861
19862         * debug-helpers.c (append_class_name): argh, revert last patch.
19863         
19864 2004-10-21  Chris Toshok  <toshok@ximian.com>
19865
19866         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19867         not '/', so that it matches what the debugger uses to look up
19868         methods.
19869
19870 2004-10-21  Martin Baulig  <martin@ximian.com>
19871
19872         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19873         public method; this is called each time an exception is thrown and
19874         allows the debugger to use exception catch points.
19875
19876 2004-10-21  Martin Baulig  <martin@ximian.com>
19877
19878         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19879         the stack pointer and the exception object in some struct and pass
19880         that to the debugger.
19881
19882 2004-10-21  Chris Toshok  <toshok@ximian.com>
19883
19884         * mono-debug-debugger.c (do_write_class): add instance/static
19885         event support.  We don't expose "raise" or "other" yet.
19886         (event_is_static): new method.
19887
19888 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19889
19890         * mono-debug-debugger.c
19891         (mono_debugger_handle_exception): Remove
19892         bogus return value for fussy compilers.
19893
19894 2004-10-20  Martin Baulig  <martin@ximian.com>
19895
19896         * mono-debug-debugger.c
19897         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19898         (mono_debugger_handled_exception): Likewise.
19899
19900 2004-10-20  Martin Baulig  <martin@ximian.com>
19901
19902         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19903         MONO_DEBUGGER_EVENT_EXCEPTION.
19904
19905         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19906         public function to send the debugger a notification for an
19907         exception and inform it about a catch/finally clause.
19908
19909 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19912         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19913         fix 2.95 build. 
19914
19915         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19916
19917 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19920         marshalled as [In,Out]. Fixes #58325.
19921
19922 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * reflection.c (mono_method_body_get_object): Implement some fields.
19925
19926 2004-10-12  Martin Baulig  <martin@ximian.com>
19927
19928         * reflection.c (mono_reflection_bind_generic_parameters): Small
19929         fix, correctly retrieve our parent from a generic instance.
19930
19931 2004-10-12  Martin Baulig  <martin@ximian.com>
19932
19933         * metadata.c (mono_metadata_generic_param_equal): We always have
19934         an owner.
19935
19936         * class.c
19937         (mono_class_from_generic_parameter): We need to have an owner.
19938         (my_mono_class_from_generic_parameter): Likewise.
19939
19940         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19941         mono_reflection_create_generic_class() and added a new
19942         mono_reflection_setup_generic_class().  
19943         (mono_reflection_initialize_generic_param): If we're a nested
19944         generic type and inherited from the containing class, set our
19945         owner to the outer class.
19946
19947 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19950
19951         * reflection.c (mono_method_body_get_object): New function to create
19952         a MethodBody object.
19953
19954         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19955
19956 2004-10-11  Martin Baulig  <martin@ximian.com>
19957
19958         * metadata.c (_mono_metadata_type_equal): Renamed to
19959         do_mono_metadata_type_equal() and made static.
19960
19961 2004-10-11  Martin Baulig  <martin@ximian.com>
19962
19963         * appdomain.c: Bump corlib version number to 28.
19964
19965 2004-10-10  Martin Baulig  <martin@ximian.com>
19966
19967         * class-internals.h
19968         (MonoGenericInst): Added `MonoGenericContainer *container'.
19969         (MonoGenericMethod): Likewise.
19970         (MonoGenericContext): Likewise.
19971         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19972
19973         * metadata.c
19974         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19975         (do_mono_metadata_parse_generic_inst): Likewise.
19976         (mono_metadata_parse_type_full): New public method.  This is the actual
19977         mono_metadata_parse_type() implementation - with an additional
19978         `MonoGenericContainer *' argument.
19979         (mono_metadata_parse_array_full): Likewise.
19980         (mono_metadata_parse_signature_full): Likewise.
19981         (mono_metadata_parse_method_signature_full): Likewise.
19982         (mono_metadata_parse_mh_full): Likewise.
19983         (mono_type_create_from_typespec): Likewise.
19984         (mono_metadata_interfaces_from_typedef_full): New public method;
19985         this is similar to the other _full() methods, but we take a
19986         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19987         (mono_metadata_parse_generic_param): Take an additional
19988         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19989         from that container.
19990         (mono_metadata_generic_param_equal): New static method to compare
19991         two type parameters.
19992         (_mono_metadata_type_equal): New static method; takes an
19993         additional `gboolean signature_only' argument - if true, we don't
19994         compare the owners of generic parameters.
19995         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19996         with a TRUE argument - do a signature-only comparision.
19997
19998         * loader.c: Use the new _full() methods and pass the
19999         MonoGenericContainer to them.
20000
20001         * object-internals.h (MonoReflectionTypeBuilder): Added
20002         `MonoGenericContainer *generic_container' field.
20003         (MonoReflectionMethodBuilder): Likewise.
20004
20005 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
20008         case initial images of dynamic assemblies.
20009
20010         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
20011
20012         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
20013
20014         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
20015         length of event->other array.
20016         (typebuilder_setup_events): Ditto.
20017
20018         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
20019         'assembly_by_name' and add an 'assemblies' list.
20020
20021         * assembly.h assembly.c: Add a new search hook for determining whenever
20022         an assembly is already loaded. Use this instead of searching in the
20023         loaded_assemblies list.
20024
20025         * domain.c appdomain.c: Implement the new search hook so loaded 
20026         assemblies are now scoped by appdomain. Fixes #67727.
20027
20028 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
20029
20030         * threads.c (mono_thread_attach): Initialize synch_lock field so
20031         mono_thread_detach works again.
20032
20033         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
20034         'lib' too. Fixes #63130.
20035
20036 2004-10-06  Jackson Harper  <jackson@ximian.com>
20037
20038         * culture-info-tables.h: regenerated.
20039
20040 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
20041
20042         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
20043         implemented by other interfaces in the result. Fixes #65764.
20044         
20045         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20046         Handle unloadable modules without crashing.
20047
20048         * image.c (load_modules): Revert the previous patch since modules must
20049         have a fixed index inside the array.
20050         
20051         * image.c (load_modules): Don't include native modules in the modules
20052         array.
20053
20054 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20055
20056         * reflection.h: Add param_defaults field.
20057
20058         * reflection.c: Add support for parameter defaults in dynamic methods.
20059         Fixes #64595.
20060
20061         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
20062         an empty string when a type has no namespace. Fixes #64230.
20063
20064 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
20065
20066         * tabledefs.h: Added "internal" security actions to support non-CAS
20067         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
20068         Note: they do not seems to be used anymore in 2.0 (new metadata format)
20069
20070 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
20073         constructor of abstract class. Fixes #61689.
20074
20075 2004-10-04  Martin Baulig  <martin@ximian.com>
20076
20077         * class-internals.h (MonoGenericContainer): New type.
20078         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
20079         `MonoGenericContainer *generic_container'.
20080         (MonoClass): Replaced `gen_params' and `num_gen_params' with
20081         `MonoGenericContainer *generic_container'.
20082
20083         * metadata.c (mono_metadata_load_generic_params): Return a
20084         `MonoGenericContainer *' instead of a `MonoGenericParam *';
20085         removed the `num' argument.
20086
20087 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
20088
20089         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
20090         for dynamic images.
20091
20092         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
20093         machine fields.
20094
20095         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
20096
20097         * reflection.c: Save pe_kind and machine values into the generated
20098         image file.
20099
20100         * appdomain.c: Bump corlib version number.
20101
20102         * object-internals.h: Reorganize layout of LocalBuilder.
20103
20104         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
20105         New helper function.
20106
20107         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
20108         created MonoType for dynamic types. Fixes #66180.
20109
20110 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
20111
20112         * threadpool.c: the ares hashtable needs a critical section around it.
20113         this prevents some nasty segfaults
20114
20115 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
20116
20117         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
20118         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
20119         bug 67324).
20120         
20121 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20122
20123         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
20124         
20125 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
20126
20127         * image.c: Always canonicalize image file names, to avoid loading
20128         the same assembly twice when referenced using a relative path.
20129
20130 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
20133
20134         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
20135
20136         * marshal.c: Fix warnings.
20137
20138 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
20139
20140         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
20141         attempting to marshal the delegate_trampoline as the method_addr.
20142         This patch has a static hashtable of marshalled delegates so that 
20143         we can map delegate_trampoline addresses back to delegates.  This
20144         allows a delegate passed to managed code to be passed back into native
20145         code.  Fixes #67039
20146
20147 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20148
20149         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
20150
20151         * reflection.c (method_encode_code): Align method headers properly.
20152         Fixes #66025.
20153
20154 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20155
20156         * marshal.c: In the runtime invoke wrapper, reset the abort
20157         exception if it is cached. This avoids the automatic rethrowal of 
20158         the exception after the catch of the wrapper. Also check for pending
20159         interruptions before calling the managed method. This is done using
20160         the new method emit_thread_force_interrupt_checkpoint, since the
20161         normal checkpoint method is ignored when running the invoke wrapper.
20162         * object.c: If the abort exception is rethrown, set the abort_exc
20163         field of the thread, so it will be rethrown aftere every catch.
20164         * threadpool.c: Only run an interruption checkpoint if what has been
20165         requested is a stop of the thread (aborts will be ignored).
20166         * threads.c: By default, a thread will now never be interrumped while
20167         running the runtime invoke wrapper (this ensures that runtime_invoke
20168         will always return to the caller if an exception pointer is provided).
20169         There is a new special method mono_thread_force_interruption_checkpoint()
20170         to force an interruption checkpoint even if running a protected
20171         wrapper, which is used by the same runtime invoke wrapper to do a check
20172         at a safe point.
20173
20174 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20175
20176         * object.c, object-internals.h: Implemented mono_release_type_locks,
20177         which releases the cctor locks held by a thread.
20178         * threads.c, threads.h: In thread_cleanup, release cctor locks held
20179         by a thread. Added mono_thread_exit() method to be used to safely stop
20180         a thread.
20181
20182 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20183
20184         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20185         Move null check before dereference.  Avoid indexing beyond the end
20186         of the 'modules' array.
20187
20188 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20189
20190         * metadata-internals.h (MonoImage): Add module_count field.
20191         * image.c (load_modules): Set image->module_count.
20192         (mono_image_load_file_for_image): Use image->module_count.
20193         * reflection.c (mono_image_load_module): Append to image->modules array 
20194         of dynamic assembly.
20195         (mono_module_get_object): Fix loop to actually increment index.
20196         Use image->module_count.
20197         * assembly.c (mono_assembly_load_references): Use image->module_count.
20198         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
20199         Likewise.
20200
20201 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20202
20203         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
20204         Avoid assert on generic types.
20205
20206 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
20207
20208         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
20209
20210         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
20211
20212         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
20213         function to convert a MarshalSpec structure to its managed counterpart.
20214
20215         * reflection.c: Fix warnings.
20216         
20217         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
20218         field.
20219
20220         * icall.c (mono_create_icall_signature): Fix build.
20221
20222 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20223
20224         * icall.c: Add MakePointType icall.
20225
20226         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
20227         warnings.
20228
20229 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20230
20231         * threadpool.c: reuse allocated slots in the queue.
20232
20233 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20234
20235         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
20236
20237         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
20238
20239         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
20240         previous change.
20241
20242         * tabledefs.h: Add constants for pinvoke attributes BestFit and
20243         ThrowOnUnmappableChar.
20244
20245         * icall.c (ves_icall_Type_GetPacking): New icall.
20246
20247 2004-09-24  Martin Baulig  <martin@ximian.com>
20248
20249         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20250
20251 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20252
20253         * appdomain.c:
20254         (mono_domain_set): allow setting a domain that is being unloaded.
20255         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20256         being unloaded.
20257
20258 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20259
20260         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20261         the GetCustomAttributes icall.
20262
20263 2004-09-23  Martin Baulig  <martin@ximian.com>
20264
20265         * object-internals.h (MonoReflectionGenericParam): Replaced
20266         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20267         with `guint32 attrs'.
20268
20269 2004-09-23  Martin Baulig  <martin@ximian.com>
20270
20271         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20272
20273 2004-09-23  Martin Baulig  <martin@ximian.com>
20274
20275         * object-internals.h (GenericParameterAttributes): New enum.
20276
20277 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20280         
20281         * class.c (init_events): Fill out event->other field.
20282
20283         * class.c: Fix warnings.
20284
20285         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20286
20287 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20288
20289         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20290         walk which doesn't supply the IL offset.
20291
20292 2004-09-22  Martin Baulig  <martin@ximian.com>
20293
20294         * reflection.c (mono_reflection_setup_internal_class): If we're
20295         System.ValueType, System.Object or System.Enum, set
20296         `klass->instance_size' and create the vtable.
20297         (mono_reflection_create_internal_class): If we're an enum type,
20298         get the base class from our current corlib.
20299
20300 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20301
20302         * reflection.h (MonoResolveTokenError): New type.
20303
20304         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20305         icall.
20306
20307         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20308
20309 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20310
20311         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20312         Support also calling constructors, but only for already allocated objects.
20313
20314 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20315
20316         * reflection.c (type_get_qualified_name): If the klass is null
20317         return the typename to avoid a NullRefEx.
20318         (encode_cattr_value): Get the qualified name of the boxed type,
20319         not the underlying enumtype.  Fixes #62984.
20320
20321 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * marshal.c: Fix problems with previous checkin.
20324
20325 2004-09-21    <vargaz@freemail.hu>
20326
20327         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20328         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20329
20330         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20331
20332 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20333
20334         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20335         should only return a type for pointers, arrays, and passbyref types.
20336         Fixes bug #63841.
20337
20338 2004-09-21  Martin Baulig  <martin@ximian.com>
20339
20340         * domain.c (mono_debugger_check_runtime_version): New public
20341         function.
20342
20343         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20344
20345 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20346
20347         * reflection.c: Added missing sort to the declarative security 
20348         attributes table. MS implementation stops seeing the attributes if the
20349         token number regress in the table (as shown by ildasm and permview).
20350
20351 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20352
20353         * object-internals.h (MonoReflectionModule): Add 'token' field.
20354         
20355         * reflection.c (mono_reflection_get_token): Add support for Module
20356         and Assembly.
20357         (mono_module_get_object): Set 'token' field.
20358         (mono_module_file_get_object): Set 'token' field.
20359
20360         * icall.c: Add new Assembly and Module icalls.
20361
20362         * appdomain.c: Bump corlib version.
20363
20364 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20365
20366         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20367         tokens of metadata objects.
20368
20369         * reflection.h reflection.c (mono_reflection_get_token): New function
20370         to obtain the token of a metadata object.
20371
20372         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20373
20374 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20375
20376         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20377         
20378         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20379
20380 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20381
20382         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20383         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20384         AssemblyBuilder to access the permissions set in the class lib.
20385         * reflection.c: Added security attributes encoding step in 
20386         mono_image_build_metadata.
20387         * tabledefs.h: Added new security actions defined in 2.0:
20388         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20389
20390 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20391
20392         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20393         macro parameter.
20394
20395 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20396  
20397         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20398           finalized. There where random SIGSEVs at program termination, when
20399           an object being finalized was trying to do a string comparison and
20400           the current culture was already finalized.
20401  
20402 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20403
20404         * threads.c: call thread_cleanup before finishing the thread if we get
20405         there.
20406
20407 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20408
20409         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20410         assemblies from the parent. Fixes #65665.
20411
20412 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20415         modifiers.
20416
20417 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20418
20419         * reflection.h: add prototype for mono_get_dbnull_object
20420         * reflection.c: add prototypes for get_default_param_value_blobs 
20421         and mono_get_object_from_blob for fussier compilers
20422
20423 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20424  
20425         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20426         false deadlock checks in class initialization.
20427  
20428 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20429
20430         * image.c (mono_image_addref): Fix comment.
20431
20432         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20433         possible.
20434
20435 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20436
20437         * reflection.c (mono_param_get_objects): Modified to return
20438         ParameterInfo.DefaultValue object.
20439
20440         (get_default_param_value_blobs):
20441         (mono_get_object_from_blob):
20442         (mono_get_dbnull_object): New helper routines. 
20443
20444         * object.c (mono_get_constant_value_from_blob): New helper routine
20445         carved out from get_default_field_value ()
20446
20447         * object-internals.h (mono_get_constant_value_from_blob): Added
20448         function declaration.
20449
20450 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20451
20452         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20453         referenced assemblies. Fixes #62135.
20454
20455         * exception.h exception.c (mono_get_exception_file_not_found2): New
20456         helper function.
20457
20458 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20459
20460         * class.h class.c: Add mono_type_get_underlying_type ().
20461
20462 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20463
20464         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20465         Fix GetTypes() to support dynamically created assemblies.
20466
20467 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20470         
20471         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20472         previous patch.
20473
20474         * reflection.h reflection.c loader.c: Allow dynamic construction of
20475         pinvoke methods. Fixes #65571.
20476         
20477         * reflection.c (mono_reflection_get_type): Revert previous change since
20478         it causes regressions.
20479
20480 2004-09-08  Martin Baulig  <martin@ximian.com>
20481
20482         * class.c (class_compute_field_layout): Don't call
20483         mono_class_layout_fields() for open generic instances.
20484
20485 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20486         * threads.c appdomain.c: fix typo in GC macro
20487
20488 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20489
20490         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20491         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20492
20493 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20494
20495         * image.c (mono_image_close): Applied patch from 
20496         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20497         assembly is loaded multiple times from data.
20498         
20499         * image.c (mono_image_open): Fix warning.
20500
20501 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20502
20503         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20504         once. Fixes #58334.
20505         
20506         * reflection.c (mono_reflection_create_runtime_class): Initialize
20507         klass->nested_classes. Fixes #61224.
20508
20509 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20510
20511         * threads.c: sched_yield() on exit, to allow threads to quit.
20512
20513 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20514
20515         * object.c (mono_unhandled_exception): Remove leftover debug code.
20516
20517 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20518
20519         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20520
20521 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20524         
20525         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20526
20527 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20528
20529         * marshal.c (emit_marshal_array): Null terminate string arrays.
20530         
20531         * marshal.c (raise_auto_layout_exception): Fix warning.
20532
20533         * reflection.c (mono_param_get_objects): Initialize the default value
20534         with DBNull.Value, not null. Fixes #62123.
20535
20536 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20537
20538         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20539         throw an exception with a cute explanation.
20540
20541 2004-09-06  Dick Porter  <dick@ximian.com>
20542
20543         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20544         Close the new process's thread handle, as we don't use it.  The
20545         handle stays around forever otherwise.
20546
20547 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20548
20549         * object.c (arith_overflow): Fix warning.
20550
20551         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20552         calling conventions in method refs. Fixes #65352.
20553
20554         * reflection.c: Fix warnings.
20555
20556 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20557
20558         * icall.c: Add a new icall for Array.Clear
20559
20560 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20561
20562         * object.c: When allocating an array, we have to throw
20563         an overflow exception if any of the lengths are < 0.
20564
20565 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20568         properly. Also move implementation of string array marshalling to 
20569         managed code. Fixes #42316.
20570
20571 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20572
20573         * assembly.c: provide more information when loading an assembly fails.
20574
20575 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20576
20577         * filewatcher.c: don't expect the development fam package to be
20578         installed.
20579
20580 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20581
20582         * marshal.c: Make a copy of the signature cookie since it will be
20583         freed by the caller.
20584         
20585         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20586
20587         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20588
20589         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20590         marshal specs.
20591
20592         * marshal.c: More refactoring.
20593         
20594         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20595         smaller functions.
20596
20597 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20598
20599         * object.c: In mono_message_invoke, fill the output parameter array after
20600           calling the managed method (it was done before the call). This fixes
20601           bug #59299.
20602
20603 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20606         as well.
20607
20608 2004-09-02  Martin Baulig  <martin@ximian.com>
20609
20610         * class.c (mono_class_instance_size): Don't allow generic type
20611         definitions or open generic instances.
20612         (mono_class_array_element_size): If we're a value type, call
20613         mono_class_instance_size() on the original class.
20614
20615         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20616         handle generic instances.
20617
20618         * mono-debug-debugger.c (write_type): Handle generic instances
20619         like classes.
20620
20621 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20624         the allocation request fails. Fixes #65089.
20625
20626         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20627         
20628         * object.c (mono_runtime_free_method): New function to free a dynamic
20629         method.
20630
20631         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20632         delegate trampoline.
20633
20634         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20635         with hasthis as dynamic,
20636
20637         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20638
20639         * domain.c (mono_jit_info_table_remove): New function to remove an
20640         entry from the jit info table.
20641
20642         * class-internals.h (MonoMethod): Add 'dynamic' field.
20643
20644         * loader.c: Fix warnings.
20645
20646 2004-09-01  Martin Baulig  <martin@ximian.com>
20647
20648         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20649         instead of mono_debugger_lock() because the latter one is a no-op
20650         unless running in the debugger.
20651
20652 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20653
20654         * class.c (class_compute_field_layout): Classes with auto-layout or
20655         reference fields are not blittable.
20656         
20657 2004-09-01  Dick Porter  <dick@ximian.com>
20658
20659         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20660         mono_image_get_filename() to get the assembly location.
20661
20662         * icall.c:
20663         * metadata.h: Fix compile warnings
20664
20665 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * class.c (class_compute_field_layout): System.Object is blittable.
20668
20669         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20670         as in/out. Fixes #59909.
20671
20672 2004-09-01  Martin Baulig  <martin@ximian.com>
20673
20674         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20675         mono_metadata_generic_inst_is_valuetype() if we're a generic
20676         instance to check whether our underlying type is a reference type.
20677
20678 2004-09-01  Martin Baulig  <martin@ximian.com>
20679
20680         * metadata.c (mono_type_size): If we're a generic instance, call
20681         mono_class_value_size() for value types.
20682
20683 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * marshal.c: Implement more custom marshalling functionality. Fixes
20686         #64915.
20687
20688 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20689
20690         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20691
20692 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20695
20696         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20697
20698         * icall.c: Fix some warnings.
20699
20700         * threads.c (abort_appdomain_thread): Fix unref errors.
20701         (mono_thread_current): Fix THREAD_DEBUG define.
20702
20703 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20704
20705         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20706
20707         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20708
20709 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20712         string arrays.
20713
20714 2004-08-28  Martin Baulig  <martin@ximian.com>
20715
20716         * metadata.c
20717         (mono_metadata_generic_inst_is_valuetype): New public function.
20718
20719         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20720         mono_metadata_generic_inst_is_valuetype() if we're a generic
20721         instance to check whether our underlying type is a valuetype.
20722
20723 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20724
20725         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20726         #63768.
20727
20728 2004-08-25  Martin Baulig  <martin@ximian.com>
20729
20730         * loader.c (mono_get_method_from_token): Abstract methods can also
20731         be generic and thus have type parameters.
20732
20733         * metadata-internals.h
20734         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20735
20736         * reflection.c (mono_image_get_generic_param_info): Don't create a
20737         metadata row, just add an entry to the `gen_params' array.
20738         (build_compressed_metadata): Sort the `gen_params' array and then
20739         actually create the metadata.
20740
20741 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20742
20743         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20744
20745 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20748
20749 2004-08-24  Martin Baulig  <martin@ximian.com>
20750
20751         * class.cs (mono_class_is_subclass_of): Like an interface, a
20752         generic instance also derives from System.Object.
20753
20754 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20755
20756         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20757         custom modifiers to be in any order. Fixes #61990.
20758
20759 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20760
20761         * object.c: Register mono_object_new_fast icall.
20762         
20763         * object.c (mono_class_get_allocation_ftn): Return to calling
20764         mono_object_new_fast, since it seems faster to compute the object 
20765         size in unmanaged code than passing it as a parameter.
20766
20767         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20768
20769         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20770         this function with Boehm as the oom handler, so we don't have to check
20771         the result of GC_malloc.
20772
20773         * object.c: Remove checks for oom.
20774
20775         * object.h object.c (mono_class_get_allocation_ftn): New function to
20776         return the icall which can be used to allocate an instance of a given
20777         class. 
20778
20779         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20780
20781         * class-internals.h: Add 'enabled' field.
20782
20783 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20784
20785         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20786
20787 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20788         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20789         value 0x0010.
20790
20791 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20792
20793         * appdomain.c: use the Tls function for appdomain too,
20794         at Zoltan's request. Actually return in mono_context_get
20795
20796         * appdomain.c, profiler.c, threads.c: use __thread
20797
20798 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20799
20800         * appdomain.c threads.c: Call GC_CreateThread on windows.
20801
20802         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20803         multiple libraries since this don't work on windows.
20804
20805 2004-08-18  Martin Baulig  <martin@ximian.com>
20806
20807         * class-internals.h
20808         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20809         MonoMethodHeader.
20810
20811         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20812         MonoMethodNormal since we also need it for abstract and interface
20813         methods.
20814
20815         * reflection.c
20816         (build_compressed_metadata): Sort the GenericParam table.
20817         (mono_image_create_token): Added `gboolean create_methodspec'
20818         argument; this is false when generating a MethodImpl token.
20819         (reflection_methodbuilder_to_mono_method): Abstract and interface
20820         methods may also have generic parameters.
20821
20822 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20823
20824         * appdomain.c: thread local alloc
20825
20826 2004-08-17  Martin Baulig  <martin@ximian.com>
20827
20828         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20829
20830         * icall.c
20831         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20832         argument.
20833
20834         * class.c (mono_type_get_full_name): New public function.
20835         (mono_type_get_name): Don't include the type arguments.
20836
20837 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20840         for inclusion into the mono executable.
20841
20842 2004-08-16  Martin Baulig  <martin@ximian.com>
20843
20844         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20845         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20846
20847 2004-08-14  Martin Baulig  <martin@ximian.com>
20848
20849         * class.c (dup_type): Also copy the `byref' field.
20850
20851 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20852
20853         * reflection.c (create_dynamic_mono_image): Revert the last change 
20854         since it breaks bootstrap.
20855
20856 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20859
20860         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20861         not free them with g_free.
20862
20863 2004-08-11  Martin Baulig  <martin@ximian.com>
20864
20865         * reflection.c (mono_reflection_setup_internal_class): Also call
20866         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20867
20868 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20869
20870         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20871         called during default (first) AppDomain creation. Keep track of
20872         Evidence when loading assemblies.
20873
20874 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20875
20876         * opcodes.c, opcodes.h: reduce runtime relocations.
20877
20878 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20879
20880         * culture-info.h, locales.c: fixes and chages to sue the new
20881         optimized format of the locale data.
20882         * culture-info-tables.h: regenerated.
20883
20884 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20885         
20886         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20887
20888 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20889
20890         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20891         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20892         * domain-internals.h: icall declaration.
20893         * icall.c: icall registration.
20894         * object-internals.h: New fields in MonoAssembly for CAS.
20895
20896 2004-08-05  Duncan Mak  <duncan@ximian.com>
20897
20898         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20899         CEE_LDELEM_ANY.
20900
20901 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20902
20903         * reflection.c: fix to deal with object[] arrays in custom ctors
20904         (bug #62550).
20905
20906 2004-08-05  Martin Baulig  <martin@ximian.com>
20907
20908         * class.c (mono_class_array_element_size): Added support for
20909         generic instances and correctly handle "recursive" types.
20910
20911 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20912
20913         * assembly.c: Fix warnings.
20914
20915 2004-08-04  Martin Baulig  <martin@ximian.com>
20916
20917         * class.c
20918         (mono_type_get_name_recurse): Added `gboolean include_arity'
20919         argument specifying whether or not we should include the generic
20920         arity in the type name.
20921         (_mono_type_get_name): New static function.
20922         (mono_class_setup_vtable): If we're a generic instance, don't
20923         include the generic arity in the names of explicit method
20924         implementations.        
20925
20926 2004-08-03  Martin Baulig  <martin@ximian.com>
20927
20928         * class.c (mono_type_get_name_recurse): Enclose the generic type
20929         arguments in `<', '>'.
20930
20931 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20932
20933         * gc.c: make GC warning messages use the trace API, they are just
20934         noise to most of the users.
20935
20936 2004-08-03  Martin Baulig  <martin@ximian.com>
20937
20938         * debug-mono-symfile.c (read_string): Correctly read the string.
20939
20940 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20941
20942         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20943         
20944         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20945         icalls.
20946         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20947
20948 2004-07-30  Martin Baulig  <martin@ximian.com>
20949
20950         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20951         Reflect latest symbol writer changes.   
20952
20953 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20954
20955         * object.c: always create an object if null is passed
20956         to Invoke() where a valuetype is expected.
20957
20958 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20959
20960         * marshal.c (mono_marshal_init): make managed
20961         signatures match native ones better for 64bits.
20962
20963 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20964
20965         * appdomain.c: hack to build correctly the private bin path on windows.
20966         Fixes bug #61991.
20967
20968 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20969
20970         * assembly.c: Load mscorlib from the correct framework directory
20971           (mono/<version>/mscorlib.dll).
20972         * appdomain.h: Added prototypes for new functions.
20973         * internals.h: Added some prototypes.
20974         * domain.c: When initializing the runtime, get from the executable and
20975           the configuration files the runtime version that the app supports.
20976           Added support methods for reading app.exe.config. Added list of versions
20977           supported by the JIT. Added two new methods: mono_init_from_assembly,
20978           which initializes the runtime and determines the required version from
20979           the provided exe file, and mono_init_version, which initializes
20980           the runtime using the provided version.
20981         * icall.c: Get machine.config from version-specific directory.
20982         * reflection.c: When generating an image, embed the version number
20983           of the current runtime.
20984
20985 2004-07-28  Dick Porter  <dick@ximian.com>
20986
20987         * socket-io.c
20988         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20989         returned sockaddr size before creating the remote address object.
20990         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20991         61608.
20992
20993 2004-07-28  Dick Porter  <dick@ximian.com>
20994
20995         * locales.c (string_invariant_compare_char): Fix invariant char
20996         compares between upper and lower cases.  Fixes bug 61458.
20997
20998 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20999         
21000         * marshal.c: actually cache stelem.ref wrappers.
21001         
21002 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21003
21004         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
21005         sections and remove the mono_cli_rva_map () function.
21006
21007 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21008
21009         * debug-mono-symfile.c: fix one more endianess issue, from a patch
21010         by Geoff Norton (<gnorton@customerdna.com>).
21011
21012 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
21013
21014         * class.c: fix class loads for pointer types (typeof(int) !=
21015         typeof(int*)).
21016
21017 2004-07-27  Martin Baulig  <martin@ximian.com>
21018
21019         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
21020         reading the debugging information from an external ".mdb" file.
21021
21022 2004-07-24  Martin Baulig  <martin@ximian.com>
21023
21024         * reflection.c (mono_image_get_type_info): Only write a class
21025         layout entry if we actually have a size or a packing size.
21026
21027 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21028
21029         * reflection.c (type_get_fully_qualified_name): 
21030         insert cast to get type checking of ?: with non-gcc compilers
21031
21032 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
21033
21034         * rand.c: use g_getenv for both lookups of
21035         MONO_EGD_SOCKET
21036
21037 2004-07-17  Martin Baulig  <martin@ximian.com>
21038
21039         * reflection.c (mono_reflection_bind_generic_method_parameters):
21040         Set `gmethod->reflection_info'.
21041
21042 2004-07-17  Martin Baulig  <martin@ximian.com>
21043
21044         * class.c (mono_class_create_from_typedef): Insert the newly
21045         created class into the hash table before computing the interfaces
21046         since we could be called recursively.
21047
21048 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21049
21050         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
21051         function to implement stelem.ref in managed code
21052         * class-internals.h, debug-helpers.c: a new wrapper type
21053         for the above.
21054
21055 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
21056
21057         * gc.c: allow GC handles to work even when no GC is compiled in.
21058         Fix part of bug #61134 (GetAddrOfPinnedObject).
21059
21060 2004-07-13  Peter Williams  <peter@newton.cx>
21061  
21062         * process.c (complete_path): Make sure we don't attempt to execute
21063         directories.
21064  
21065 2004-07-12  Geoff Norton <gnorton@customerdna.com>
21066
21067         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
21068           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
21069           and will add/subtract the hour if needed
21070
21071 2004-07-12  Martin Baulig  <martin@ximian.com>
21072
21073         * reflection.c (mono_field_get_object): If we have
21074         `field->generic_info', take the attributes from
21075         `field->generic_info->generic_type'.    
21076
21077 2004-07-12  Martin Baulig  <martin@ximian.com>
21078
21079         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
21080         This function must be called before initializing the runtime.
21081         (mono_debug_init_1): New function; call this after initializing
21082         the runtime, but before loading the assembly.  It tells the
21083         debugger to load corlib and the builtin types.
21084
21085         * mono-debug-debugger.c: Did some larger changes in the debugging
21086         code; support recursive class declarations, make sure we actually
21087         add all classes.
21088
21089 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21090
21091         * debug-helpers.c: undo my previous patch and fixed the real issue in
21092         ../mini/exceptions-x86.c
21093
21094 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21095
21096         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
21097         when no HOME env. variable was set and a NullRef was thrown in a .cctor
21098         called from other .cctors.
21099
21100 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
21101
21102         * loader.c: Removed the mono_loader_wine_init hack now that we are
21103         doing a managed version of Windows.Forms.
21104
21105 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21106
21107         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
21108         threadpool.c, threads.c: remove static data from rootset.
21109
21110 2004-07-09  Dick Porter  <dick@ximian.com>
21111
21112         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
21113         Don't do any more processing if the matched length was 0.  It was
21114         increasing the size of the string before.  Fixes bug 61167.
21115
21116 2004-07-09  Dick Porter  <dick@ximian.com>
21117
21118         * socket-io.h:
21119         * socket-io.c
21120         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
21121         Add support for SO_PEERCRED if its available.
21122
21123 2004-07-09  Peter Bartok <pbartok@novell.com>
21124         * loader.c: winelib.exe.so error message is now only displayed if
21125         MONO_DEBUG is set. To help us avoid questions when people are trying
21126         out the new Managed.Windows.Forms.
21127
21128 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21129
21130         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
21131         for isinst and castclass wrappers.
21132
21133         * class-internals.h icall.c: Move registration and lookup of JIT icalls
21134         to libmetadata from the JIT, so they could be used by the marshalling
21135         code and the interpreter.
21136
21137         * marshal.c: Register marshalling related JIT icalls here instead of
21138         in mini.c. Use CEE_MONO_ICALL instead of the family of 
21139         CEE_MONO_PROC<x> opcodes to call marshalling functions.
21140
21141         * metadata.h: Remove unneeded marshalling conversions.
21142
21143         * opcodes.c: Update for new opcodes.
21144         
21145 2004-07-08  Martin Baulig  <martin@ximian.com>
21146
21147         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
21148         (mono_debug_get_domain_data): Make this function static.
21149
21150 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21151
21152         * gc.c, object.h: add nice GC handle API for embedders.
21153
21154 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21155
21156         * reflection.c: more changes for the new api
21157
21158         * object.c: When we reflect on a field w/ a constant value, it
21159         will not have a memory location, so we must access metadata. Also,
21160         allow easier reading of strings so that we can read them from
21161         the constant data.
21162
21163         * class.c (mono_class_layout_fields): no need for literal fields here.
21164
21165         * class-internals.h: api changes for const fields
21166
21167         * icall.c (ves_icall_get_enum_info): use new apis for const fields
21168
21169 2004-07-06  Martin Baulig  <martin@ximian.com>
21170
21171         * mono-debug.h: Increment version number to 44.
21172
21173         * mono-debug.c (mono_debug_add_wrapper): The second argument is
21174         now a gpointer, rewrote this whole method.
21175
21176         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
21177         function.  Add information about the wrapper in a new "misc table".
21178
21179         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
21180         for the new misc table.
21181
21182 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21183
21184         * metadata-internals.h image.c: Add a cache for helper signatures.
21185
21186         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
21187
21188 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
21191         delegates from a delegate. Fixes #61033.
21192         
21193         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
21194         marshalling of stringbuilder arrays. Fixes #59900.
21195
21196 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21197
21198         * icall.c: Add EnumBuilder:setup_enum_type icall.
21199
21200 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21201
21202         * icall.c: Added a new icall for the property version of
21203         OffsetOfStringData.
21204
21205 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21206
21207         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
21208         it has a constant size across platforms.
21209
21210         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
21211         stack trace.
21212
21213 2004-06-29  Martin Baulig  <martin@ximian.com>
21214
21215         * mono-debug.c (mono_debug_add_method): Protect the whole function
21216         in mono_debugger_lock(), not just parts of it.
21217
21218 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21219
21220         * reflection.c: make sure padding bytes in heaps are zeroed.
21221
21222 2004-06-24  David Waite  <mass@akuma.org>
21223
21224         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
21225         image.c, loader.c, locales.c, marshal.c, metadata.c,
21226         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
21227         string-icalls.c, threads.c: change to C90-style comments from C99 /
21228         C++ -style
21229
21230 2004-06-24  Dick Porter  <dick@ximian.com>
21231
21232         * threads.c
21233         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
21234         return createdNew.  Fixes bug 60412.
21235
21236         * threads-types.h: 
21237         * icall.c: Add createdNew parameter to CreateMutex icall
21238
21239 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21240
21241         * reflection.c, object-internals.h: save default value in params.
21242
21243 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21244
21245         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
21246         no need to build a new path combining that with the application base.
21247         Fixes bug #60442.
21248
21249 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21250
21251         * reflection.c: fixed minor standard compliance issues.
21252
21253 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21254
21255         * reflection.c: fixed issue with encoding some custom attributes
21256         (arrays in properties and fields, bug #60411).
21257
21258 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21259
21260         * reflection.c: fix start address when copying the public key token.
21261
21262 2004-06-23  Martin Baulig  <martin@ximian.com>
21263
21264         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21265         the `exc' object in a static object to put it into the GC's root set.
21266
21267 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21268
21269         * reflection.c: make mono_reflection_setup_internal_class ()
21270         callable a second time to setup a new parent class.
21271
21272 2004-06-23  Dick Porter  <dick@ximian.com>
21273
21274         * threads.c: Check for WAIT_IO_COMPLETION return values.
21275
21276 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21277
21278         * appdomain.c: Removed the g_free on the public key token. Now copy 
21279         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21280         * assembly.c: Added public key token string value when loading 
21281         assemblies. Fix bug #60439.
21282         * icall.c: Added missing informations (like public key) in 
21283         GetReferencedAssemblies. Fix #60519.
21284         * image.h: Changed definition for public key token from const char*
21285         public_tok_value to guchar public_key_token [17];
21286         * reflection.c: Updated for changes to public key token.
21287
21288 2004-06-22  Lluis Sanchez Gual
21289
21290         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21291         for the field in base classes.
21292
21293 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21294
21295         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21296         mark headers as not supported, they are installed only for use by the
21297         debugger.
21298
21299 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21300
21301         * *.c, *.h: avoid namespace pollution in public headers.
21302
21303 2004-06-21  Martin Baulig  <martin@ximian.com>
21304
21305         * exception.c (mono_get_exception_security): It's in
21306         "System.Security", not in "System".
21307
21308         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21309         the exception classes.
21310
21311 2004-06-21  Martin Baulig  <martin@ximian.com>
21312
21313         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21314         Protect the exception object from being finalized.
21315
21316 2004-06-21  Martin Baulig  <martin@ximian.com>
21317
21318         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21319         public function.
21320
21321 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21322
21323         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21324         if it was not loaded before. Fix parts of #60439.
21325
21326 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21327
21328         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21329         code that was broken since Ben's change: wrappers are now
21330         dependent on the method signature only again.
21331
21332 2004-06-21  Martin Baulig  <martin@ximian.com>
21333
21334         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21335         added interface support.
21336
21337 2004-06-21  Martin Baulig  <martin@ximian.com>
21338
21339         * class.c (mono_vtable_get_static_field_data): New public method.
21340
21341 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21342
21343         * filewatcher.c : Windows build fix to be compliant with API changes.
21344
21345 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21346
21347         * class.h, class.c: more accessors.
21348         * metadata.h, metadata.c: prepare for hiding MonoType and
21349         MonoMethodSignature: people should use the accessors from now on
21350         outside of the tree.
21351
21352 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21353
21354         * *.c, *.h: more API cleanups.
21355
21356 2004-06-18  Jackson Harper  <jackson@ximian.com>
21357
21358         * assembly.c: Trace loading assemblies.
21359         * loader.c: Trace loading native libraries.
21360         * mono-config.c: Trace loading config files.
21361         
21362 2004-06-18  Dick Porter  <dick@ximian.com>
21363
21364         * locales.c: Tell ICU the lengths of strings, it can cope with
21365         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21366
21367 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21368
21369         * image.c: swapped name/filename;
21370
21371 2004-06-18  Martin Baulig  <martin@ximian.com>
21372
21373         * mono-debug-debugger.c (write_class): Write the parent class at
21374         the end of the header.
21375
21376 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21377
21378         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21379
21380 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21381
21382         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21383         (bundle_obj): New conditional define.
21384         (BUILT_SOURCES): Remove.
21385         ($(bundle_srcs)): Make parallel-make safe.
21386         (libmonoruntime_la_LIBADD): Make unconditional.
21387         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21388         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21389
21390 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21391
21392         * culture-info-tables.h: It was inconsistent with the latest
21393           supp info files.
21394
21395 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21396
21397         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21398         be loaded.
21399
21400         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21401         with gcc 2.95.
21402
21403 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21404
21405         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21406         cleaned up public header threads.h.
21407
21408 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21409
21410         * Makefile.am, *.c, *.h: more API cleanups.
21411
21412 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21413
21414         * Makefile.am: removed monosn from compilation.
21415         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21416         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21417         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21418         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21419         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21420         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21421
21422 2004-06-15  Jackson Harper  <jackson@ximian.com>
21423
21424         * assembly.c: Make locales lower case when searching the GAC for
21425         assemblies. gacutil will always make locales lowercase when
21426         installing so this effectively makes them case insensitive.
21427         
21428 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21429
21430         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21431         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21432           parameter which allows to choose whether the wait can be interrupted or 
21433           not. Also added the method mono_monitor_enter(), which locks the monitor
21434           using an infinite wait and without allowing interruption.
21435           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21436           interrupted.
21437         * object.h: Added new fields in MonoThread. suspend_event holds the event
21438           used to susped/resume the thread. synch_lock is the lock object to use for
21439           modifying the thread state.
21440         * threads.c: Use the new synch_lock object for locking, instead of "this",
21441           which can generate deadlocks.
21442           Moved thread state change in Thread.Sleep and Thread.Join from managed
21443           to unmanaged code. This avoids a deadlock when the thread was suspended
21444           just after acquiring the thread lock.
21445           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21446           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21447           which is not fully implemented in the io-layer.
21448         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21449
21450 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21451
21452         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21453         threads-types.h: more API cleanups.
21454
21455 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21456
21457         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21458         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21459         threadpool.c, threads.c: first pass at the exported API cleanup.
21460
21461 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21462
21463         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21464
21465 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21466
21467         * icall.c: added internalGetHome.
21468
21469 2004-06-14  Dick Porter  <dick@ximian.com>
21470
21471         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21472         possible to return successfully when '.' or '..' were the only
21473         entries in a directory, but were skipped.  The MonoIOStat was not
21474         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21475         Fixes bug 59574.
21476
21477 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21478
21479         * reflection.c: make binaries run on .Net 1.1 by default.
21480
21481 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21482
21483         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21484
21485 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21486
21487         * marshal.c: keep track of struct size with explicit layout
21488         (bug #59979).
21489
21490 2004-06-12  Martin Baulig  <martin@ximian.com>
21491
21492         * mono-debug-debugger.c: Comment out a debugging g_message().
21493
21494 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21495
21496         * reflection.c, reflection.h: do not free custom attrs that are cached.
21497         * icall.c: use braces to make code clearer.
21498
21499 2004-06-11  Martin Baulig  <martin@ximian.com>
21500
21501         * class.h (MonoInflatedField): New type.
21502         (MonoClassField): Replaced `MonoType *generic_type' with
21503         `MonoInflatedField *generic_info'.
21504
21505         * icall.c
21506         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21507
21508 2004-06-11  Martin Baulig  <martin@ximian.com>
21509
21510         * reflection.c (mono_image_create_method_token): Correctly encode
21511         varargs methods.
21512
21513 2004-06-11  Martin Baulig  <martin@ximian.com>
21514
21515         * metadata.c (mono_metadata_parse_method_signature): When parsing
21516         a MethodDef which has VarArgs, also set sentinelpos if we don't
21517         have any parameters.
21518
21519 2004-06-11  Martin Baulig  <martin@ximian.com>
21520
21521         * verify.c (mono_method_verify): In CEE_CALL, use
21522         mono_method_get_signature() to get the method's signature, unless
21523         we're a PInvoke method.
21524
21525 2004-06-10  Jackson Harper  <jackson@ximian.com>
21526
21527         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21528         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21529         logical name as the supplied path is just a prefix to the gac not
21530         the direct path to it.
21531         
21532 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21533
21534         * reflection.c: make the token for a created method match
21535         the token of the MethodBuilder it was created from
21536         (IKVM requires this behaviour now).
21537
21538 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21539
21540         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21541         reflection.c, socket-io.c: leak fixes.
21542
21543 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21544
21545         * icall.c: handle sentinel pos in vararg methods in position different
21546         from 0.
21547
21548 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21549
21550         * culture-info-tables.h: freshly generated.
21551
21552 2004-06-09  Martin Baulig  <martin@ximian.com>
21553
21554         * loader.c (mono_get_method_constrained): Call `mono_class_init
21555         (constrained_class)'.   
21556
21557 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21558
21559         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21560         any methods. Fixes #59629.
21561
21562 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21563
21564         * culture-info-tables.h: reflecting locale-builder updates.
21565
21566 2004-06-08  Dick Porter  <dick@ximian.com>
21567
21568         * object.h:
21569         * locales.c: Fixed compile warnings, including a real bug in
21570         CompareInfo_internal_compare.
21571         
21572 2004-06-08  Dick Porter  <dick@ximian.com>
21573
21574         * locales.c
21575         (ves_icall_System_Globalization_CompareInfo_internal_index):
21576         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21577         Double-check the resuls of usearches, because ICU currently
21578         ignores most of the collator settings here.  Fixes bug 59720.
21579         
21580 2004-06-08  Dick Porter  <dick@ximian.com>
21581
21582         * locales.c
21583         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21584         Fix memory leak and segfault-causing typo.  No idea how this one
21585         lasted so long without being noticed.
21586
21587 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21588
21589         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21590         any methods. Fixes #59629.
21591
21592 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21593
21594         * assembly.c:
21595         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21596         own the critical section before). Removed dead code (that's done
21597         in the preload hook).
21598
21599         (mono_assembly_load_with_partial_name): call the preload hook.
21600
21601 2004-06-08  Martin Baulig  <martin@ximian.com>
21602
21603         * metadata.c (mono_metadata_signature_alloc): Default
21604         `sentinelpos' to -1.
21605
21606         * reflection.c (mono_image_get_array_token): Likewise.
21607
21608 2004-06-08  Martin Baulig  <martin@ximian.com>
21609
21610         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21611
21612         * metadata.c (mono_metadata_parse_method_signature): When parsing
21613         a MethodDef which has VarArgs, set sentinelpos.
21614
21615         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21616         `gint16' since we're using -1 for non-varargs methods.
21617
21618         * reflection.c
21619         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21620         (method_encode_signature): Added varargs support.
21621         (method_builder_encode_signature): Likewise.
21622         (mono_image_get_varargs_method_token): New static method.
21623         (mono_image_create_method_token): New public method; this is
21624         called via an icall instead of mono_image_create_token() when
21625         calling a varargs method.       
21626
21627 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21628
21629         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21630
21631 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21632
21633         * culture-info-tables.h : Reflecting the latest locale-builder that
21634           fixed empty array representation ({} to {0}).
21635
21636 2004-06-07  Jackson Harper  <jackson@ximian.com>
21637
21638         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21639         looking up extra gac paths. This allows MONO_GAC_PATH to act
21640         exactly like a prefix.
21641         
21642 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21643
21644         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21645         type name before modifying it. Fixes #59405.
21646
21647 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21648
21649         * culture-info.h: added fields for "all datetime patterns".
21650         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21651           _construct_datetime_format ()): fill xxx_patterns fields.
21652         * object.h: added fields for "all datetime patterns" to
21653           MonoDateTimeFormatInfo.
21654         * culture-info-tables.h: reflecting locale-builder updates.
21655
21656 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21657
21658         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21659         the event has no add and remove methods. Fixes #59629.
21660
21661 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21662
21663         * object.c: Fixed possible integer overflow when allocating large
21664         strings.
21665
21666 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21667
21668         * culture-info-tables.h: reflecting locale-builder updates.
21669
21670 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21671
21672         * culture-info-tables.h: reflecting locale-builder updates.
21673
21674 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21675
21676         * culture-info-tables.h: reflecting locale-builder updates.
21677
21678 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21679
21680         * threads.c: Made Thread.Sleep abortable.
21681
21682 2004-06-02  Martin Baulig  <martin@ximian.com>
21683
21684         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21685
21686         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21687
21688 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21689
21690         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21691
21692 2004-05-30  Jackson Harper  <jackson@ximian.com>
21693
21694         * reflection.c: Do not hardcode assembly versions or public key
21695         tokens anymore. All of this except the corlib section was dead
21696         code anyways.
21697         
21698 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21699
21700         * object.c (mono_runtime_invoke_array): Automatically create boxed
21701         objects for byref valuetypes if needed. Fixes #59300.
21702         
21703         * object.c (mono_method_return_message_restore): Handle 
21704         MONO_TYPE_OBJECT as well.
21705
21706 2004-05-28  Jackson Harper  <jackson@ximian.com>
21707
21708         * reflection.c: The modified type encoding was causing build
21709         problems. Reverted for now.
21710         
21711 2004-05-28  Jackson Harper  <jackson@ximian.com>
21712
21713         * reflection.c/h: Take an assembly ref so that we dont create
21714         fully qualified names when encoding types in the same assembly as
21715         the custom attribute being emitted.
21716         * appdomain.c: Increment version number.
21717         
21718 2004-05-26  Duncan Mak  <duncan@ximian.com>
21719
21720         * icall.c
21721         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21722         Set the full version number (major, minor, build, revision).
21723
21724 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21725
21726         * marshal.c (emit_struct_conv): increment src/dst after blit
21727         (mono_marshal_get_managed_wrapper,
21728         mono_marshal_get_native_wrapper): make sure we have marshalling
21729         info before marshalling params (info computation affects
21730         blittable)
21731
21732         * class.c (class_compute_field_layout): correctly deal with
21733         blittable
21734         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21735         value types (as per what windows dows by default)
21736         (mono_class_setup_mono_type): System.ValueType is blittable
21737         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21738         blittable
21739
21740         * marshal.c (mono_marshal_load_type_info): flag types  as
21741         non-blittable if the native layout doesn't match the managed
21742         layout
21743
21744 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21745
21746         * appdomain.c: don't add stuff in the private search path that is
21747         above the application base. If application base is not set, there's
21748         no private search path.
21749
21750 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21751
21752         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21753         byref struct arguments in native->managed marshalling.
21754
21755 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21756
21757         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21758         cache methods using signature (special case for methods
21759         that are value type or string class)
21760         
21761         * image.c (mono_image_close): clean up allocated GSList's
21762         in runtime_invoke_cache.
21763
21764 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21765
21766         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21767         there's no MONO_CFG_DIR environment variable defined.
21768
21769 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21770
21771         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21772
21773 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21774
21775         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21776           is interrumped.
21777         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21778           before waiting for it, and call CloseHandle after the wait to unref it.
21779           This will make sure that handles are not disposed too early.
21780
21781 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21782
21783         * appdomain.c:
21784         * appdomain.h:
21785         * icall.c: removed
21786         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21787         needed now.
21788
21789         * object.c: se the application_base only for the domain that runs
21790         Main. Fixes bug #59216,
21791
21792 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21793
21794         * appdomain.c:
21795         * object.c: only the domain in which Main is run have
21796         SetupInformation.ConfigurationFile set, so moved a few lines from
21797         appdomain.c to object.c.
21798
21799 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21800
21801         * appdomain.c: we tried to load [name].(dll|exe), but according
21802         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21803         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21804         There's a test case attached to bug #58922.
21805
21806 2004-05-27  Dick Porter  <dick@ximian.com>
21807
21808         * icall.c:
21809         * file-io.c: Implemented icalls for locking and unlocking regions
21810         in a file.
21811         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21812         FALSE on error (fixes both compiler warning and real bug.)
21813
21814 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21815
21816         * culture-info-tables.h: reflecting locale-builder updates.
21817
21818           (Added missing ChangeLog entry for 05/26)
21819
21820 2004-05-27  Jackson Harper  <jackson@ximian.com>
21821
21822         * locales.c: Fix some cut and paste errors.
21823         
21824 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21825
21826         * mono-config.c: set the correct path for config. directory on windows.
21827
21828 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21829
21830         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21831           on win32.
21832
21833 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21836         from pinvoke functions.
21837         
21838         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21839
21840 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21841
21842         * culture-info-tables.h: reflecting locale-builder updates.
21843
21844 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21847         #59086.
21848
21849 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21850
21851         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21852         * icall.c: Modified icalls for RNG.
21853         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21854         Windows (CryptoAPI).
21855
21856 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21857
21858         * locales.c: Fix build.
21859
21860 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21861
21862         * culture-info-tables.h: reflecting locale-builder updates.
21863
21864 2004-05-25  Jackson Harper  <jackson@ximian.com>
21865
21866         * locales.c: When creating the current culture use the $LANGs
21867         specific culture. So DateTimeFormat and NumberFormat entries are created.
21868         
21869 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21870
21871         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21872         a char array as parameter.
21873
21874 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21875
21876         * image.c: In mono_image_open(), always use an absolute path name to
21877           look for already loaded images.
21878
21879 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21880
21881         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21882         missing in the windows build (like older cygwin include files).
21883
21884 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21885
21886         * icall.c: Fixed check for possible integer overflow in Buffer_
21887         BlockCopy icall. Replaced comments style // by /* */.
21888
21889 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21890
21891         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21892         
21893         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21894         check after MONO_VTADDR. Fixes pinvoke2.exe.
21895
21896         * marshal.h marshal.c metadata.h: Add beginnings of support for
21897         ftnptr -> delegate marshalling.
21898
21899 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21902         * threads.c: Fix warnings.
21903
21904 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21905
21906         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21907         * icall.c: Registered icalls for Suspend and Resume.
21908         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21909           Thread.Abort.
21910         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21911         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21912         * process.c: Use WaitForSingleObjectEx.
21913         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21914           checkpoints.
21915         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21916           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21917           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21918           background threads. Added basic support for Abort in Windows.
21919           Start new threads using a managed delegate invoke wrapper. This wrapper
21920           has an interruption checkpoint that is needed since an interruption
21921           can be requested before the thread leaves the unmanaged code that starts 
21922           the thread.
21923         * marshal.c: Added interruption checkpoint after every native call, and
21924           also before managed calls for wrappers called from unmanaged code to
21925           go into managed code.
21926         * object.h: Added new field in MonoThread to keep track of interruption
21927           requests.
21928
21929 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21930
21931         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21932         calls.
21933
21934 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21935
21936         * appdomain.c:
21937         * assembly.c:
21938         * gc.c:
21939         * locales.c:
21940         * mono-config.c:
21941         * rand.c: getenv -> g_getenv (windows!)
21942
21943         * process.c: complete_path is also used on non-windows platforms.
21944
21945 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21946
21947         * icall.c: new signature for Process_Start.
21948
21949         * process.[ch]: new signature for Process_Start. If we're on windows
21950         and UseShellExecute is false, we have to search for the program by
21951         ourselves if we don't get a full path.
21952
21953 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21954
21955         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21956         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21957
21958 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21959
21960         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21961         Fixes bug #58373.
21962
21963 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21964
21965         * process.c: use double quotes to quote program name and arguments on
21966         windows. Fixes bug #58575.
21967
21968 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21969
21970         * file-io.c: don't return "." and ".." when using windows Find*File.
21971
21972 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21973
21974         * marshal.c: Don't pass wrappers to message init because method 
21975         addressed used to lookup metadata. part of remoting[2|3] fix.
21976
21977 2004-05-15  Jackson Harper  <jackson@ximian.com>
21978
21979         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21980         path is essentially the same as MONO_PATH except that it points to
21981         GACs instead of lib directories.
21982         * loader.h: The user gac is gone so we dont need function to
21983         enable/disable it.
21984         * mono-config.c: user gac option is now gone.
21985         
21986 2004-05-15  Jackson Harper  <jackson@ximian.com>
21987
21988         * culture-info.h: Make defines more consistent, add calendar data
21989         to the culture info table.
21990         * culture-info-tables.h: Add basic calendar data. Basically
21991         everyone gets default gregorian until all the data is
21992         updated.
21993         * locales.c: Use the new consistent defines. Set calendar data for
21994         culture info objects.
21995         * object.h: add a field for calendar data to CultureInfo
21996         
21997 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21998
21999         * image.c: image->runtime_invoke_cache is keyed on signatures now.
22000         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
22001         a signature.
22002         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
22003         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
22004         an extra param that is the pointer of the method to invoke. The IL for
22005         the invoke method is no longer specific to the method, but to the
22006         signature of the method. Thus, we can share the same code for multiple
22007         methods. This reduces the number of methods that have to be compiled.
22008
22009 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
22012
22013         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
22014
22015         * icall.c: Optimize Buffer.BlockCopy.
22016
22017 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22018
22019         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
22020         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
22021         quote). Changed them to "MMMM yyyy".
22022
22023 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
22024
22025         * rand.c
22026         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
22027
22028 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
22029
22030         * reflection.h: Updated after changes to managed structures.
22031
22032         * appdomain.c: Bump corlib version.
22033
22034 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22035
22036         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
22037         windows.
22038
22039 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22040
22041         * Makefile.am: link to ../os/libmonoos.la on windows.
22042
22043         * assembly.c:
22044                 -If MONO_DEBUG, warn about non-existing directories in
22045                 MONO_PATH.
22046                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
22047                 compile time variable.
22048                 -Removed init_default_path and call mono_set_rootdir from
22049                 libmonoos.a instead (windows only).
22050
22051         * assembly.h: declare mono_assembly_getrootdir().
22052
22053         * domain.c:
22054         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
22055
22056         * loader.c: s/getenv/g_getenv/
22057
22058 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22059
22060         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
22061
22062         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
22063
22064         * metadata.h: Add new marshalling conversions.
22065
22066         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
22067         function.
22068
22069         * reflection.c (mono_reflection_get_type): Lookup the type in all
22070         modules of a multi-module assembly. Fixes #58291.
22071
22072 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22073
22074         * threads.c: Before aborting a background, set the StopRequested
22075         state.  This avoids throwing the Abort exception.
22076         In mono_thread_manage, don't continue with the shutdown until all
22077         aborted threads have actually stopped.
22078
22079 2004-05-10  Jackson Harper  <jackson@ximian.com>
22080
22081         * locales.c: Remove the modifier from culture names.
22082         
22083 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22084
22085         * Makefile.am: monosn is not installed any more. It has been deprecated
22086         in favor of sn.
22087
22088 2004-05-07  Jackson Harper  <jackson@ximian.com>
22089
22090         * locales.c
22091         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
22092         Fix array construction, add bailout if the length is 0.
22093
22094 2004-05-07  Dick Porter  <dick@ximian.com>
22095
22096         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
22097         machine doesn't have a DNS entry.  Patch by Urs Muff
22098         (umuff@quark.com), fixes bug 57928.
22099
22100 2004-05-06  Jackson Harper  <jackson@ximian.com>
22101
22102         * reflection.c: Handle null PublicTokens properly. alloc mem for
22103         assembly names culture so we dont crash when freeing it.
22104         
22105 2004-05-06  Jackson Harper  <jackson@ximian.com>
22106
22107         * assembly.c: Check the usergac when loading with partial names.
22108         
22109 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22110
22111         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
22112         does nothing for now (not required for Linux/Windows) but the class
22113         library can call it (and a newer or modified runtime could need it).
22114         * icall.c: Registred icall.
22115
22116 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22117
22118         * loader.c: prints a message on module loading error we set MONO_DEBUG
22119         environment variable.
22120
22121 2004-05-05  Jackson Harper  <jackson@ximian.com>
22122
22123         * appdomain.c: Handle PublicKeyToken=null properly.
22124         
22125 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
22126
22127         * environment.c|h: Added icall ves_icall_System_Environment_
22128         GetOSVersionString to get the current OS version as a string.
22129         * icall.c: Registred icall.
22130
22131 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
22132
22133         * object.c: in mono_object_get_virtual_method(), take into account that
22134         non-virtual methods don't have a slot in the vtable. Check needed when
22135         the object is a proxy.
22136
22137 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22138
22139         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
22140         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
22141
22142         * object.c (mono_class_compute_gc_descriptor): Fix warning.
22143
22144         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
22145         passed when a valuetype is expected.
22146
22147         * object.c (mono_unhandled_exception): Only set the exit code if the
22148         exception happens in the main thread. Fixes thread5.exe.
22149
22150         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
22151         invalid names. Fixes #58047.
22152
22153 2004-05-03  Jackson Harper  <jackson@ximian.com>
22154
22155         * assembly.c: This line was committed accidently and is unneeded.
22156         
22157 2004-05-03  Jackson Harper  <jackson@ximian.com>
22158
22159         * icall.c: Add new icall for Assembly::LoadWithPartialName
22160         * assembly.c/.h: new function that probes the GAC to load partial
22161         assembly names by Paolo Molaro.
22162         
22163 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22164
22165         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
22166         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
22167         (type_get_fully_qualified_name): Added PublicKeyToken when building a
22168         full type name.
22169
22170 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22171
22172         * appdomain.c: fixed check for 'neutral' culture and removed warning.
22173         * reflection.c: fix bug when parsing a full type name and Version is not
22174         the last thing in the string.
22175
22176 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
22177
22178         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
22179         crashes when it is freed.
22180
22181 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22182
22183         * assembly.c: print the compat warning to stderr.
22184
22185 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
22186
22187         * assembly.c (mono_assembly_load_references): Add a compatibility
22188         hack to run old applications that might be still referencing the
22189         3300-based assemblies, only do this for System.xxx.
22190
22191 2004-05-01  Jackson Harper  <jackson@ximian.com>
22192
22193         * appdomain.c: If the culture is neutral we set it to "".
22194         
22195 2004-04-29  Jackson Harper  <jackson@ximian.com>
22196
22197         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
22198
22199 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
22200  
22201         * string-icalls.c: added low overhead function for copying chars
22202         * icall.c: added needed icall for the above function
22203  
22204 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22205
22206         * icall.c: fix return value of get_global_assembly_cache.  Implemented
22207         Environment.GetLogicalDrives.
22208
22209 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
22210
22211         * rand.c: try and talk to egd or prngd
22212         for random bytes if opening devices fail.
22213
22214 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
22217         alignment for the type using the native alignment of its members 
22218         instead of using klass->min_align.
22219
22220         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
22221
22222 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22223
22224         * file-io.c:
22225         * socket-io.c: added check for sys/aio.h.
22226
22227 2004-04-28  Dick Porter  <dick@ximian.com>
22228
22229         * threads.c: Don't abort a thread thats already aborting, when
22230         terminating everything.
22231
22232 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22233
22234         * icall.c: added 2 new async calls for Socket.
22235
22236         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
22237         IO on *nix systems.
22238
22239         * threadpool.c: removed unused variable.
22240
22241 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
22244
22245 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22246
22247         * locales.c: put back string_invariant_tolower () and
22248         string_invariant_toupper ().
22249
22250 2004-04-26 David Waite <mass@akuma.org>
22251
22252         * file-io.h:
22253         * socket-io.h:
22254         * threads.h:
22255         * unicode.h: remove comma from end of enumeration declarations
22256
22257 2004-04-26 David Waite <mass@akuma.org>
22258
22259         * debug-mono-symfile.h:
22260         * decimal.c:
22261         * mono_debug.h:
22262         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22263
22264
22265 2004-04-26  Jackson Harper  <jackson@ximian.com>
22266
22267         * appdomain.c: Increment version number.
22268         
22269 2004-04-26  Jackson Harper  <jackson@ximian.com>
22270
22271         * appdomain.c: Set assembly references public token value when
22272         PublicKeyToken is specified, not the hash_value. Free public token
22273         values when free assembly name data. Previously the public key
22274         token was hex decoded, however we are using hex encoded public key
22275         tokens, so this is not neccasary.
22276         * assembly.c: Lookup assemblies in the gac if their public token
22277         value is set. Add function to allow enabling user gac
22278         lookups. Specify whether or not the assembly was loaded from the
22279         GAC. Compare full assembly names when checking the cache for
22280         assemblies (Temporarily disabled see comment in code). Remove
22281         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22282         specifies trace-loader they get extra info to stdout on the
22283         loading of assemblies.
22284         * image.h: Add a field for an assembly references public token
22285         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22286         whether an assembly has been loaded from the GAC.
22287         * image.c: Remove a corlib -> mscorlib name mapping.
22288         * loader.h: Add function to enable/disable the user gac.
22289         * mono-config.c: Check if the usergac is enabled in the config
22290         file.
22291         * icall.c: New icall to determine whether or not an assembly has
22292         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22293         * tabldefs.h: Add constant for assemblyref flag that specifies a
22294         full public key is used instead of a public token.
22295         * reflection.c: Remove mscorlib -> corlib mappings. Set
22296         PublicTokenValue instead of hash value. This value is a hex
22297         string so it does not need to be expanded.
22298
22299 2004-04-26  Martin Baulig  <martin@ximian.com>
22300
22301         * mono-debug-debugger.c (mono_debugger_initialize): Set
22302         `mono_debugger_initialized' before calling mono_debug_lock().
22303
22304 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22305
22306         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22307           InternalToUpper/InternalToLower.
22308         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22309           removed invariant culture shortcut.  This is now done in managed code.
22310         * locales.c: (string_invariant_toupper/tolower) removed.
22311
22312 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22313
22314         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22315         Added Poll internal call.
22316
22317         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22318         call for Poll. Select was too heavy for polling a single socket.
22319
22320         * threadpool.[ch]: added mono_threadpool_cleanup.
22321         * threads.c: use it. Don't use Thread_Abort on windows.
22322
22323 2004-04-23  Martin Baulig  <martin@ximian.com>
22324
22325         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22326
22327 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22328
22329         * icall.c: Registred new icalls for key pair protection and added an
22330         icall for Environment.GetFolderPath on Windows.
22331         * security.c|h: Added new icalls for key pair protection.
22332
22333 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22334
22335         * socket-io.c: don't display the non-supported family warning for known
22336         families. Now this is not displayed on windows when checking support
22337         for IPv4/IPv6.
22338
22339 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22340
22341         * class.c: don't display the layout warning for static fields.
22342
22343 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22344
22345         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22346         * locales.c, locales.h: Added new icalls for culture-specific
22347         Char.ToLower and Char.ToUpper.
22348
22349 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22350
22351         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22352         by David Waite.
22353
22354 2004-04-20  Martin Baulig  <martin@ximian.com>
22355
22356         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22357         of the type name before passing it to mono_reflection_type_from_name().
22358
22359 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22360
22361         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22362         encodings here. Fixes #56965.
22363
22364 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22365
22366         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22367         fix test on strstr result not that I can see anything that
22368         relies on the result.
22369
22370 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22371
22372         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22373         Fixes #57081.
22374
22375         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22376
22377         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22378         function to determine which marshalling to use for strings. Fixes
22379         #56965.
22380
22381         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22382
22383         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22384
22385 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22386
22387         * icall.c: #include mono-config.h
22388
22389 2004-04-15  Jackson Harper  <jackson@ximian.com>
22390
22391         * culture-info-tables.h: Fix date formats for en-US culture.
22392         
22393 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22394
22395         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22396         ThreadPool.SetMinThreads.
22397         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22398         ThreadPool.SetMinThreads.
22399
22400 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22401
22402         * mono-config.c: also load the .config file in the directory
22403         where the assembly was found.
22404
22405 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22406
22407         * assembly.c: load per-assembly config files.
22408         * icall.c: decrapified code to get the config dir and moved to
22409         mono-config.c.
22410         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22411         per-assembly config files. When doing a dll map lookup give precedence
22412         to the per-assembly data.
22413
22414 2004-04-14  Martin Baulig  <martin@ximian.com>
22415
22416         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22417         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22418         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22419
22420         * mono-debugger-debugger.c: While the debugger is locked, remember
22421         whether the symbol tables have changes and send one single
22422         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22423
22424 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22425
22426         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22427
22428         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22429         function.
22430
22431         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22432         account when marshalling string arrays. Fixes #56965.
22433
22434 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22435
22436         * icall.c: Add new icalls mapping for security.
22437         * security.c|h: Add internal calls for WindowsIdentity,
22438         WindowsImpersonationContext and WindowsPrincipal.
22439
22440 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22441
22442         * class.c: Added comment to ensure the System.MonoDummy class
22443         is removed when no longer necessary
22444
22445 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22446
22447         * appdomain.c: Pass arguments to the bootstraping exceptions to
22448         minimize JITed methods at boot
22449
22450         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22451         second string to be null.
22452
22453         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22454         Change the protocol to minimize the JIT methods at startup.  Now
22455         it Returns the internal codepage, if the value of "int_code_page"
22456         is 1 at entry, and we can not compute a suitable code page
22457         number, returns the code page as a string.
22458
22459 2004-04-13  Jackson Harper  <jackson@ximian.com>
22460
22461         * culture-info-tables.h: Fix number of decimal digits for all
22462         english locales.
22463
22464 2004-04-13  Jackson Harper  <jackson@ximian.com>
22465
22466         * icall.c: Clairfy out of sync error message. It is not always
22467         your corlib that is out of sync.
22468
22469 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22472         properties when only the set accessor is overriden. Fixes #55874.
22473
22474 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22475
22476         * assembly.c (mono_assembly_load_references): Make this thread safe.
22477         Fixes #56327.
22478
22479 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22480
22481         * monosn.c: Add missing initialization calls.
22482
22483 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22484
22485         * locales.c:
22486         ves_icall_System_Globalization_CultureInfo_construct_number_format
22487         Fix g_assert so it compiles on fussier compilers re int/ptr
22488         mismatch
22489
22490 2004-04-08  Dick Porter  <dick@ximian.com>
22491
22492         * socket-io.h:
22493         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22494         53992.  Also rearrange the code so that the internal calls return
22495         an error value and exceptions are thrown from managed code.
22496
22497         * icall.c: Add type info to the socket icalls.
22498
22499 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22500
22501         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22502         owes me a beer.
22503
22504 2004-04-07  Martin Baulig  <martin@ximian.com>
22505
22506         * class.c (mono_class_from_generic_parameter): Don't default
22507         `klass->parent' to `mono_defaults.object_type'.
22508
22509 2004-04-07  Martin Baulig  <martin@ximian.com>
22510
22511         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22512         `param->pklass->reflection_info'.       
22513
22514 2004-04-07  Jackson Harper  <jackson@ximian.com>
22515
22516         * culture-info-tables.h: Fix date separator symbol.
22517         
22518 2004-04-07  Martin Baulig  <martin@ximian.com>
22519
22520         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22521         from System.Type to System.MonoType.
22522
22523 2004-04-07  Martin Baulig  <martin@ximian.com>
22524
22525         * reflection.h
22526         (MonoReflectionGenericParam): Added `has_reference_type' and
22527         `has_value_type' fields.
22528
22529         * reflection.c (mono_image_get_generic_param_info): Encode the
22530         correct flags if we have the `class' or `struct' constraint.
22531
22532 2004-04-07  Martin Baulig  <martin@ximian.com>
22533
22534         * reflection.h
22535         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22536
22537 2004-04-07  Jackson Harper  <jackson@ximian.com>
22538
22539         * appdomain.c: Revert extra patches, just wanted to bump the
22540         version number.
22541         
22542 2004-04-07  Jackson Harper  <jackson@ximian.com>
22543
22544         * Makefile.am: Add culture-info private headers.
22545         * icall.c: Add new icalls for contructing locales.
22546         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22547         * locales.h: Declare new culture info construction methods.
22548         * object.h: Add new fields used to avoid the CultureMap to
22549         MonoCultureInfo.
22550         * culture-info.h: Definition of structs used in the culture info
22551         tables.
22552         * culture-info-tables.h: Autogenerated tables that contain culture
22553         info data. This file was generated with the locale-builder tool.
22554         * appdomain.c: Incement corlib version number.
22555         
22556 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22557
22558         * appdomain.c: (mono_runtime_init) move mono_thread_init
22559         to before mono_object_new calls so critical sections
22560         are initialized before use.
22561
22562 2004-04-07  Martin Baulig  <martin@ximian.com>
22563
22564         * icall.c
22565         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22566         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22567         (ves_icall_MonoGenericParam_initialize): Removed.
22568         (monogenericparam_icalls): Removed.
22569         (generictypeparambuilder_icalls): Added new table for
22570         System.Reflection.Emit.GenericTypeParameterBuilder.
22571
22572         * reflection.c
22573         (mono_reflection_define_generic_parameter): Removed.
22574         (mono_reflection_initialize_generic_parameter): This is now called
22575         from GenericTypeParameterBuilder's .ctor.
22576
22577 2004-04-06  Martin Baulig  <martin@ximian.com>
22578
22579         * class.c (mono_class_init): Don't inflate nested classes in a
22580         generic instance.
22581         (mono_type_get_name_recurse): Include the generic arguments for
22582         generic instances and generic type declarations.
22583         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22584         (_mono_class_get_instantiation_name): Removed.
22585         (mono_class_create_generic): Always use `gklass->name' as our name.
22586
22587         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22588
22589         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22590         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22591         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22592         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22593         closed generic methods here.
22594
22595         * reflection.c
22596         (mono_reflection_generic_inst_get_nested_types): Removed.
22597         (inflate_mono_method): Copy the generic parameters from the
22598         MonoMethodHeader into out MonoGenericMethod.
22599
22600 2004-04-06  Martin Baulig  <martin@ximian.com>
22601
22602         * row-indexes.h
22603         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22604
22605         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22606
22607         * reflection.c (build_compressed_metadata): If we have any entries
22608         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22609         set the header version to 1.1.
22610
22611 2004-04-06  Martin Baulig  <martin@ximian.com>
22612
22613         * class.c (mono_class_init): If we're a generic instance,
22614         initialize our nested classes, too.
22615         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22616         suffix. 
22617
22618 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22619
22620         * process.c: quote the argument passed to the shell on windows.
22621
22622 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22623
22624         * threads.c (mono_alloc_special_static_data): Allow this to be
22625         called during startup.
22626
22627 2004-04-02  Martin Baulig  <martin@ximian.com>
22628
22629         * icall.c
22630         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22631
22632 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22633
22634         * icall.c: Fix build.
22635
22636 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22637
22638         * Makefile.am: Added security.c|h.
22639         * icall.c: Added icall for get_UserName;
22640         * security.c: New file for security related icalls. Added function
22641         get_UserName for System.Environment (fix #56144).
22642         * security.h: New. Header file for security.c
22643
22644 2004-04-02  Dick Porter  <dick@ximian.com>
22645
22646         * icall.c: Deleted the icalls that were obsoleted some time ago
22647         by the ICU string code, and which were mixed into the icall
22648         rearranging.  Fixes bug 55969.
22649
22650         * string-icalls.h: 
22651         * string-icalls.c: Deleted the code that those icalls reference.
22652
22653 2004-04-01  Martin Baulig  <martin@ximian.com>
22654
22655         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22656
22657         * class.c (mono_class_from_generic_parameter): Don't set 
22658         TYPE_ATTRIBUTE_INTERFACE.
22659         (my_mono_class_from_generic_parameter): Likewise.
22660
22661 2004-04-01  Martin Baulig  <martin@ximian.com>
22662
22663         * loader.c (find_method): Added an optional `MonoClass *ic'
22664         argument to search in a specific interface.
22665         (mono_get_method_constrained): New public function.
22666
22667 2004-04-01  Martin Baulig  <martin@ximian.com>
22668
22669         * reflection.c (mono_image_get_generic_field_token): Use the
22670         `handleref' cache here.
22671
22672 2004-04-01  Martin Baulig  <martin@ximian.com>
22673
22674         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22675
22676         * reflection.c (create_generic_typespec): Use the `typespec' hash
22677         here, not the `typeref' one.    
22678
22679 2004-04-01  Martin Baulig  <martin@ximian.com>
22680
22681         * class.c (mono_class_inflate_generic_type): Moved the
22682         functionality into a new static inflate_generic_type() which
22683         returns NULL if it didn't do anything.  Only increment the
22684         `mono_stats.inflated_type_count' if we actually inflated
22685         something.
22686         (mono_class_get_full): Check the classes type to see whether we
22687         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22688
22689 2004-04-01  Jackson Harper  <jackson@ximian.com>
22690
22691         * reflection.c: Set culture for assembly references.
22692         
22693 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22694
22695         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22696
22697 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22698
22699         * assembly.c:
22700         (do_mono_assembly_open): the critical section also covers
22701         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22702
22703 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22704
22705         * threads.c:
22706         (mono_manage_threads): abort the background threads when finishing.
22707         Fixes bug #47232.
22708
22709 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22710
22711         * gc.c: only close the done_event handle if there was no timeout.
22712         C-ified comments.
22713
22714 2004-03-30  Martin Baulig  <martin@ximian.com>
22715
22716         * icall.c (icall_entries): It's called "System.Activator", not
22717         "System.Activation".    
22718
22719 2004-03-30  Martin Baulig  <martin@ximian.com>
22720
22721         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22722         (mono_class_create_from_typespec): Likewise.
22723
22724 2004-03-30  Martin Baulig  <martin@ximian.com>
22725
22726         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22727         `has_ctor_constraint' and `initialized'.
22728
22729 2004-03-30  Martin Baulig  <martin@ximian.com>
22730
22731         * reflection.c (encode_new_constraint): New static function to add
22732         the constructor constraint attribute to a type parameter.
22733         (encode_constraints): Call encode_new_constraint() if necessary.
22734
22735         * reflection.h
22736         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22737
22738         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22739         
22740 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22741
22742         * reflection.c, icall.c: add support for pinning variables. 
22743
22744 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22745
22746         * marshal.c (mono_marshal_get_managed_wrapper):
22747         init bool local with zero rather than null.
22748
22749 2004-03-29  Martin Baulig  <martin@ximian.com>
22750
22751         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22752         the "official" behavior here.
22753         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22754
22755 2004-03-29  Martin Baulig  <martin@ximian.com>
22756
22757         * icall.c: Reflect latest API changes.
22758
22759 2004-03-29  Martin Baulig  <martin@ximian.com>
22760
22761         * loader.c (mono_get_method_from_token): Also call
22762         mono_metadata_load_generic_params () for abstract and interface
22763         methods; replace the type arguments in the method signature with
22764         the ones which are loaded from the metadata.
22765
22766 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22767
22768         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22769         of the lock is not the current thread. MS.NET don't do it, in spite of
22770         what the documentation says. See bug #56157.
22771
22772 2004-03-28  Martin Baulig  <martin@ximian.com>
22773
22774         * class.c (mono_class_init): Don't call init_properties() and
22775         init_events() for generic instances; set `prop->parent' when
22776         inflating properties.
22777
22778         * reflection.c (mono_generic_inst_get_object): Call
22779         `mono_class_init (ginst->klass)'.
22780         (mono_type_get_object): Only create a MonoGenericInst if your
22781         generic type is a TypeBuilder.
22782         (do_mono_reflection_bind_generic_parameters): Only set
22783         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22784
22785 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22788         Fixes #56091.
22789
22790 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22791
22792         * icall.c: added Kill_internal icall.
22793         * process.[ch]: added Kill_internal icall.
22794
22795 2004-03-25  Martin Baulig  <martin@ximian.com>
22796
22797         * class.h (MonoStats): Added `generic_instance_count',
22798         `inflated_method_count', `inflated_type_count' and
22799         `generics_metadata_size'.       
22800
22801 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22802
22803         * reflection.c: no warnings now.
22804
22805 2004-03-25  Martin Baulig  <martin@ximian.com>
22806
22807         * class.c (mono_class_get_full): New public function; does a
22808         mono_class_get(), but also takes a `MonoGenericContext *'.
22809
22810         * loader.c (mono_field_from_memberref): Renamed to
22811         `field_from_memberref', made static and added `MonoGenericContext *'
22812         argument.
22813         (mono_field_from_token): Added `MonoGenericInst *' argument.
22814         (method_from_memberef): Likewise.
22815         (mono_get_method_from_token): Likewise.
22816         (mono_get_method_full): New public function; does a
22817         mono_get_method(), but also takes a `MonoGenericContext *'.
22818
22819         * verify.c (mono_method_verify): Get the method's generic context
22820         and pass it to mono_field_from_token(), mono_get_method_full() and
22821         mono_class_get_full().
22822
22823 2004-03-25  Martin Baulig  <martin@ximian.com>
22824
22825         * class.c (mono_class_inflate_generic_type): Take a
22826         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22827         `MonoGenericMethod *'.
22828
22829 2004-03-25  Martin Baulig  <martin@ximian.com>
22830
22831         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22832         instead of the MonoGenericMethod here.
22833
22834 2004-03-25  Martin Baulig  <martin@ximian.com>
22835
22836         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22837         each time we create a new MonoGenericInst, we also create a new
22838         context which points back to us.
22839
22840         * class.c (inflate_method): Use `ginst->context' instead of
22841         creating a new context.
22842
22843         * loader.c (method_from_memberref): Use
22844         `klass->generic_inst->context' instead of creating a new context.
22845
22846 2004-03-25  Martin Baulig  <martin@ximian.com>
22847
22848         * class.h (MonoGenericContext): New struct.
22849         (MonoGenericMethod): Removed `generic_inst'.
22850
22851         * class.c (mono_class_inflate_generic_method): Take a
22852         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22853
22854 2004-03-25  Martin Baulig  <martin@ximian.com>
22855
22856         * loader.h (MonoMethodInflated): New typedef.
22857
22858         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22859         `generic_param_count' consume just 30 bits, added `is_inflated'
22860         and `has_type_parameters' flags (one bit each).
22861
22862         * class.c (mono_class_inflate_generic_method): Create a
22863         MonoMethodInflated instead of a MonoMethodNormal and set
22864         `is_inflated' in the method signature.
22865
22866         * class.h (MonoGenericMethod): Removed `generic_method'.
22867
22868 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22869
22870         * image.c: Make sure the name of a MonoImage is always an absolute path.
22871           This fixes bug #54415.
22872
22873 2004-03-24  Martin Baulig  <martin@ximian.com>
22874
22875         * class.c (mono_class_setup_vtable): If we're a generic instance,
22876         use our generic type's vtable size.
22877
22878 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22881         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22882         problems.
22883
22884 2004-03-23  Martin Baulig  <martin@ximian.com>
22885
22886         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22887         `MonoEvent *events'.
22888
22889         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22890         (typebuilder_icalls): Added "get_event_info"; calls
22891         mono_reflection_event_builder_get_event_info(). 
22892
22893         * reflection.c (mono_reflection_generic_inst_initialize): Added
22894         `MonoArray *events'.
22895         (mono_reflection_event_builder_get_event_info): New function.
22896
22897 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22898
22899         * object.h: add mono_type_initialization_init
22900
22901         * object.c (mono_runtime_class_init): 
22902         implement class constructor synchronization rules
22903         to cope with threading issues.  
22904         add mono_type_initialization_init
22905
22906         * appdomain.c (mono_runtime_init): call 
22907         mono_type_initialization_init
22908
22909         * class.h: removing initializing field from MonoVTable
22910
22911 2004-03-23  Martin Baulig  <martin@ximian.com>
22912
22913         * class.c (my_mono_class_from_generic_parameter): Use
22914         `param->name' if it's not NULL. 
22915
22916 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22917
22918         * class.c: do not insert non-virtual methods in the vtable.
22919         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22920         that means the method is non-virtual. This never would have
22921         happened before.
22922
22923 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22924
22925         * profiler.c: Added lock for accessing coverage_hash.
22926
22927 2004-03-22  Martin Baulig  <martin@ximian.com>
22928
22929         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22930         `method->method->signature->generic_param_count != 0' to make it
22931         work for interface methods.
22932
22933 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22934
22935         * process.c: quote the string passed to the shell using g_shell_quote.
22936
22937 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22938
22939         * threads.c:
22940         (mono_threads_manage): don't remove the finalizer thread and self
22941         from the threads hash table so that mono_thread_manage can be called
22942         more than once.
22943
22944 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22945
22946         * process.c: quote the arguments when UseShellExecute is true. Fixes
22947         bug #55790.
22948
22949 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22950
22951         * threads.c: set mono_thread_detach as a cleanup routine for every
22952         thread. This way it's always executed upon thread termination, either
22953         aborted or finished normally. No more xsp hangs!
22954
22955 2004-03-17  Martin Baulig  <martin@ximian.com>
22956
22957         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22958         `int count_nested' and a `MonoType **nested'.
22959
22960         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22961         most of the functionality into a new static
22962         do_mono_reflection_bind_generic_parameters() and don't take a
22963         `MonoType *nested_in' argument any more.  Don't compute nested
22964         types here.
22965         (mono_reflection_generic_inst_get_nested_types): New public method
22966         to get nested types.
22967
22968         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22969         we're a nested class.
22970
22971         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22972         mono_reflection_generic_inst_get_nested_types() to compute the
22973         nested types.
22974
22975 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22976
22977         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22978         descriptive error message under windows.
22979         
22980 2004-03-17  Martin Baulig  <martin@ximian.com>
22981
22982         * class.c (dup_type): Added `const MonoType *original' argument;
22983         copy the attrs from the original type.
22984
22985 2004-03-17  Martin Baulig  <martin@ximian.com>
22986
22987         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22988         `m->generic_inst_cache' here.
22989
22990 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22991
22992         * exception.h exception.c: Add stack_overflow_exception.
22993
22994 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22995
22996         * threadpool.c:
22997         (overlapped_callback): call SetEvent *after* invoking the callback.
22998         No need to call CloseHandle.
22999
23000 2004-03-16  Martin Baulig  <martin@ximian.com>
23001
23002         * reflection.c (mono_image_get_fieldref_token): Take a
23003         `MonoReflectionField *' instead of a `MonoClassField *' and a
23004         `MonoClass *'; store the `MonoReflectionField *' in the hash.
23005
23006 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23007
23008         * appdomain.c: don't add the culture to the filename we're looking for
23009         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
23010
23011 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23012
23013         * locales.c: don't ignore symbols when doing case insensitive compares.
23014         Thanks Dick! Fixes bug #54046.
23015
23016         * threads.c: surround 'threads' usage with enter/leave in
23017         mono_thread_manage.
23018
23019 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23020
23021         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
23022         implicitly marshalled as [Out]. Fixes #55450.
23023
23024         (mono_marshal_get_runtime_invoke): Zero out the result if there is
23025         an exception.
23026
23027 2004-03-16  Martin Baulig  <martin@ximian.com>
23028
23029         * class.c (mono_class_from_generic_parameter): Use the actual
23030         parameter name. 
23031
23032 2004-03-16  Martin Baulig  <martin@ximian.com>
23033
23034         * reflection.c (type_get_signature_size): New static function.
23035         Compues the size of the type in a method signature.
23036         (method_get_signature_size): New static function; calls
23037         type_get_signature_size() to compute the actual size of the
23038         method's signature.
23039         (method_encode_signature): Use method_get_signature_size() to get
23040         the signature's size rather than using `nparams * 10'.
23041
23042 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23043
23044         * file-io.h: define here WapiOverlapped on windows. I don't want the
23045         regular OVERLAPPED one.
23046
23047         * file-io.c:
23048         * threadpool.c: somehow, BindIoCompletionCallback is not found.
23049         Disabling AIO on windows.
23050
23051 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23052
23053         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
23054         bug #55385.
23055
23056 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23057
23058         * appdomain.c: upgraded corlib version.
23059
23060         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
23061         and BeginWrite. Allow opening files for asynchrnous operations.
23062
23063         * file-io.h: new struct that maps FileStreamAsyncResult.
23064         * icall.c: added new icalls.
23065         * process.[ch]: support setting child process environment variables
23066         and use the SHELL or COMSPEC when UseShellExecute is true.
23067
23068         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
23069         callback for async. IO is here and also BindHandle.
23070
23071         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
23072         from here.
23073
23074 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23075
23076         * reflection.c (create_custom_attr): Allow len == 0.
23077
23078         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
23079         computation on big-endian machines.
23080
23081 2004-03-13  Martin Baulig  <martin@ximian.com>
23082
23083         * class.h (MonoGenericInst): Added `int count_ifaces'.
23084
23085         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
23086         `ginst->count_ifaces' instead `klass->interface_count' since we
23087         may get called before the vtable is created.
23088
23089         * loader.c (mono_method_get_param_names): If we're a generic
23090         instance, return and don't initialize the class.
23091
23092         * reflection.c (mono_reflection_setup_generic_class): Don't call
23093         ensure_runtime_vtable().
23094         (mono_reflection_bind_generic_parameters): Set
23095         `ginst->count_ifaces'.
23096
23097 2004-03-11  Jackson Harper <jackson@ximian.com>
23098
23099         * icall.c:
23100         * unicode.c:
23101         * unicode.h: Remove unused System.Char icalls.
23102         
23103 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
23104
23105         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
23106         code when we P/Invoke the first library in Windows.Forms, instead
23107         of when we first open the assembly.
23108
23109         * assembly.c: Drop the lookup from here.
23110
23111 2004-03-10  Martin Baulig  <martin@ximian.com>
23112
23113         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
23114         class for properties, fields and events.  Finally fixes #54945.
23115
23116 2004-03-10  Martin Baulig  <martin@ximian.com>
23117
23118         * metadata.c (mono_metadata_class_equal): New static function;
23119         checks whether two generic instances or two generic parameters are
23120         equal.
23121         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
23122         compare classes.        
23123
23124 2004-03-10  Martin Baulig  <martin@ximian.com>
23125
23126         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
23127
23128         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
23129         argument and write it into the `reflection_info' field.
23130
23131         * icall.c
23132         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
23133         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
23134
23135 2004-03-09  Jackson Harper  <jackson@ximian.com>
23136
23137         * char-conversions.h: use 8 bits for numeric data its all we need
23138         * icall.c: numeric data is only 8 bits now.
23139
23140 2004-03-09  Martin Baulig  <martin@ximian.com>
23141
23142         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
23143
23144         * class.c (init_properties, init_events): Initialize the new
23145         `parent' field.
23146
23147         * reflection.c (typebuilder_setup_properties): Likewise.
23148         (typebuilder_setup_events): Likewise.
23149
23150         * reflection.h (MonoEventInfo): Replaced `parent with
23151         `declaring_type' and `reflected_type'.
23152
23153         * icall.c (ves_icall_get_property_info): Distinguish between
23154         declaring and reflected type.
23155         (ves_icall_get_event_info): Likewise.
23156
23157 2004-03-09  Martin Baulig  <martin@ximian.com>
23158
23159         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
23160         (ves_icall_Type_GetField): Correctly set field->klass.
23161
23162 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23163
23164         * loader.h: Fix warning.
23165
23166 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
23167
23168         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
23169         library routine if present.  Notice that it will still continue
23170         executing even if its missing, for those working on the Gtk#
23171         edition of Windows.Forms.
23172
23173         * assembly.c (do_mono_assembly_open): If loading the
23174         System.Windows.Forms call mono_loader_wini_init.
23175
23176 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23177
23178         * class.h: Added MonoRemoteClass struct.
23179         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
23180         function for MonoStrings.
23181         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
23182         Added internal call for getting the proxy type.
23183         * marshal.c: Get the type of transparent proxies from its remote_class.
23184         Added methods that generate the IL for type checks and casts:
23185         mono_marshal_get_isinst, mono_marshal_get_castclass, 
23186         mono_marshal_get_proxy_cancast.
23187         * marshal.h: Declaration of the previous new methods.
23188         * object.c: Added new moethods for creating and updating MonoRemoteClass
23189         instances: mono_remote_class, mono_upgrade_remote_class, 
23190         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
23191         * verify.c: FIx transparent_proxy_fields layout.
23192         * appdomain.c: Bump corlib version.
23193
23194 2004-03-04  Jackson Harper  <jackson@ximian.com>
23195
23196         * icall.c: Add icall to access char conversion tables.
23197         * char-conversions.h: Character conversion tables.
23198         * Makefile.am: Add char-conversions.h private header file.
23199         
23200 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
23201
23202         * appdomain.c (unload_thread_main): Increase unloading timeout to
23203         10 sec as a temporary workaround for Nant problems.
23204
23205 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
23206
23207         * gc.c: Add checks for GC_enable and GC_disable.
23208
23209         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
23210         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
23211         (bug #54988).
23212         
23213 2004-02-27  Martin Baulig  <martin@ximian.com>
23214
23215         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23216         `MonoReflectionType *' instead of a `MonoType *'.
23217
23218 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * gc.c (run_finalize): Avoid finalizing the object representing the
23221         finalizer thread.
23222         (finalizer_thread): Fix warning.
23223
23224 2004-02-25  Martin Baulig  <martin@ximian.com>
23225
23226         * class.c (_mono_class_get_instantiation_name): Added `int offset'
23227         argument for nested types.
23228         (mono_class_create_generic): Added support for nested generictypes.
23229
23230         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
23231         `GList *nested'.
23232
23233         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
23234
23235         * reflection.c (method_encode_signature): Increase the minimum
23236         value of `size' from 10 to 11.
23237         (mono_reflection_bind_generic_parameters): Take `int type_argc'
23238         and `MonoType **types' arguments instead of the `MonoArray
23239         *types'; added `MonoType *nested_in'.  Recursively instantiate
23240         nested classes. 
23241
23242 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23243
23244         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
23245         stack_overflow_ex members which are used by exception handling.
23246
23247         * appdomain.c (mono_runtime_init): Initialize the new members.
23248
23249         * gc.c (mono_gc_enable): New helper function.
23250         * gc.c (mono_gc_disable): New helper function.
23251
23252 2004-02-23  Martin Baulig  <martin@ximian.com>
23253
23254         * icall.c: I must have been really stupid - make it actually work
23255         this time ;-)
23256
23257 2004-02-23  Martin Baulig  <martin@ximian.com>
23258
23259         * loader.c (method_from_memberref): Only inflate the method if
23260         it's in another klass.
23261
23262 2004-02-23  Martin Baulig  <martin@ximian.com>
23263
23264         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23265         (mono_class_init): If we're a generic instance and an interface,
23266         compute `class->interface_id'; also create `class->interfaces'
23267         here and inflate them.
23268
23269         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23270         `ginst->is_open'.
23271         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23272
23273         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23274
23275 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23276
23277         * reflection.c (method_encode_code): Improved the error message
23278         generated by the exception.
23279
23280 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23281
23282         * icall.c: Martin did not do what he said in the ChangeLog for
23283         2004-02-18, but put back the changes for properties and events.
23284         Commenting those changes out again and adding comment to bug #54518.
23285         
23286         * process.c: removed warning.
23287
23288 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23289
23290         * marshal.c (emit_struct_conv): Print an error message instead of
23291         asserting when a type does not have the StructLayout attribute.
23292
23293 2004-02-20  Martin Baulig  <martin@ximian.com>
23294
23295         * reflection.c (mono_type_get_object): Also use the cache for
23296         generic instances.
23297         (mono_reflection_bind_generic_parameters): Always compute
23298         `ginst->ifaces'.        
23299
23300 2004-02-20  Martin Baulig  <martin@ximian.com>
23301
23302         * class.h (MonoGenericMethod): Removed `klass'.
23303
23304         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23305         *klass' argument.
23306
23307 2004-02-20  Martin Baulig  <martin@ximian.com>
23308
23309         * reflection.c (method_encode_methodspec): Actually use the
23310         uninflated signature for the memberref.
23311
23312 2004-02-20  Martin Baulig  <martin@ximian.com>
23313
23314         * class.h (MonoGenericMethod): Removed `declaring'.
23315
23316         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23317         is NULL, compute it here.
23318
23319 2004-02-20  Martin Baulig  <martin@ximian.com>
23320
23321         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23322
23323         * metadata.c (mono_metadata_generic_inst_hash): New method.
23324         (mono_metadata_generic_inst_equal): New method.
23325
23326         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23327         `klass->image->generic_inst_cache' cache to avoid creating
23328         duplicate MonoGenericInst's.
23329
23330         * class.c (mono_class_inflate_generic_type): Use the cache.
23331
23332 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23333
23334         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23335
23336 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23337
23338         * icall.c: added Socket.WSAIoctl icall.
23339
23340         * socket-io.[ch]: implemented
23341         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23342
23343 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23344
23345         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23346
23347 2004-02-18  Urs C Muff  <umuff@quark.com>
23348
23349         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23350         this work on PPC and other big-endian architectures.
23351
23352         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23353         fields with an underscore to make sure they're only accessed by
23354         the read32() macro.
23355
23356 2004-02-18  Martin Baulig  <martin@ximian.com>
23357
23358         * icall.c: Put the klass->refclass changes back for methods and
23359         fields, but not for properties and events.  We're currently not
23360         distinguishing between DeclaringType and ReflectedType for
23361         properties and events, that's what caused the regressions.
23362
23363 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23364
23365         * object.c:
23366         (mono_async_result_new): the handle can be NULL.
23367
23368         * threadpool.c: Use an event instead of a semaphore, don't initialize
23369         it until needed. This saves quite a few semaphores from being created
23370         when using the threadpool.
23371
23372 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23373
23374         * object.c (mono_string_is_interned_lookup): Fix interning of long
23375         strings. Fixes #54473.
23376
23377         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23378
23379         * icall.c: Revert the klass->refclass changes since they introduce
23380         regressions (bug #54518).
23381
23382 2004-02-18  Martin Baulig  <martin@ximian.com>
23383
23384         * class.c (mono_class_init): If we're a generic instance and don't
23385         come from a TypeBuilder, inflate our members here.
23386         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23387         (mono_class_create_generic): New public method.
23388         (mono_class_initialize_generic): Removed.
23389         (get_instantiation_name): Renamed to
23390         _mono_class_get_instantiation_name() and made it public.
23391
23392 2004-02-18  Martin Baulig  <martin@ximian.com>
23393
23394         * class.c (mono_class_inflate_generic_type): Clear the new
23395         instance's `nginst->klass' when inflating a generic instance.
23396         (mono_class_is_subclass_of): Added (basic) support for generic
23397         instances.
23398
23399 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23400
23401         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23402         MonoMempool to hold compiled native code.
23403
23404 2004-02-17  Martin Baulig  <martin@ximian.com>
23405
23406         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23407         `properties'.
23408
23409         * reflection.c (mono_reflection_generic_inst_initialize): Added
23410         `MonoArray *properties' argument.
23411
23412         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23413
23414 2004-02-17  Martin Baulig  <martin@ximian.com>
23415
23416         * icall.c (ves_icall_Type_GetFields): Renamed to
23417         ves_icall_Type_GetFields_internal() and added a
23418         `MonoReflectionType *rtype' argument; pass it to
23419         mono_field_get_object() to set the field's "reflected" type.
23420         (ves_icall_Type_GetConstructors): Likewise.
23421         (ves_icall_Type_GetEvents): Likewise.
23422         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23423         argument; pass it to mono_method_get_object() to set the method's
23424         "reflected" type.       
23425
23426 2004-02-17  Martin Baulig  <martin@ximian.com>
23427
23428         * class.h (MonoDynamicGenericInst): New type.
23429         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23430
23431         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23432         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23433         (ves_icall_MonoGenericInst_GetFields): New interncall.
23434
23435         * class.c (mono_class_from_generic): Don't call
23436         mono_class_initialize_generic() if this is a dynamic instance;
23437         ie. it's being created from a TypeBuilder.
23438         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23439         `class->byval_arg.type'.
23440
23441         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23442         to `inflate_method' and made static.
23443         (mono_reflection_inflate_field): Removed.
23444         (mono_reflection_generic_inst_initialize): New public method.
23445
23446         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23447         `ctors' and `fields'; added `initialized'.
23448
23449 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23450
23451         * debug-helpers.c (mono_method_full_name): Fix output for empty
23452         namespaces.
23453
23454 2004-02-12  Martin Baulig  <martin@ximian.com>
23455
23456         * class.h (MonoClassField): Added `MonoType *generic_type'.
23457
23458         * reflection.c (mono_image_get_fieldref_token): Added support for
23459         instantiated generic types.
23460         (field_encode_inflated_field): Removed.
23461         (mono_image_get_inflated_field_token): Removed.
23462         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23463
23464         * reflection.h (MonoReflectionInflatedField): Removed.
23465
23466 2004-02-12  Martin Baulig  <martin@ximian.com>
23467
23468         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23469         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23470
23471         * reflection.c (mono_image_get_methodspec_token): Take a
23472         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23473         (mono_image_create_token): Check whether we have a
23474         `method->signature->gen_method' and call
23475         mono_image_get_methodspec_token() if appropriate.
23476         (inflated_method_get_object): Removed.
23477         (mono_reflection_bind_generic_method_parameters): Return a
23478         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23479         (mono_reflection_inflate_method_or_ctor): Likewise.
23480
23481         * reflection.h (MonoReflectionInflatedMethod): Removed.
23482
23483 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23484
23485         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23486         for custom valuetype marshalling.
23487
23488         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23489
23490 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23491
23492         * icall.c: fixed WSAGetLastError_internal name.
23493
23494 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * threads.c (mono_thread_attach): Allow this to be called multiple
23497         times for a thread.
23498         
23499         * threads.c (build_wait_tids): Do not wait for ourselves.
23500
23501         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23502         appdomain list is empty.
23503
23504         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23505         memory returned by mono_string_builder_to_utf16, since it points into
23506         managed memory. Thanks to Bernie Solomon for noticing this.
23507
23508         * icall.c: Add AppDomainSetup icalls.
23509
23510         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23511
23512         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23513         types.
23514
23515         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23516         custom attributes to the method_aux struct. Also fix array indexes etc.
23517
23518         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23519         
23520 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23521
23522         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23523         (both static and runtime) and reduce startup time.
23524
23525 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23526
23527         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23528         AsAny marshalling conversion instead of crashing.
23529
23530         * marshal.c: Fix warnings.
23531
23532 2004-02-09  Martin Baulig  <martin@ximian.com>
23533
23534         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23535
23536         * reflection.h (MonoReflectionInflatedMethod): Removed the
23537         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23538
23539         * reflection.c (method_encode_methodspec): Removed the `method'
23540         argument; we get it from `gmethod->declaring'.
23541         (inflated_method_get_object): Removed the `declaring' argument.
23542
23543 2004-02-09  Martin Baulig  <martin@ximian.com>
23544
23545         * class.h (MonoGenericMethod): New type.
23546         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23547         `generic_method'.
23548
23549         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23550         a `MonoGenericMethod *gen_method' one.
23551
23552         * class.c (mono_class_inflate_generic_type): Take an additional
23553         `MonoGenericMethod * argument.  This is only non-NULL if we're
23554         inflating types for a generic method.   
23555         (mono_class_inflate_generic_signature): Renamed to
23556         inflate_generic_signature() and made static; take a
23557         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23558         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23559         instead of a `MonoGenericInst *' one.
23560         (mono_class_inflate_generic_method): Likewise.
23561
23562         * reflection.c (encode_generic_method_sig): Take a
23563         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23564         (method_encode_methodspec): Likewise.
23565         (inflated_method_get_object): Likewise. 
23566
23567         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23568         field with a `MonoGenericMethod *gmethod' one.  
23569
23570 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23571
23572         * class.h (mono_class_has_parent): add parens to expansion
23573         so you can ! this.
23574
23575 2004-02-08  Martin Baulig  <martin@ximian.com>
23576
23577         * image.h (MonoImage): Removed `generics_cache'.
23578
23579         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23580         instead of a `MonoType *' argument; removed the `inflate_methods'
23581         argument.  Don't inflate methods here.
23582
23583         * loader.c (find_method): If it's a generic instance, call
23584         mono_class_init() on the `sclass->generic_inst->generic_type'.
23585
23586         * metadata.c (mono_type_size): Make this work on uninitialized
23587         generic instances; call it on the `ginst->generic_type's class.
23588
23589         * reflection.c (mono_reflection_bind_generic_parameters): Call
23590         mono_class_from_generic() to create the `ginst->klass'.
23591
23592 2004-02-08  Martin Baulig  <martin@ximian.com>
23593
23594         * class.h (MonoClass): Changed type of `generic_inst' from
23595         `MonoType *' to `MonoGenericInst *'.
23596
23597 2004-02-08  Martin Baulig  <martin@ximian.com>
23598
23599         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23600         mono_type_get_object(), this is now creating a `MonoGenericInst'
23601         for MONO_TYPE_GENERICINST.
23602         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23603         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23604
23605         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23606         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23607         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23608         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23609         and reflected type.
23610
23611         * reflection.h (MonoReflectionInflatedMethod): Removed
23612         `declaring_type' and `reflected_type'.
23613
23614 2004-02-08  Martin Baulig  <martin@ximian.com>
23615
23616         * class.h (MonoGenericInst): Added `MonoType *parent' and
23617         `MonoType **ifaces'.
23618
23619         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23620         `parent' and `interfaces'.
23621
23622         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23623         `MonoType *' argument and return a `MonoType *'.
23624
23625         * icall.c
23626         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23627         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23628
23629 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23630
23631         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23632         valuetype marshalling.
23633
23634 2004-02-06  Martin Baulig  <martin@ximian.com>
23635
23636         * class.c
23637         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23638         (my_mono_class_from_generic_parameter): Likewise.
23639
23640 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23641
23642         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23643         contents of the symbol files lazily.
23644
23645         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23646
23647         * threads.h threads.c icall.c: New icalls for getting and setting the
23648         threads name.
23649
23650 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23651
23652         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23653         Raise an exception when the domain is not found.
23654
23655 2004-02-03  Martin Baulig  <martin@ximian.com>
23656
23657         * reflection.c (mono_image_get_methodspec_token): Use the
23658         uninflated signature; fixes gen-33.
23659
23660 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23661
23662         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23663         the finalizer code can use thread functionality.
23664
23665         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23666         the finalizer thread.
23667
23668         * threads.c: Make some functions more robust.
23669
23670         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23671
23672         * metadata.h: Add new marshalling conventions.
23673
23674         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23675         stringbuilder marshalling. Fixes #53700.
23676
23677         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23678
23679         * reflection.c (mono_image_get_type_info): Save declarative security
23680         info.
23681
23682         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23683         unmanaged fields as well.
23684
23685         * appdomain.c: Bump corlib version.
23686
23687 2004-02-01  Martin Baulig  <martin@ximian.com>
23688
23689         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23690         method type arguments.  
23691
23692 2004-01-30  Duncan Mak  <duncan@ximian.com>
23693
23694         * marshal.h: Add prototype for
23695         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23696         and
23697         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23698         fix the build.
23699
23700 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23701
23702         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23703         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23704
23705 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23706
23707         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23708         custom marshalling of valuetypes.
23709
23710         * marshal.c: Fix some warnings.
23711
23712 2004-01-29  Martin Baulig  <martin@ximian.com>
23713
23714         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23715         for generic method parameters.
23716
23717         * reflection.c (method_encode_methodspec): Write the uninflated
23718         signature into the methodspec table.
23719         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23720         is always the uninflated method.
23721         (reflection_methodbuilder_to_mono_method): Copy the generic
23722         parameters from the MethodBuilder into `header->gen_params'.
23723
23724 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * class.c (mono_class_from_generic_parameter): Fix warning.
23727
23728 2004-01-27  Martin Baulig  <martin@ximian.com>
23729
23730         * class.c (mono_class_from_generic_parameter): Don't create
23731         `klass->methods' here.  
23732
23733 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23734
23735         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23736         extension since it does not work with libraries named lib<FOO>.dll.so.
23737
23738 2004-01-25  Martin Baulig  <martin@ximian.com>
23739
23740         * class.c (mono_class_inflate_generic_type): Added support for
23741         MONO_TYPE_GENERICINST.
23742
23743         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23744         inflate methods on open constructed types.      
23745
23746 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23747
23748         * object.c: fire ProcessExit event in the root AppDomain after running
23749         Main. Fixes bug #53299.
23750
23751 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23752
23753         * socket-io.c: include the new socket-wrappers.h header.
23754         Use the wrappers instead of the unix socket functions to make the code
23755         more clear.
23756
23757 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23758
23759         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23760
23761         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23762         Fixes #22532.
23763
23764 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23765
23766         * reflection.c (mono_image_create_pefile): Handle the case when the
23767         entry point is not a MethodBuilder.
23768
23769         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23770         field to ReflectionMethod since it is not allways a builder.
23771
23772         * reflection.c (type_get_fully_qualified_name): New helper function to
23773         return the fully qualified name of a type.
23774
23775         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23776         type name for custom marshallers.
23777
23778         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23779
23780         * class.c (mono_class_setup_vtable): If a parent class already 
23781         implements an interface, use the implementing methods from that class.
23782         Fixes #53148.
23783
23784 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23785
23786         * threadpool.c: just return instead of ExitThread to allow for thread
23787         clean up earlier.
23788
23789 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23790
23791         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23792         when closing resource modules.
23793
23794         * reflection.c (mono_image_create_pefile): Handle the case when the
23795         entry point is not a MethodBuilder.
23796
23797         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23798         field to ReflectionMethod since it is not allways a builder.
23799
23800 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23801
23802         * marshal.c (mono_marshal_get_managed_wrapper): 
23803         mono_marshal_alloc takes native int so CONV_I
23804         the arg for 64bits.
23805
23806 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23807
23808         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23809         tokens in the cattr table. Fixes #53108.
23810
23811 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23812
23813         * loader.c: don't trim ".dll" before looking up in the config file.
23814         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23815
23816 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23817
23818         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23819         Return the module which contains the resource as well.
23820         (ves_icall_System_Reflection_Module_Close): New icall.
23821
23822         * appdomain.c: Bump corlib version number.
23823
23824         * image.c (mono_image_addref): New public function.
23825
23826         * assembly.c: Call mono_image_addref.
23827
23828         * reflection.c (mono_module_get_object): Increase reference count of 
23829         the image.
23830
23831         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23832         Fixes #22532.
23833
23834         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23835         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23836         proper exceptions on DllImport problems.
23837
23838 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23839
23840         * class.c, metadata.c: eliminate CSIZE macro.
23841
23842 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23843
23844         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23845         * object.h: Added async_callback field in MonoAsyncResult.
23846         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23847         * verify.c: Added async_callback in MonoAsyncResult layout.
23848
23849 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23850
23851         * reflection.c (mono_reflection_get_custom_attrs): Add support
23852         for Modules.
23853
23854 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23855
23856         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23857         marshalling.
23858         (mono_marshal_method_from_wrapper): Add null pointer check.
23859
23860 2004-01-16  Martin Baulig  <martin@ximian.com>
23861
23862         * debug-mono-symfile.h: Set version number to 36 and reflect
23863         latest symbol writer changes.
23864
23865 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23868         multi-dimensional arrays.
23869         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23870         (mono_class_from_mono_type): Use bounded_array_class_get.
23871         
23872         * class.c (mono_bounded_array_class_get): New function which takes
23873         a 'bounded' bool argument to distinguish vectors from one dimensional
23874         arrays.
23875
23876         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23877         bounded_array_class_get if the array has bounds.
23878
23879         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23880         Search modules loaded using AssemblyBuilder:AddModule as well.
23881
23882 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23883
23884         * appdomain.c: increased corlib version.
23885         * filewatcher.c: removed g_print.
23886         * icall.c:
23887         (get_property_info): only allocate what is actually requested.
23888         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23889
23890 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23891
23892         * Makefile.am: added filewatcher.[ch]
23893         * filewatcher.[ch]: FileSystemWatcher runtime support.
23894         * icall.c: added new FSW icalls.
23895
23896 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23897
23898         * string-icalls.c: fix stringbuilder regression as suggested by
23899         Iain McCoy <iain@mccoy.id.au>.
23900
23901 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23902
23903         * process.c (process_read_stringtable_block): Recognize '007f' as
23904         a language neutral stringtable block.
23905
23906 2004-01-12  Patrik Torstensson
23907
23908         * object.h (MonoStringBuilder) : Changed layout to support our
23909         new stringbuilder class.
23910         * marshal.c: Change marshalling to support the new layout of 
23911         string builder.
23912         * appdomain.c: increased version number because new layout of
23913         string builder.
23914
23915 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23916
23917         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23918         assembly name as an string instead of an AssemblyName, since it is
23919         easier to extract info from it.
23920
23921         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23922         the culture subdirectories too. Fixes #52231.
23923
23924 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23925
23926         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23927         It takes 2 new parameters with an optional name for the method to look
23928         for and case ignoring info.
23929
23930         * threadpool.c: removed unused variable.
23931
23932 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23933
23934         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23935         It takes 2 new parameters with an optional name for the property to look
23936         for and case ignoring info.
23937         Fixes bug #52753.
23938
23939 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23940
23941         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23942         Fix #52451.
23943
23944 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23945
23946         * appdomain.c:
23947         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23948         Fixes bug #52630.
23949
23950 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23951
23952         * reflection.c: Add support for more than one unmanaged resource.
23953
23954         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23955         in field->def_value, as done in all other cases.
23956
23957         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23958         TypeBuilders.
23959
23960         * reflection.c (mono_reflection_create_runtime_class): Remove 
23961         errorneous assignment to klass->element_class, since it is already
23962         done in mono_reflection_setup_internal_class.
23963
23964 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23965
23966         * gc.c: added missing LeaveCriticalSection.
23967         * icall.c: indented a couple of lines.
23968         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23969         if we call EndInvoke inside a callback. Fixes bug #52601.
23970
23971 2004-01-07  Martin Baulig  <martin@ximian.com>
23972
23973         * mono-debug-debugger.h
23974         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23975
23976 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23977
23978         * appdomain.c: Use messages in NotImplementedException.
23979
23980         * exception.c (mono_get_exception_not_implemented): Now this takes
23981         a message argument.
23982
23983         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23984         exception instead of g_asserting an aborting when something is not
23985         implemented.
23986
23987         Add some inline docs.
23988
23989 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23990
23991         * reflection.h: Update after changes to object layout.
23992
23993         * reflection.c: Implement saving of unmanaged aka win32 resources.
23994
23995         * appdomain.c: Bump version number.
23996
23997         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23998         Handle missing domains gracefully.
23999
24000 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
24001
24002         * file-io.c : On Windows, there are much more invalid_path_chars.
24003
24004 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
24005
24006         * class.h, object.c: prepare for GetType () speedup.
24007
24008 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
24009
24010         * profiler.c: workaround for --profile null reference exception on
24011           cygwin. Patch by Patrik Torstensson.
24012
24013 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
24014
24015         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
24016         make work for unaligned access.
24017
24018 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
24019
24020         * class.c: small cleanup (class->fields [i] -> field).
24021         * image.c: check address of metadata is valid.
24022
24023 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
24024
24025         * assembly.h assembly.c (mono_assembly_loaded): New public function to
24026         search the list of loaded assemblies.
24027
24028         * reflection.c (mono_reflection_type_from_name): Use 
24029         mono_assembly_loaded instead of mono_image_loaded.
24030
24031         * reflection.c: Fix warnings.
24032
24033 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
24034
24035         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
24036         is dynamic. This is needed since an assembly can contain both dynamic and
24037         non-dynamic images.
24038
24039         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
24040         assembly->dynamic.
24041
24042         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
24043
24044         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
24045         to store modules loaded using AddModule.
24046
24047         * reflection.c (mono_image_fill_file_table): Generalize this so it works
24048         on Modules.
24049
24050         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
24051
24052         * reflection.c (mono_image_fill_export_table_from_module): New function to
24053         fill out the EXPORTEDTYPES table from a module.
24054
24055         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
24056         into a separate function. Also handle loaded non-dynamic modules.
24057
24058         * reflection.c (mono_image_basic_init): Fix memory allocation.
24059
24060         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24061
24062         * assembly.c (mono_assembly_load_references): Make this public.
24063
24064 2003-12-19  Martin Baulig  <martin@ximian.com>
24065
24066         * class.c (mono_class_initialize_generic): Made this static, take
24067         a `MonoGenericInst *' instead of a `MonoClass *'.
24068         (mono_class_from_generic): Call mono_class_initialize_generic()
24069         unless we're already initialized or being called from
24070         do_mono_metadata_parse_generic_inst().
24071
24072         * class.h (MonoGenericInst): Added `initialized' and
24073         `init_pending' flags.
24074
24075         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
24076         `mono_class_init (gklass)' or mono_class_initialize_generic()
24077         here; set `generic_inst->init_pending' while parsing the
24078         `type_argv'.
24079
24080 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
24081
24082         * locales.c: include string.h for memxxx prototypes
24083
24084 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24085
24086         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
24087         constructor when accessing literal fields.
24088
24089 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24092
24093         * reflection.c (assembly_add_resource_manifest): New function to fill
24094         the MANIFESTRESOURCE table.
24095
24096         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
24097
24098         * reflection.h: Update to changes in class layout.
24099
24100         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
24101         Reenable call to mono_runtime_is_shutting_down ().
24102
24103         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
24104         determine if the runtime is shutting down.
24105
24106 2003-12-16  Jackson Harper <jackson@ximian.com>
24107
24108         * icall.c: comment out call to mono_runtime_is_shutting_down to
24109         fix build.
24110         
24111 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
24112
24113         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
24114         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
24115
24116 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
24117
24118         * reflection.c: move definition of swap_with_size
24119         to before its first call
24120
24121 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
24122
24123         * appdomain.c (mono_runtime_is_shutting_down): New public function.
24124
24125         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
24126         icall.
24127
24128         * object.c: Fix warnings.
24129
24130         * icall.c (ves_icall_Type_Get...): Only consider inherited static
24131         members if FlattenHierarchy is set.
24132
24133         * reflection.c (mono_image_add_decl_security): New function to emit
24134         declarative security.
24135
24136         * reflection.h reflection.c: Add support for declarative security.
24137
24138         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24139         
24140 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24141
24142         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24143         
24144         * appdomain.c verify.c: Moved corlib version checking into its own
24145         function in appdomain.c since it needs to create vtables etc.
24146
24147 2003-12-13  Patrik Torstensson <p@rxc.se>
24148
24149         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
24150         instead of unwrapped server.
24151
24152 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * verify.c (check_corlib): Fix field index.
24155
24156 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
24157
24158         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
24159         GetGacPath icall.
24160
24161 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
24162
24163         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
24164         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
24165         cope with sizeof(size_t) != sizeof(guint32).
24166
24167 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24168
24169         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
24170         in case of failure.
24171
24172 2003-12-10  Mark Crichton <crichton@gimp.org>
24173
24174         * icall.c: removed the GetNonZeroBytes.  We now handle this case
24175         in managed code.
24176
24177         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
24178
24179 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
24180
24181         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
24182         marked as deleted.
24183
24184 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24185
24186         * verify.c (check_corlib): Handle the case when the version field is 
24187         initialized by a static constructor.
24188
24189 2003-12-08  Patrik Torstensson  <p@rxc.se>
24190
24191     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
24192
24193 2003-12-08  Martin Baulig  <martin@ximian.com>
24194
24195         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
24196         a MonoReflectionGenericParameter, also take the parameter index
24197         and name as arguments.
24198         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
24199         (ves_icall_MonoGenericParam_initialize): New interncall.
24200         (ves_icall_Type_make_byref_type): New interncall.
24201
24202         * reflection.h (MonoReflectionGenericParam): Derive from
24203         MonoReflectionType, not just from MonoObject.  Added `refobj' and
24204         `index' fields.
24205
24206         * reflection.c (mono_reflection_define_generic_parameter): Create
24207         and return a new MonoReflectionGenericParam; don't initialize the
24208         constraints here.
24209         (mono_reflection_initialize_generic_parameter): New public method;
24210         initializes the constraints and creates the `param->pklass'.
24211
24212 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24213
24214         * reflection.h reflection.c: Use the new fields 'num_types', 
24215         'num_fields' and 'num_methods' to track the number of types etc.
24216
24217         * verify.c (check_corlib): Check corlib version number.
24218
24219 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
24222         function works on all methods.
24223
24224 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24225
24226         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
24227         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
24228         the custom_type_info flag of the transparent proxy.
24229         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
24230         objects that supports IRemotingTypeInfo.
24231         * object.h: Added custom_type_info field in transparent proxy.
24232
24233 2003-12-06  Martin Baulig  <martin@ximian.com>
24234
24235         * class.c (mono_class_create_from_generic): Removed.
24236         (mono_class_from_generic): Check `ginst->klass' before doing
24237         anything else.  This is important to fully support "recursive"
24238         generic types.
24239
24240         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
24241         empty `generic_inst->klass' before doing anything else.
24242
24243 2003-12-06  Dick Porter  <dick@ximian.com>
24244
24245         * verify.c: 
24246         * object.h:
24247         * icall.c:
24248         * locales.c: Use C structs to access class fields.  Don't do a
24249         conversion between MonoString and UChar because both are
24250         platform-endian UTF-16.  Compare now takes startindex and count
24251         parameters.  Add a char overload for IndexOf.  Speed up the
24252         invariant string IndexOf.
24253
24254 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24255
24256         * Makefile.am (monosn_LDADD): Fix parallel build.
24257
24258 2003-12-04  Martin Baulig  <martin@ximian.com>
24259
24260         * icall.c
24261         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24262         (ves_icall_Type_make_array_type): New interncall.       
24263
24264 2003-12-04  Martin Baulig  <martin@ximian.com>
24265
24266         * locales.c: also change it in the !HAVE_ICU case.
24267
24268 2003-12-04  Dick Porter  <dick@ximian.com>
24269
24270         * icall.c:
24271         * locales.c: construct_compareinfo is now in CompareInfo, not
24272         CultureInfo.
24273
24274 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24275
24276         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24277         image->files array.
24278
24279         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24280         table as well.
24281
24282         * assembly.c (mono_assembly_load_references): Only load references
24283         once.
24284
24285         * class.c (mono_class_from_name): Avoid linear search of the 
24286         EXPORTEDTYPE table.
24287
24288         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24289
24290 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24291
24292         * image.h (MonoImage): Add 'field_cache' field.
24293
24294         * loader.c (mono_field_from_token): Cache field lookups.
24295         
24296         * reflection.c (mono_module_get_object): Fix name property.
24297
24298         * icall.c (ves_icall_get_enum_info): Update after changes to 
24299         mono_metadata_get_constant_index ().
24300
24301         * icall.c: Get rid of get_type_info icall, use a separate icall for
24302         each type property to avoid needless memory allocations. Fixes #51514.
24303
24304         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24305         to avoid needless binary searches.
24306
24307         * class.c (class_compute_field_layout): Move the initialization of
24308         field->def_value to mono_class_vtable ().
24309
24310         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24311         non-corlib types.
24312
24313         * object.c (mono_object_allocate): Make it inline.
24314
24315         * object.c (mono_object_allocate_spec): Make it inline.
24316         
24317 2003-12-02  Dick Porter  <dick@ximian.com>
24318
24319         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24320         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24321
24322 2003-12-01  Dick Porter  <dick@ximian.com>
24323
24324         * threads.c: Fix signature and call in CreateMutex and
24325         CreateEvent.
24326
24327 2003-12-01  Dick Porter  <dick@ximian.com>
24328
24329         * icall.c: 
24330         * locales.c: Implement string compares and searching
24331
24332         * object.h: Add extra Thread field
24333
24334 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24335
24336         * reflection.c (fixup_method): Add support for MonoCMethod.
24337
24338 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24339
24340         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24341
24342         * reflection.c (assembly_name_to_aname): Allow extra characters in
24343         assembly names. Fixes #51468.
24344
24345 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24346
24347         * exception.c (mono_exception_from_name_domain): New helper function.
24348
24349         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24350         exception object in the correct domain.
24351
24352         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24353         formatting + make a copy a the input data.
24354
24355         * loader.c (mono_get_method_from_token): Methods which contain
24356         native code do not have entries in the ImplMap.
24357
24358         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24359         Thanks to Gonzalo for spotting this.
24360         
24361         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24362         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24363
24364         * assembly.h (mono_assembly_load_from): Split the second part of 
24365         assembly loading into a new public function.
24366
24367         * exception.h (mono_get_exception_bad_image_format): New function.
24368
24369 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24370
24371         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24372         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24373         
24374         * icall.c: Add new icall for creating dynamic methods.
24375
24376         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24377
24378         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24379
24380         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24381         create a dynamic method.
24382
24383         * reflection.c (resolve_object): New helper function.
24384
24385         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24386         which manipulate it so they can also work on dynamic methods.
24387
24388         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24389         creating the MonoReflectionMethodAux structure if it is not needed.
24390         
24391         * reflection.h verify.c: Update after changes to object layout.
24392
24393         * reflection.c (method_builder_encode_signature): Fix compilation on
24394         gcc 2.95.x.
24395
24396 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24397
24398         * appdomain.h: Added support for context static fields. Added static_data
24399           field to MonoAppContext and renamed thread_static_fields to a more
24400           generic special_static_fields in MonoAppDomain, since it can now contain
24401           context static fields.
24402         * domain.c: Updated hashtable name.
24403         * object.c: Replaced field_is_thread_static() for a more generic
24404           field_is_special_static() which also checks for context static attribute.
24405           In mono_class_vtable(), added support for static context fields.
24406         * threads.c: Changed methods that manage thread static fields to more
24407           generic methods so they can be reused both for thread and context static
24408           data.
24409         * threads.h: Declared some new methods.
24410
24411 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24412
24413         * reflection.h: Update after changes to the managed types.
24414
24415         * reflection.c (encode_custom_modifiers): New helper function.
24416
24417         * reflection.c (method_encode_signature): Emit custom modifiers.
24418
24419         * reflection.c (field_encode_signature): Emit custom modifiers.
24420
24421 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24422
24423         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24424
24425         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24426         implementation.
24427
24428         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24429         icall.
24430
24431         * object.c (mono_field_get_value_object): New function.
24432
24433         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24434         specific.
24435
24436 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24437
24438         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24439         return a preallocated out-of-memory exception instance.
24440
24441         * object.c (out_of_memory): Use the new function.
24442
24443         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24444         flag is before the custom modifiers. Fixes #49802.
24445
24446 2003-11-16  Martin Baulig  <martin@ximian.com>
24447
24448         * class.c (mono_class_is_open_constructed_type): Implemented the
24449         MONO_TYPE_GENERICINST case.
24450
24451 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24452
24453         * assembly.c (mono_assembly_fill_assembly_name): New function to
24454         fill out the MonoAssemblyName structure.
24455         (mono_assembly_open): Use the new function.
24456
24457         * icall.c (fill_reflection_assembly_name): New helper function.
24458
24459         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24460         new function.
24461
24462         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24463
24464 2003-11-15  Martin Baulig  <martin@ximian.com>
24465
24466         * class.c (mono_class_is_open_constructed_type): New public
24467         function; checks whether a type is an open constructed type,
24468         ie. whether it still contains type parameters.
24469         (mono_class_inflate_generic_type): If we're a type parameter and
24470         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24471         type.
24472
24473         * class.h (MonoGenericInst): Added `guint32 is_open'.
24474
24475         * loader.c (method_from_methodspec): Check whether we're an open
24476         or closed constructed type and set `ginst->is_open'.
24477
24478         * reflection.c (mono_reflection_bind_generic_parameters): Check
24479         whether we're an open or closed constructed type and set
24480         `ginst->is_open'.
24481         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24482         from open constructed types.
24483
24484 2003-11-15  Martin Baulig  <martin@ximian.com>
24485
24486         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24487         a generic instance (instead of a generic type declaration) with
24488         unbound generic parameters, bind them to our actual types.
24489
24490 2003-11-14  Martin Baulig  <martin@ximian.com>
24491
24492         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24493
24494         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24495         an interface type, populate `res->interfaces' with instantiated
24496         versions of all the interfaces we inherit.
24497
24498 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24499
24500         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24501         when MONO_PATH is set but doesn't contain the install dir.
24502
24503 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24504
24505         * icall.c:
24506         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24507         it's also implemented in base classes. Fixes bug #50927.
24508
24509 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24510
24511         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24512         if this method is called from a finalizer. Fixes #50913.
24513
24514 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24515
24516         * threads.c: Implement VolatileRead/VolatileWrite
24517
24518         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24519
24520 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24521
24522         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24523         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24524         2.95.3.
24525
24526         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24527         from Peter Ross (pro@missioncriticalit.com).
24528         
24529 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24530
24531         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24532
24533 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24534
24535         * assembly.c (mono_assembly_load_references): Disable check because it
24536         triggers on older corlibs which lots of people have.
24537
24538 2003-11-12  Jackson Harper  <jackson@ximian.com>
24539
24540         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24541         load corlib.dll if mscorlib.dll is not found.
24542         * assembly.h: Remove corlib name define.
24543         * class.c:
24544         * domain.c:
24545         * image.c: Change corlib name to mscorlib.
24546         
24547 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24548
24549         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24550
24551 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24552
24553         * appdomain.h: Added loader_optimization here to sync with the C#
24554         code, and add disallow_binding_redirects field.
24555
24556 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24559
24560         * reflection.c (mono_image_build_metadata): Fix crash on modules
24561         with no types.
24562
24563         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24564
24565         * icall.c (ves_icall_get_method_info): Return callingConvention as
24566         well.
24567
24568         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24569         namespaces from the EXPORTEDTYPE table as well.
24570
24571         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24572         from all modules inside the assembly.
24573         
24574 2003-11-11  Martin Baulig  <martin@ximian.com>
24575
24576         * reflection.c (mono_reflection_bind_generic_parameters): Make
24577         this work for interfaces.
24578
24579 2003-11-11  Martin Baulig  <martin@ximian.com>
24580
24581         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24582
24583 2003-11-11  Martin Baulig  <martin@ximian.com>
24584
24585         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24586         "MonoInflatedMethod" and "MonoInflatedCtor".
24587
24588 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24589
24590         * reflection.c (resolution_scope_from_image): Use the assembly table
24591         from the manifest module, since other modules don't have it.
24592
24593         * debug-helpers.c (mono_type_full_name): New helper function.
24594
24595         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24596
24597         * image.c (mono_image_load_file_for_image): New public function which
24598         is a replacement for the load_file_for_image in class.c.
24599
24600         * assembly.c (mono_assembly_load_module): A wrapper for the function
24601         above which does assembly association and reference loading too.
24602
24603         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24604
24605 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24606
24607         * appdomain.c: not all of the attributes for the full assembly name
24608         are required and the order doesn't matter. Fixes bug #50787.
24609
24610 2003-11-10  Dick Porter  <dick@ximian.com>
24611
24612         * locales.c: Use platform-endian UTF16
24613
24614 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24615
24616         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24617         
24618 2003-11-10  Martin Baulig  <martin@ximian.com>
24619
24620         * metadata.c
24621         (mono_metadata_load_generic_params): Make this actually work.
24622
24623         * reflection.c (mono_reflection_bind_generic_parameters): If our
24624         parent is a generic instance, pass all the `types' to it, no
24625         matter whether it has the same number of type parameters or not.
24626
24627 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24628
24629         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24630
24631         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24632         assignment code to this function so it gets called recursively for all
24633         modules.
24634
24635         * image.c (load_modules): Remove the assembly assignment since it is
24636         now done by mono_assembly_load_references.
24637         
24638         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24639         Add 'module' argument.
24640         (mono_module_get_types): New helper function.
24641         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24642
24643 2003-11-08  Martin Baulig  <martin@ximian.com>
24644
24645         * class.c (mono_class_inflate_generic_method): Interface method
24646         don't have a header.
24647
24648         * reflection.c (mono_image_get_methodspec_token): Take an
24649         additional `MonoGenericInst *' argument instead of reading it from
24650         the header; this is necessary to support interfaces.
24651         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24652         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24653         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24654         argument.
24655
24656         * reflection.h (MonoReflectionInflatedMethod): Added
24657         `MonoGenericInst *ginst'.
24658
24659 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24662
24663 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24664
24665         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24666
24667 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24668
24669         * reflection.c 
24670         (reflection_methodbuilder_from_method_builder):
24671         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24672         initialize a ReflectionMethodBuilder structure.
24673         (mono_image_get_methodbuilder_token):
24674         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24675         tokens which point to types in another module inside the same assembly.
24676
24677         * reflection.c: Use the new helper functions.
24678         
24679         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24680
24681         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24682         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24683
24684         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24685         neccesary.
24686
24687         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24688         current module. Emit the manifest only for the main module.
24689
24690         * reflection.c (mono_image_create_token): Add assertion when a 
24691         memberref needs to be created.
24692
24693         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24694
24695         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24696         larger buffer for the custom attribute blob. Fixes #50637.
24697         
24698 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24699
24700         * threadpool.c: notify listener on async processing handles after
24701         invoking the async callback. Thanks to Zoltan.
24702
24703 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24704
24705         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24706         avoid code duplication.
24707
24708         * reflection.h (MonoDynamicImage): New type which is currently unused,
24709         but will be used through the ref.emit code in place of 
24710         MonoDynamicAssembly.
24711
24712         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24713         object layout.
24714
24715         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24716         a MonoDynamicImage instead of just a MonoImage.
24717         
24718         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24719         icalls to ModuleBuilder but keep their semantics, so they will work
24720         with moduleb->assemblyb. This will change later.
24721         
24722 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24723
24724         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24725         object layout.
24726
24727         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24728         main module, since it is now done by the managed code.
24729
24730 2003-11-03  Martin Baulig  <martin@ximian.com>
24731
24732         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24733         `ginst->klass' here.
24734         (method_encode_methodspec): Don't use the `ginst->generic_method's
24735         klass if it's a generic instance, use `ginst->klass' in this case.
24736
24737 2003-11-03  Martin Baulig  <martin@ximian.com>
24738
24739         * reflection.c (mono_image_get_generic_method_param_info):
24740         Removed, use mono_image_get_generic_param_info() instead.
24741         (mono_image_get_type_info): Write the GenericParam table before
24742         the Method table.  This is neccessary because in the GenericParam
24743         table, type parameters of the class (ie. '!0' etc.) must come
24744         before the ones from its generic methods (ie. '!!0' etc).
24745
24746 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24747
24748         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24749
24750 2003-11-02  Martin Baulig  <martin@ximian.com>
24751
24752         * reflection.c (create_generic_typespec): Take a
24753         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24754         the generic parameters from it.
24755
24756 2003-11-02  Martin Baulig  <martin@ximian.com>
24757
24758         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24759         instead of a `MonoClassField *' since we just need the type.
24760         (create_generic_typespec): New static function.  Creates a
24761         TypeSpec token for a generic type declaration.
24762         (mono_image_get_generic_field_token): New static function.
24763         (mono_image_create_token): If we're a FieldBuilder in a generic
24764         type declaration, call mono_image_get_generic_field_token() to get
24765         the token.
24766
24767 2003-11-02  Martin Baulig  <martin@ximian.com>
24768
24769         * reflection.h
24770         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24771         `MonoReflectionGenericInst *declaring_type' and
24772         `MonoReflectionGenericInst *reflected_type' fields.
24773
24774         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24775         `MonoReflectionGenericInst *declaring_type' and a
24776         `MonoReflectionGenericInst *reflected_type' argument instead of a
24777         single `MonoReflectionGenericInst *type' one.  Set
24778         `res->declaring_type' and `res->reflected_type' from them.
24779         (mono_reflection_inflate_field): Likewise.      
24780
24781 2003-11-02  Martin Baulig  <martin@ximian.com>
24782
24783         * class.c (mono_class_setup_vtable): Don't store generic methods
24784         in the vtable.  
24785
24786 2003-11-02  Martin Baulig  <martin@ximian.com>
24787
24788         * reflection.h (MonoReflectionGenericInst): Added
24789         `MonoReflectionType *declaring_type'.
24790
24791         * reflection.c (mono_reflection_bind_generic_parameters): Use
24792         `if (tb->parent)' instead of `klass->parent'.
24793
24794 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24795
24796         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24797         with an empty ASSEMBLY table.
24798
24799         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24800         variable in the inner and outer loops.
24801
24802 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24803
24804         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24805         argument.
24806
24807         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24808         
24809         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24810         icalls. Instead, do everything in managed code. This is needed since
24811         it is hard to restore the original domain etc. in unmanaged code in the
24812         presence of undeniable exceptions.
24813
24814         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24815         New icalls to push and pop appdomain refs.
24816
24817 2003-10-31  Martin Baulig  <martin@ximian.com>
24818
24819         * class.c (inflate_generic_type): Renamed to
24820         mono_class_inflate_generic_type() and made it public.
24821
24822         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24823         New interncall.
24824
24825         * loader.c (mono_field_from_memberref): Also set the retklass for
24826         typespecs.
24827
24828         * fielder.c (mono_image_get_inflated_field_token): New static
24829         method; creates a metadata token for an inflated field.
24830         (mono_image_create_token, fixup_method): Added support for
24831         "MonoInflatedField".
24832         (fieldbuilder_to_mono_class_field): New static function.
24833         (mono_reflection_inflate_field): New public function.
24834
24835         * reflection.h
24836         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24837         (MonoReflectionInflatedField): New typedef.     
24838
24839 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24840
24841         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24842         for Solaris and other platforms without s6_addr16
24843
24844 2003-10-30  Martin Baulig  <martin@ximian.com>
24845
24846         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24847         argument instead of two.
24848         (mono_class_inflate_generic_signature): Likewise.
24849         (inflate_generic_header): Likewise.
24850         (mono_class_inflate_generic_method): Likewise.  In addition, if
24851         `ginst->klass' is set, it becomes the new `method->klass'.
24852
24853         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24854         field.
24855
24856         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24857         first byte. [FIXME]
24858         (method_encode_methodspec): If we have generic parameters, create
24859         a MethodSpec instead of a MethodRef.
24860         (fixup_method): Added support for "MonoInflatedMethod" and
24861         "MonoInflatedCtor".
24862         (mono_image_create_token): Added support for "MonoInflatedMethod"
24863         and "MonoInflatedCtor".
24864         (inflated_method_get_object): New static function; returns a
24865         managed "System.Reflection.MonoInflatedMethod" object.
24866         (mono_reflection_bind_generic_method_parameters): Return a
24867         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24868         (mono_reflection_inflate_method_or_ctor): Likewise.
24869         (mono_image_get_generic_method_param_info): Initialize unused
24870         fields to zero.
24871         (mono_image_get_generic_param_info): Likewise.
24872
24873         * reflection.h (MonoReflectionInflatedMethod): New public
24874         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24875         "S.R.MonoInflatedCtor" classes.
24876
24877         * loader.c (method_from_memberref): If we're a TypeSpec and it
24878         resolves to a generic instance, inflate the method.
24879
24880 2003-10-28  Dick Porter  <dick@ximian.com>
24881
24882         * object.c (mono_runtime_run_main): Convert command-line arguments
24883         into utf8, falling back to the user's locale encoding to do so.
24884
24885 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24886
24887         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24888         at this time.
24889
24890         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24891
24892         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24893         up icalls at method definition time. Partially fixes #33569.
24894
24895 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24896
24897         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24898         marshalling of arrays. Fixes #50116.
24899
24900         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24901
24902         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24903         points to a vtable in the dying appdomain.
24904
24905         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24906         listeners into unmanaged code inside the lock.
24907
24908         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24909         domains and add some comments.
24910
24911 2003-10-25  Martin Baulig  <martin@ximian.com>
24912
24913         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24914
24915         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24916
24917         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24918         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24919         currently parsing.  Create the generic class and store it in
24920         `generic_inst->klass' before parsing the type arguments.  This is
24921         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24922         for an example.
24923         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24924         to support recursive typespec entries.
24925
24926         * class.c (mono_class_setup_parent): If our parent is a generic
24927         instance, we may get called before it has its name set.
24928         (mono_class_from_generic): Splitted into
24929         mono_class_create_from_generic() and mono_class_initialize_generic().
24930
24931 2003-10-25  Martin Baulig  <martin@ximian.com>
24932
24933         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24934         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24935         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24936         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24937
24938         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24939         (create_typespec): Likewise.
24940         (mono_reflection_bind_generic_parameters): Return a
24941         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24942         (mono_reflection_inflate_method_or_ctor): New public function.
24943
24944         * reflection.h (MonoReflectionGenericInst): New typedef.        
24945
24946 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24947
24948         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24949         inside the domain lock. Fixes #49993.
24950         
24951         * object.c (mono_class_vtable): When typed allocation is used, 
24952         allocate vtables in the GC heap instead of in the mempool, since the
24953         vtables contain GC descriptors which are used by the collector even
24954         after the domain owning the mempool is unloaded.
24955
24956         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24957
24958         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24959         reflect what it does. Also invalidate mempools instead of freeing
24960         them if a define is set.
24961
24962         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24963         of the appdomain.
24964         
24965         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24966         hold the finalizable objects in this domain.
24967
24968         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24969         appdomain.
24970
24971         * appdomain.c (mono_domain_set): New function to set the current
24972         appdomain, but only if it is not being unloaded.
24973
24974         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24975         appdomain which is being unloaded.
24976         
24977         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24978         unloading of the root appdomain.
24979
24980         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24981         icall to execute a method in another appdomain. Intended as a 
24982         replacement for InternalSetDomain, which can confuse the code 
24983         generation in the JIT.
24984
24985         * appdomain.c (mono_domain_is_unloading): New function to determine
24986         whenever an appdomain is unloading.
24987
24988         * appdomain.c (mono_domain_unload): New function to correctly unload
24989         an appdomain.
24990
24991         * assembly.c (mono_assembly_load_references): Check that an assembly
24992         does not references itself.
24993
24994         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24995         domain manually, it asks the finalizer thread to do it, then waits for
24996         the result. Also added a timeout.
24997
24998         * icall.c: Register the new icalls.
24999
25000         * threads.h threads.c: Export the mono_gc_stop_world and 
25001         mono_gc_start_world functions.
25002         
25003         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
25004         function to fill out the mempool with 0x2a.
25005
25006 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
25007
25008         * reflection.h (MonoReflectionMethodAux): New structure to store
25009         information which is rarely used, thus is not in the MonoMethod
25010         structure.
25011
25012         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
25013         store the aux info.
25014
25015         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
25016         and marshalling info into the aux structure.
25017
25018         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
25019         from the aux structure.
25020
25021         * loader.c (mono_method_get_param_names): Retrieve the param names from
25022         the aux structure.
25023         
25024 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
25025
25026         * exception.h exception.c: Add AppDomainUnloadedException && fix 
25027         warning.
25028
25029 2003-10-21  Dick Porter  <dick@ximian.com>
25030
25031         * socket-io.c
25032         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
25033         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
25034
25035 2003-10-21  Martin Baulig  <martin@ximian.com>
25036
25037         * reflection.c (mono_reflection_bind_generic_parameters):
25038         `klass->parent' is NULL for interfaces.
25039
25040 2003-10-21  Martin Baulig  <martin@ximian.com>
25041
25042         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25043
25044 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * exception.c (mono_exception_from_name_msg): New helper function for
25047         creating exceptions and initializing their message field.
25048
25049         * exception.c: Simplify functions using the new helper.
25050
25051         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
25052         New function.
25053
25054         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
25055         mono_raise_exception, since otherwise gcc doesn't generate the function
25056         epilog for raise_exception, confusing the stack unwinding in the JIT.
25057         Fixes #45043.
25058
25059         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
25060         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
25061         Fixes #49499.
25062
25063 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25064
25065         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
25066         utf8.
25067
25068 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
25069
25070         * icall.c: Removed GetUninitializedObject method because
25071           AllocateUninitializedClassInstance does the same.
25072
25073 2003-10-18  Martin Baulig  <martin@ximian.com>
25074
25075         * class.c (inflate_generic_signature): Renamed to
25076         mono_class_inflate_generic_signature() and made it public.
25077         (my_mono_class_from_generic_parameter): New static function; if we
25078         don't already have the generic parameter's MonoClass, create a
25079         very simple one which is just used internally in the runtime and
25080         not passed back to managed code.
25081
25082         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
25083
25084         * metadata.h (MonoMethodSignature): Moved the
25085         `MonoGenericParam *gen_params' to the MonoMethodHeader.
25086         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
25087
25088         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
25089         ves_icall_MonoMethod_GetGenericArguments(); this is now an
25090         interncall on the MonoMethod class, not on MethodInfo.
25091         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
25092         calling mono_reflection_bind_generic_method_parameters() directly.
25093
25094         * loader.c (mono_method_get_signature): If this is a MethodSpec;
25095         return the already computed `method->signature'.
25096         (method_from_methodspec): New static function to load a method
25097         from a MethodSpec entry.
25098         (mono_get_method_from_token): Call the new method_from_methodspec()
25099         for MethodSpec tokens.  
25100         (mono_get_method_from_token): If we're a generic method, load the
25101         type parameters.
25102
25103         * reflection.c (mono_image_get_memberref_token): Allow
25104         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
25105         table.
25106         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
25107         (mono_image_create_token): First check whether it's a generic
25108         method (so we'd need to create a MethodSpec), then do the other
25109         two alternatives.
25110         (mono_reflection_bind_generic_method_parameters): Return a
25111         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
25112         called directly from the interncall.
25113
25114 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
25115
25116         * reflection.c (load_public_key): Move loading of the public key
25117         into managed code.
25118
25119         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
25120
25121         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
25122         fields.
25123
25124         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
25125         culture, hash_alg and public_key. Fixes #49555.
25126
25127 2003-10-17  Martin Baulig  <martin@ximian.com>
25128
25129         * class.h (MonoGenericInst): Moved this declaration here and added
25130         `MonoMethod *generic_method'.
25131
25132         * icall.c
25133         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
25134         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
25135
25136         * metadata.c (mono_metadata_type_equal): Two types of
25137         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
25138         index; ie. don't compare the address of the `MonoGenericParam'
25139         structure.
25140         (mono_metadata_load_generic_params): Removed the `MonoMethod
25141         *method' argument.
25142
25143         * metadata.h (MonoGenericInst): Moved declaration to class.h.
25144         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
25145
25146         * reflection.c (method_encode_signature): Encode the number of
25147         generic parameters.
25148         (encode_generic_method_sig): New static function.
25149         (method_encode_methodspec): New static function; creates an entry
25150         in the MethodSpec table for a generic method.
25151         (mono_image_get_methodspec_token): New static function.
25152         (mono_image_create_token): Call mono_image_get_methodspec_token()
25153         for generic methods.
25154         (mono_reflection_bind_generic_method_parameters): New public
25155         function.  Instantiates a generic method.
25156
25157 2003-10-16  Martin Baulig  <martin@ximian.com>
25158
25159         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
25160         *gen_params' here from MonoMethodHeader.
25161
25162         * metadata.c (mono_metadata_parse_method_signature): If we have
25163         generic parameters, initialize `method->gen_params' and then set
25164         the correct `type->data.generic_param' in all the parameters.
25165
25166 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
25167
25168         * threads.c (mono_threads_get_default_stacksize): New function to 
25169         return the default stacksize.
25170
25171         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
25172         termination of the finalizer thread, since the previous method had
25173         race conditions. Fixes #49628.
25174
25175         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
25176         as for the other managed threads.
25177
25178 2003-10-16  Martin Baulig  <martin@ximian.com>
25179
25180         * class.c (inflate_generic_signature): Copy `generic_param_count'
25181         and `gen_params'.
25182
25183         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
25184         New interncall.
25185
25186         * metadata.c (mono_metadata_parse_method_signature): Actually set
25187         the `method->generic_param_count' here.
25188         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
25189
25190 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
25191
25192         * object.h: Add a new field to TypedRef to simplify the implementation
25193         of the REFANY opcodes in the JIT.
25194
25195         * icall.c: Make use of the new field.
25196
25197         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
25198         dynamically.
25199
25200 2003-10-15  Martin Baulig  <martin@ximian.com>
25201
25202         * class.c (mono_class_from_gen_param): Renamed to
25203         mono_class_from_generic_parameter() and moved most of the
25204         functionality from mono_reflection_define_generic_parameter()
25205         here; ie. we create a "real" class here.
25206         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
25207         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
25208         previously been called.
25209
25210         * class.h (MonoGenericParam): Moved the declaration of this struct
25211         here from metadata.h and added `MonoMethod *method'.
25212
25213         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
25214         interncall.
25215
25216         * loader.c (mono_get_method_from_token): If we have any generic
25217         parameters, call mono_metadata_load_generic_params() to read them
25218         from the MONO_TABLE_GENERICPAR.
25219
25220         * metadata.c (mono_metadata_load_generic_params): Added
25221         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
25222
25223         * metadata.h (MonoMethodSignature): Replaced
25224         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
25225         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
25226
25227         * reflection.c (mono_reflection_define_generic_parameter): Moved
25228         most of the functionality into the new
25229         mono_class_from_generic_parameter(); set the `method' field if
25230         we're a method parameter.       
25231
25232 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
25233
25234         * marshal.c (emit_struct_conv): if native size is 0
25235         emit no code.
25236
25237 2003-10-14  Martin Baulig  <martin@ximian.com>
25238
25239         * icall.c: The generics API has changed in the spec since it was
25240         added to System.Type; these modifications make it match the spec
25241         again.
25242         (ves_icall_Type_GetGenericParameters): Renamed to
25243         `ves_icall_Type_GetGenericArguments'.
25244         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
25245         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
25246         `ves_icall_MonoType_get_HasGenericArguments'.
25247         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25248         `ves_icall_MonoType_get_IsGenericParameter'.
25249         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25250         this is no interncall anymore.
25251         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25252         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25253
25254 2003-10-14  Martin Baulig  <martin@ximian.com>
25255
25256         * reflection.c (mono_reflection_bind_generic_parameters): Also
25257         inflate generic methods if we're reading the class from IL.
25258
25259 2003-10-13  Martin Baulig  <martin@ximian.com>
25260
25261         * reflection.c (mono_reflection_define_generic_parameter): This
25262         method isn't called directly from the icall anymore; take a
25263         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25264         method generic parameters.
25265         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25266         (method_builder_encode_signature): Encode generic parameters.
25267         (mono_image_get_method_info): Write generic params to the
25268         MONO_TABLE_GENERICPARAM table.
25269
25270         * reflection.h (MonoReflectionMethodBuilder): Added
25271         `MonoArray *generic_params'.
25272
25273         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25274
25275         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25276         wrapper for mono_reflection_define_generic_parameter().
25277         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25278
25279 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25280
25281         * marshal.h: Add missing function to fix build.
25282
25283         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25284         the SetLastError pinvoke attribute.
25285
25286         * marshal.c (mono_marshal_set_last_error): New helper function called
25287         by the generated code.
25288         
25289         * marshal.c (mono_mb_emit_branch): New helper function.
25290
25291         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25292
25293         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25294         classes as parameters and return values of delegates. Fixes #29256. 
25295
25296 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25297
25298         * locales.c: use gint32 in non HAVE_ICU case
25299
25300 2003-10-11  Martin Baulig  <martin@ximian.com>
25301
25302         * mono-debug.c (mono_debug_add_method): Added a workaround for
25303         bug #48591.
25304
25305 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25306
25307         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25308         delegates passed to native code must use the STDCALL calling 
25309         convention. Fixes #35987.
25310
25311 2003-10-10  Martin Baulig  <martin@ximian.com>
25312
25313         * class.c (inflate_generic_type): If we're inflating for a generic
25314         type instance (and not for a generic method), return
25315         MONO_TYPE_MVAR unchanged.
25316
25317 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25318
25319         * string-icalls.c: Join ignores null strings in the source array.
25320         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25321         * threads.c: GetAvailableTheads is slightly more accurate.
25322
25323 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25324
25325         * threads.h threads.c : add mono_threads_set_default_stacksize
25326         and pass default to CreateThread calls.
25327
25328 2003-10-09  Dick Porter  <dick@ximian.com>
25329
25330         * icall.c:
25331         * locales.h:
25332         * locales.c: Internal calls for constructing CultureInfo and
25333         related objects from libicu (if its available.)
25334
25335 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25336
25337         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25338
25339 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25340
25341         * threadpool.c: added an argument to async_invoke_thread that is the
25342         item to process, pass the MonoAsyncResult to the thread start function
25343         when creating a new thread. This way we don't need to acquire any lock
25344         when we're creating a new thread. Readded a semaphore for faster
25345         response times (instead of that Sleep i added).
25346
25347 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25348
25349         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25350         get daylight change dates better on Windows, fix handling
25351         of platforms without tm_gmtoff.
25352
25353 2003-10-06  Martin Baulig  <martin@ximian.com>
25354
25355         * class.c (inflate_generic_method): Renamed to
25356         mono_class_inflate_generic_method() and made public.
25357         (mono_class_init): Don't inflate the generic methods here.
25358         (mono_class_from_generic): Added `gboolean inflate_methods'
25359         argument.  Inflate the methods here.
25360
25361         * loader.c (mono_method_get_param_names): Ignore instances of
25362         generic types for the moment.
25363
25364         * reflection.c (fixup_method): Added support for inflated methods.
25365         (mono_image_create_token): Use mono_image_get_methodref_token()
25366         for inflated methods.
25367         (mono_custom_attrs_from_param): Ignore instances of generic types
25368         for the moment.
25369         (mono_reflection_bind_generic_parameters): New public function.
25370         Moved all the functionality from
25371         ves_icall_Type_BindGenericParameters() here and added support for
25372         dynamic types.
25373         (mono_reflection_define_generic_parameter): Initialize
25374         `klass->methods' here.
25375
25376         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25377         functionality into mono_reflection_define_generic_parameter().
25378         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25379         TypeBuilder, return that TypeBuilder.
25380
25381 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25382
25383         * appdomain.c: removed mono_delegate_semaphore.
25384
25385         * threadpool.c:
25386         (mono_thread_pool_add): moved hash table creation inside and the thread 
25387         creation outside of the critical region.
25388         (mono_thread_pool_finish): removed obsolete code.
25389         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25390         continue or exit the thread depending on the queue.
25391
25392 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25393
25394         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25395         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25396         handle more bool marshalling options
25397
25398 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25399
25400         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25401         arrays of structs. Also add a more descriptive error message when
25402         a structure member is marshalled as LPArray.
25403
25404 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25405
25406         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25407         marshalling arrays of complex types. Fixes #29098. Also remove an
25408         usused and incomplete function.
25409
25410 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25411
25412         * gc.c: report heap_size - free_bytes as total memory allocated
25413         (bug#49362).
25414
25415 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25416
25417         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25418         fix timezone handling problems on Windows.
25419         
25420         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25421         asserts when the year is outside the range handled by ms the functions.
25422
25423         * class.c (setup_interface_offsets): If the class is an interface,
25424         fill out its interface_offsets slot.
25425
25426 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25427
25428         * threadpool.c: mark threadpool threads as background.
25429
25430 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25431
25432         * decimal.c - define DECINLINE to nothing if not using GCC
25433
25434 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25435
25436         * assembly.c: More refcount fixes.
25437
25438 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25439
25440         * string-icalls.c: if we're not trimming, return the same string.
25441         When not splitting, don't create a new string.
25442
25443 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25444
25445         * image.c:
25446         (mono_image_open): increment the ref_count inside the critical section.
25447
25448 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25449
25450         * image.c (mono_image_open): Fix reference counting bug.
25451
25452 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25453
25454         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25455         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25456         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25457         mono_lookup_pinvoke_call throws.        
25458
25459 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25460
25461         * reflection.c (mono_reflection_parse_type): Fix #49114.
25462
25463         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25464         temporary workaround for cygwin header problem.
25465
25466         * object.c (mono_object_isinst): Synchronize this with the code
25467         generated by the JIT for casts.
25468
25469 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25470
25471         * reflection.c (encode_type): Fix #38332.
25472
25473 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25474
25475         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25476         the original method from the wrapper method.
25477
25478 2003-09-25  Martin Baulig  <martin@ximian.com>
25479
25480         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25481         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25482         (ves_icall_Type_get_IsGenericInstance): New interncall.
25483
25484 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25485
25486         * object.c: fix cast warning in big endian code.
25487
25488 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25489
25490         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25491         
25492 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25493
25494         * assembly.c: don't call check_env from mono_assembly_load. It's
25495         already done once in mono_assemblies_init and may cause headaches when
25496         multiple threads are loading assemblies.
25497
25498 2003-09-19  Martin Baulig  <martin@ximian.com>
25499
25500         * reflection.c (mono_reflection_define_generic_parameter): Don't
25501         allocate `klass->methods', set `klass->flags' to
25502         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25503
25504 2003-09-18  Martin Baulig  <martin@ximian.com>
25505
25506         * class.c (mono_class_init): Don't create `class->methods' if it's
25507         already initialized.
25508
25509         * metadata.c (mono_metadata_load_generic_params): Make this
25510         actually work.
25511
25512         * reflection.c (mono_reflection_define_generic_parameter): Set
25513         parent class and interfaces from the constraints.
25514
25515         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25516         to keep this struct in sync with the declaration in TypeBuilder.cs.
25517
25518 2003-09-17  Martin Baulig  <martin@ximian.com>
25519
25520         * metadata.h (MonoType): Replaced the data's `int type_param'
25521         field with `MonoGenericParam *generic_param'.
25522         (MonoGenericParam): Added `MonoClass *klass'.
25523
25524         * class.c (mono_class_from_gen_param): Removed the
25525         `MonoImage *image' and `int type_num' arguments.
25526
25527         * metadata.c (mono_metadata_parse_generic_param): New static
25528         method; creates a MonoGenericParam which just contains the index.
25529         (do_mono_metadata_parse_type): Call
25530         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25531         MONO_TYPE_MVAR.
25532
25533         * reflection.c (mono_image_typedef_or_ref): Generic type
25534         parameters may be in the same assembly, but never use a typedef
25535         for them.
25536         (mono_reflection_define_generic_parameter): We're now creating a
25537         "real" class for the type parameter; it's now safe to call
25538         mono_class_from_mono_type() on the class'es type, it'll do the
25539         right thing.
25540
25541 2003-09-16  Martin Baulig  <martin@ximian.com>
25542
25543         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25544         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25545         the `symfile' data structure must be fully initialized before it
25546         gets added to the table.
25547
25548 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25549
25550         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25551
25552         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25553         class init trampolines.
25554
25555 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25556
25557         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25558         to the built-in profiler to turn off time and allocation profiling
25559         respectively.
25560
25561 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25562
25563         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25564         g_direct_equal.
25565
25566         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25567         in human readable form.
25568
25569 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25570
25571         * reflection.c icall.c: Fixed warnings.
25572
25573         * image.c (load_class_names): Use a temporary hash table to hold the
25574         namespaces in order to avoid doing many string comparisons.
25575
25576         * image.h: Fix typo.
25577
25578         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25579         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25580         since the NULL case is short-circuited inside g_hash_table_lookup, 
25581         leading to better performance.  
25582
25583         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25584         obtain the first custom attribute for a given index. Depends on the
25585         CustomAttribute table being sorted by the parent field.
25586
25587         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25588         for better performance.
25589
25590 2003-09-07  Martin Baulig  <martin@ximian.com>
25591
25592         * class.c (mono_class_init): If we're a generic instance, inflate
25593         all our methods instead of loading them from the image.
25594         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25595
25596 2003-09-07  Martin Baulig  <martin@ximian.com>
25597
25598         * mono-debug-debugger.c: Added support for constructors.
25599
25600 2003-09-06  Martin Baulig  <martin@ximian.com>
25601
25602         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25603         New interncall.
25604
25605         * reflection.c (mono_reflection_setup_generic_class): Call
25606         ensure_runtime_vtable() to create the vtable.
25607
25608 2003-09-05  Martin Baulig  <martin@ximian.com>
25609
25610         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25611         MONO_TYPE_MVAR.
25612
25613 2003-09-04  Martin Baulig  <martin@ximian.com>
25614
25615         * reflection.c (mono_reflection_define_generic_parameter): Generic
25616         parameters start with zero.
25617
25618 2003-09-04  Martin Baulig  <martin@ximian.com>
25619
25620         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25621
25622         * reflection.h (MonoReflectionGenericParam): New typedef.
25623         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25624         the generic parameters from the managed TypeBuilder.
25625
25626         * reflection.c (mono_reflection_define_generic_parameter): New function.
25627         (mono_reflection_create_runtime_class): Encode generic parameters.
25628         (mono_reflection_setup_generic_class): New function; this is
25629         called after adding adding all generic params to the TypeBuilder.
25630         (encode_type): Added MONO_TYPE_VAR.
25631
25632 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25633
25634         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25635         here from the JIT.
25636
25637         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25638         load hook.
25639
25640 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25641
25642         * reflection.h reflection.c class.h class.c: Delete duplicate 
25643         definition of mono_type_get_name () from reflection.c and export the
25644         one in class.c.
25645
25646         * class.c: Class loading fixes from Bernie Solomon 
25647         (bernard@ugsolutions.com).
25648
25649         * reflection.c: Endianness fixes from Bernie Solomon 
25650         (bernard@ugsolutions.com).
25651         
25652 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25653
25654         * assembly.h assembly.c: Define a file format version for AOT
25655         libraries.
25656         
25657         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25658
25659         * appdomain.h (MonoJitInfo): New field to determine whenever the
25660         code is domain neutral.
25661         
25662 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25663
25664         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25665
25666 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25667
25668         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25669         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25670         Avoid caching the result since strings must be domain specific. Fixes
25671         #48050.
25672
25673 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25674
25675         * marshal.c (mono_marshal_init): Make this callable multiple times
25676         since it is hard to find a correct place to call it.
25677
25678         * object.c (mono_runtime_class_init): Execute static constructors in
25679         the correct appdomain.
25680
25681         * image.c (build_guid_table): Handle the case when multiple images have
25682         the same GUID.
25683
25684 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25685
25686         * icall.c: added a couple of icalls for System.Web.
25687
25688 2003-08-28  Martin Baulig  <martin@ximian.com>
25689
25690         * icall.c (ves_icall_Type_BindGenericParameters): Use
25691         `klass->generic_inst' instead of `&klass->byval_arg' in the
25692         mono_type_get_object() call.  The returned type must be
25693         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25694
25695 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25696
25697         * NOTES: New file.
25698
25699         * object.c (mono_class_proxy_vtable): Make it thread safe.
25700
25701         * pedump.c: Fix warning.
25702
25703         * object.c appdomain.h: Get rid of metadata_section. 
25704         It is no longer needed and it was causing deadlocks with domain->lock.
25705
25706         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25707
25708 2003-08-26  Martin Baulig  <martin@ximian.com>
25709
25710         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25711
25712 2003-08-26  Martin Baulig  <martin@ximian.com>
25713
25714         * pedump.c (main): Call mono_metadata_init(),
25715         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25716         and mono_loader_init().
25717
25718 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25719
25720         * loader.h: Add missing include to fix build.
25721
25722         * image.h: mono_image_load_references is no more.
25723
25724         * assembly.c: Reworked assembly loading to make it really thread safe.
25725         After these changes, the assembly returned by mono_assembly_open is
25726         fully initialized, i.e. all its references assemblies are loaded.
25727
25728         * assembly.c (mono_image_load_references): Renamed to 
25729         mono_assembly_load_references, and made private, since clients no
25730         longer need to call it.
25731
25732         * class.c: Removed calls to mono_assembly_load_references, since it was
25733         a source of deadlocks.
25734
25735         * loader.h loader.c class.h class.c: Protect data structures using a 
25736         new lock, the loader lock.
25737
25738         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25739         GPtrArrays only when needed.
25740
25741         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25742         into empty structures by mcs. Fixes pinvoke7.cs.
25743         
25744         * domain.c (mono_init): Call a new initialization function.
25745
25746         * appdomain.c (mono_runtime_init): Call the new initializer function
25747         of the marshal module.
25748
25749         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25750         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25751
25752         * marshal.h marshal.c: Added locks around the wrapper caches to make
25753         this module thread safe.
25754
25755         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25756         this argument. Fixes pinvoke1.exe.
25757
25758 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25759
25760         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25761         enumeration of values. Removed fields to store remote call output values in
25762         MonoAsyncResult. Not needed any more.
25763         * object.c: Initialize call_type and async_result fields in mono_message_init.
25764         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25765         dispatching the message.
25766         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25767         async call to finish. To do it use a message with EndInvoke call type.
25768
25769 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25770
25771         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25772         determines whenever a method has marshalling info.
25773
25774 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25775
25776         * assembly.c: fix the build on windows.
25777
25778 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25779
25780         * object.cs: Fixed bug #47785.
25781
25782 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25783
25784         * string-icalls.c (StringReplace): If their are no occurances of
25785         the old string found return a reference to the supplied
25786         string. This saves some memory and matches MS behavoir.
25787         
25788 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25789
25790         * socket-io.c: fixed compilation for systems that define AF_INET6
25791         and don't define SOL_IP/SOL_IPV6.
25792
25793 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25794
25795         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25796         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25797
25798         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25799
25800         * domain.c: Make this module thread safe.
25801
25802         * domain.c (mono_init): Call new initialization function.
25803
25804         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25805         reference types too. Fixes #38812.
25806
25807         * image.c (mono_image_init): Fixed warnings.
25808
25809         * class.c (mono_class_from_typeref): Handle assembly load failure
25810         correctly.
25811
25812         * appdomain.c (add_assemblies_to_domain): Handle the case when
25813         the references of an assembly are not yet loaded.
25814
25815         * metadata.c image.c assembly.c: Moved initialization of global
25816         variables to a separate function called at startup since lazy 
25817         initialization of these variables is not thread safe.
25818         
25819         * image.c assembly.c: Made this module thread safe by adding locks in 
25820         the appropriate places.
25821
25822         * domain.c (mono_init): Call the new initialization functions of the
25823         three modules.
25824
25825 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25826
25827         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25828           make a direct call. It is proxy's work to make the call asynchronous.
25829           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25830           the return values.
25831         * object.cs: mono_method_call_message_new(): read AsyncResult and
25832           state object from parameters list, if this info is requested.
25833         * object.h: Added fields to store remote call output values in
25834           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25835
25836 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25837
25838         * object.h: add needed fields to MonoThread.
25839         * threads.c, threads.h: allow registering a function to cleanup data
25840         allocated per thread by the JIT.
25841
25842 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25843
25844         * loader.h: portability fix by Bernie Solomon
25845         * <bernard@ugsolutions.com>.
25846
25847 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25848
25849         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25850         return a MonoArray. This simplifies the code and also ensures that
25851         the cache allways contains an object reference as a value.
25852
25853         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25854         function.
25855
25856 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25857
25858         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25859         fixes a problem with byte ordering when getting the address family for
25860         a socket.
25861
25862 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25863
25864         * .cvsignore: Added monosn.
25865
25866         * reflection.h reflection.c loader.c: Added support for parameter
25867         marshalling to dynamically created types. Fixes #47295.
25868
25869 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25870
25871         * rand.c: remove useless warnings.
25872
25873 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25874
25875         * class.c: implemented ldtoken for methods and fieldrefs.
25876
25877 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25878
25879         * threadpool.c: when mono_async_invoke was called, no one took care of
25880         monitoring the queue. So if the method invoked took some time and we
25881         got new async invoke requests after 500 ms (the thread created waited
25882         that long in WaitForSingleObject), the new async invoke was not called
25883         until the previous one finished.
25884
25885         This is fixed now. Thanks to Totte for helping with it.
25886
25887 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25888
25889         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25890
25891 2003-08-11  Martin Baulig  <martin@ximian.com>
25892
25893         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25894
25895 2003-08-06  Martin Baulig  <martin@ximian.com>
25896
25897         * mono-debug-debugger.c: Added support for static fields,
25898         properties and methods.
25899
25900 2003-08-06  Martin Baulig  <martin@ximian.com>
25901
25902         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25903         make this work for applications with multiple application domains.
25904
25905 2003-08-04  Martin Baulig  <martin@ximian.com>
25906
25907         * mono-debug-debugger.c: Completely reworked the type support; the
25908         most important thing is that we're now just using one single
25909         `MonoType' instance per type.
25910
25911 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25912
25913         * mono-endian.h, mono-endian.c, icall.c: Added icall
25914         ves_icall_System_Double_AssertEndianity to assert double word endianity
25915         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25916
25917 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25918
25919         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25920         support, icalls and fixes.
25921
25922 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25923
25924         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25925         classes that are a punctuation character in .NET is not the same a
25926         g_unichar_ispunct.
25927
25928 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25929
25930         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25931
25932 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25933
25934         * icall.c: Add new MemCopy internalcall.
25935         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25936         Simplified code; It is not necessary to handle all the cases here,
25937         as the C# code takes care of it.  Only handle the case of the name
25938         resource embedded into the assembly.
25939
25940         Changed signature to return the data pointer and the size of the
25941         data. 
25942
25943 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25944
25945         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25946         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25947
25948 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25949
25950         * socket-io.c: ignore EINTR error in select.
25951
25952 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25953
25954         * class.h, class.c: removed unused subclasses field in MonoClass.
25955
25956 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25957
25958         * icall.c: improve fix of get_base_definition(). If the parent class
25959           doesn't have the mehod, look at the parent of the parent.
25960         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25961           to check if a parameter is an in or out parameter
25962           (PARAM_ATTRIBUTE_IN is not set by default).
25963           mono_method_return_message_restore(): Use mono_class_value_size to
25964           get the size of a value type. mono_type_stack_size (parameterType)
25965           does not return the correct value if parameterType is byRef.
25966           mono_load_remote_field(), mono_load_remote_field_new(),
25967           mono_store_remote_field(), mono_store_remote_field_new():
25968           raise exception if the remote call returns an exception.
25969
25970 2003-07-28  Martin Baulig  <martin@ximian.com>
25971
25972         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25973         method.  This is a wrapper around mono_runtime_invoke() which
25974         boxes the instance object if neccessary.
25975
25976 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25977
25978         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25979         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25980
25981 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25982
25983         * icall.c: disable mcs bug workaround.
25984
25985 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25986
25987         * object.c (mono_runtime_class_init): Take the metadata_section
25988         mutex before obtaining the domain mutex.
25989
25990         * appdomain.h: Added definition of metadata_section mutex here. 
25991
25992         * object.c: define metadata_mutex here.
25993
25994 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25995
25996         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25997         fixed.
25998
25999 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
26000
26001         * reflection.c: Fix bug #46669
26002
26003 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26004
26005         * exception.c:
26006         * exception.h:
26007         * icall.c:
26008         * object.h: fill in the type name for TypeLoadException.
26009
26010 2003-07-23  Ravi Pratap  <ravi@ximian.com>
26011
26012         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
26013         relationship between TypeBuilders while compiling corlib) and bug
26014         45993 (Array types returned from the runtime while compiling
26015         corlib were from the loaded corlib).
26016
26017 2003-07-22  Martin Baulig  <martin@ximian.com>
26018
26019         * mono-debug-debugger.c: Reworked the type support a bit more;
26020         distinguish between types and classes.
26021
26022 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
26023
26024         * icall.c: add IsArrayImpl icall.
26025
26026 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
26027
26028         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
26029         initializing real_size only once. Also fix bug #46602.
26030
26031 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
26032
26033         * object.c: Renamed mono_metadata_section to metadata_section.
26034
26035 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
26036
26037         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
26038           empty array if the type is an array. Fixed.
26039           ves_icall_MonoMethod_get_base_definition: if the base method
26040           is abstract, get the MethodInfo from the list of methods of
26041           the class.
26042         * reflection.c: ParameterInfo.PositionImpl should be zero-based
26043           and it was 1-based. Fixed in mono_param_get_objects.
26044
26045 2003-07-20  Martin Baulig  <martin@ximian.com>
26046
26047         * mono-debug.h: Set version number to 31.
26048         (mono_debug_init): Added `MonoDomain *' argument.
26049
26050         * mono-debug-debugger.c: Reworked the type support; explicitly
26051         tell the debugger about builtin types; pass the `klass' address to
26052         the debugger.
26053
26054 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
26055
26056         * image.c: Allow new metadata tables to be loaded without a
26057         warning. Also update the warning message to give the new constant value.
26058                 
26059 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
26060
26061         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
26062         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
26063         array type representation changes.
26064
26065 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26066
26067         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
26068         on Environment.Exit () call.
26069
26070 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
26071
26072         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
26073         requires a matching corlib.
26074
26075 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26076
26077         * Changelog: My editor decided to add a CR to each line. Sorry about that.
26078           Committed again without the CRs.
26079         
26080 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
26081
26082         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
26083           getting it from the "this" socket instance. Did not work
26084           if the socket is a subclass of Socket.
26085           Also fixed bug #35371.
26086
26087 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26088
26089         * metadata.c: fixed size for TypedByRef.
26090         * loader.c: when searching for a method, consider the vararg amrker.
26091         * unicode.c, decimal.c: constify some arrays.
26092
26093 2003-07-15  Dick Porter  <dick@ximian.com>
26094
26095         * socket-io.c: Fixed compilation for gcc < 3.2.
26096
26097         Fixed compilation for machines that don't have AF_INET6 (thanks to
26098         Bernie Solomon <bernard@ugsolutions.com> for that part.)
26099
26100         Fixed compile warnings.
26101         
26102         Fixed formatting and line endings.
26103
26104 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
26105
26106         * socket-io.h:
26107         * socket-io.c: Added IPv6 support.
26108
26109 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
26110
26111         * class.c (mono_class_is_assignable_from): New function to implement
26112         the is_assignable_from logic. Used by mono_object_isinst, 
26113         Type::IsAssignableFrom () and the interpreter.
26114
26115         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
26116         Object, even interfaces.
26117         
26118         * object.c (mono_object_isinst): Implement in terms of 
26119         is_assignable_from.
26120
26121         * icall.c (ves_icall_type_is_assignable_from): New icall.
26122
26123 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
26124
26125         * domain.c (foreach_domain): fix compiler warning.
26126
26127 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
26128
26129         * image.c (load_metadata_ptrs): use g_strndup because strndup is
26130         not available on all plattforms
26131
26132 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
26133
26134         * image.h image.c: Store the metadata version string in MonoImage.
26135         * icall.c: New icall to retrieve the image version.
26136         * reflection.c (create_dynamic_image): Fill in the image version field
26137         * reflection.c (build_compressed_metadata): Use the image version
26138         from the image structure.
26139
26140 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26141
26142         * appdomain.c: modified comment.
26143         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
26144         That will be its last iteration when mono_gc_cleanup is called from
26145         mono_runtime_cleanup and before the domain is unloaded.
26146
26147         Fixes bug #45962.
26148
26149 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
26150
26151         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
26152         attributes.
26153
26154 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26155
26156         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
26157         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
26158         Bernie Solomon <bernard@ugsolutions.com>.
26159
26160 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26161
26162         * object.c, object.h: provide mono_object_new_fast() for faster
26163         allocation in some special cases.
26164
26165 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26166
26167         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
26168         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
26169
26170 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
26171
26172         * threadpool.c: fix leaks.
26173
26174 2003-07-01  Dick Porter  <dick@ximian.com>
26175
26176         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
26177         using MonoGHashTables.  Fixes threadpool bug posted to list.
26178
26179 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26180
26181         * image.h, image.c: added support to load an assembly from a byte array.
26182         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
26183         assembly bundle support.
26184
26185 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
26186
26187         * threadpool.c (mono_thread_pool_add): keep a reference to the
26188         AsyncResult to prevent GC
26189
26190 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26191
26192         * class.c: leak fix.
26193
26194 2003-06-25  Dick Porter  <dick@ximian.com>
26195
26196         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
26197         for the async object, the WaitHandle object will close the handle.
26198         Fixes bug 45321.
26199
26200 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26201
26202         * class.c: in mono_array_class_get (), lookup from the hash with the
26203         same type we insert: this works around a bug in
26204         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
26205         lluis. The real fix will have to wait for after the release.
26206
26207 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26208
26209         * icall.c: fix memory leak when getting type members.
26210
26211 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26212
26213         * reflection.c: added more pubtoken special cases.
26214
26215 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
26216
26217         * class.c: handle field offset correctly when class size
26218         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
26219
26220 2003-06-20  Martin Baulig  <martin@ximian.com>
26221
26222         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
26223         *image' field.
26224
26225 2003-06-20  Martin Baulig  <martin@ximian.com>
26226
26227         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
26228
26229 2003-06-20  Martin Baulig  <martin@ximian.com>
26230
26231         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
26232         just distinguish between variables in registers and variables at
26233         an offset relative to a register.
26234
26235 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26236
26237         * icall.c: #ifdef out latest changes until mcs is fixed.
26238
26239 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26240
26241         * icall.c: return members in metadata order.
26242
26243 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26244
26245         * icall.c: avoid infinite loop in GetTimeZoneData.
26246
26247 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26248
26249         * icall.c: added Marshal.Prelink/All icalls.
26250
26251 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26252
26253         * object.c, object.h: fix warnings and do some overflow checking
26254         when creating arrays.
26255
26256 2003-06-17  Dick Porter  <dick@ximian.com>
26257
26258         * file-io.h:
26259         * file-io.c: File attributes need to be tweaked slightly when
26260         passed from the managed to the w32 world.
26261
26262 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26263         * profiler.h profiler-private.h profiler.c: Rework last patch
26264         based on suggestion by Paolo.
26265         
26266 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26267
26268         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26269         instruction level coverage data collection.
26270         * profiler.h profiler.c (: Added new callback function which can be
26271         used by the profiler to limit which functions should have coverage
26272         instrumentation.
26273         * profiler.c (mono_profiler_load): Call g_module_build_path to
26274         generate the file name of the profiler library.
26275
26276 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26277
26278         * profiler.c, profiler.h, profiler-private.h: added basic block 
26279         coverage profiling API.
26280
26281 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26282
26283         * reflection.c (mono_reflection_create_runtime_class): Add support
26284         for events in dynamically generated code.
26285
26286         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26287         not allocated.
26288
26289 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26290
26291         * icall.c: when getting timezone info, return reasonable values if we
26292         can't get the actual data.
26293
26294 2003-06-14  Dick Porter  <dick@ximian.com>
26295
26296         * threads.c (start_wrapper): Remove the reference to the thread
26297         object in the TLS data, so the thread object can be finalized.
26298         This won't be reached if the thread threw an uncaught exception,
26299         so those thread handles will stay referenced :-( (This is due to
26300         missing support for scanning thread-specific data in the Boehm GC
26301         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26302
26303 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26304
26305         * reflection.c: ensure streams and tables are first allocated with
26306         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26307
26308 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26309
26310         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26311
26312 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26313
26314         * reflection.c (mono_reflection_create_runtime_class): Add support for
26315         properties to dynamically created classes.
26316         * reflection.c: Fix a few places where non-MonoObjects were inserted
26317         into the tokens hashtable.
26318
26319 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26320
26321         * object.c: some support to handle out of memory exceptions.
26322
26323 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26324
26325         * marshal.c (mono_marshal_get_native_wrapper): support reference
26326         return types
26327
26328 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26329
26330         * object.h, object.c: more portability stuff from Bernie Solomon.
26331         Unexport mono_object_allocate(). Added mono_object_unbox ().
26332         Set exitcode when an unhandled exception is thrown.
26333
26334 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26335
26336         * marshal.c (mono_marshal_get_native_wrapper): use custom
26337         marshaler for return types.
26338
26339 2003-06-10  Dick Porter  <dick@ximian.com>
26340
26341         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26342         ip_mreq is available
26343
26344 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26345
26346         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26347         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26348         by Bernie Solomon <bernard@ugsolutions.com>.
26349
26350 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26351
26352         * gc.c (mono_gc_init): Avoid error message on shutdown when
26353         GC_DONT_GC=1 is used.
26354
26355         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26356         New icall to return the GUID of a module.
26357
26358 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26359
26360         * class.c: ensure instance size always includes the parent's size
26361         even whem class size is set explicitly (fixes bug#44294).
26362
26363 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26364
26365         * profiler.h, profiler.c: made the simple profiler thread-safe,
26366         get more accurate timing info. Allow the loading of an
26367         externally-developed profiler module.
26368
26369 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26370
26371         * marshal.c (mono_marshal_get_native_wrapper): improved
26372         class/byref arguments.
26373         (mono_marshal_get_native_wrapper): better string marshaling support.
26374
26375 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26376
26377         * class.c: ensure .pack and .size are handled correctly and
26378         simplified layout of static fields.
26379
26380 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26381
26382         * appdomain.c
26383         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26384
26385         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26386         current directory (fix bug 44008)
26387
26388 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26389
26390         * marshal.c (mono_marshal_get_native_wrapper): started support for
26391         custom marshalers.
26392         (mono_delegate_to_ftnptr): consider marshalling specifications
26393
26394 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26395
26396         * reflection.c, reflection.h: emit custom marshal info.
26397
26398 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26399
26400         * object.c: free the GError.
26401         * icall.c: added CloseEvent_internal.
26402         * threads.[ch]:
26403         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26404         call.
26405
26406 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26407
26408         * loader.c (mono_method_get_signature): Add support for dynamic
26409         assemblies.
26410
26411 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26412
26413         * reflection.c: fixed bug #43905.
26414
26415 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26416
26417         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26418         handling TypedReference and ArgIterator.
26419         * loader.c, loader.h: added function to get signature at call site.
26420
26421 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26422
26423         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26424         data readonly. Buglets and warning fixes. Some MethodSpec support.
26425
26426 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26427
26428         * class.h, class.c, object.c: remove relative numbering support.
26429
26430 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26431
26432         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26433         free the string, until we get a chance to fix Gtk#
26434
26435 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26436
26437         * marshal.c: revert last patch.
26438
26439 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26440
26441         * icall.c: updates for new mono_class_vtable() not calling
26442         the type constructor anymore.
26443
26444 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26445
26446         * object.h, object.c: separate vtable creation from type
26447         initialization. Make running the .cctor thread safe.
26448
26449 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26450
26451         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26452
26453 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26454
26455         * loader.c (mono_get_method): consider calling convention
26456
26457 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26458
26459         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26460         to return the invisible global type for a module.
26461
26462         * reflection.c (mono_image_build_metadata): Emit global fields too.
26463
26464 2003-05-20  Peter Williams  <peterw@ximian.com>
26465
26466         * loader.c (mono_lookup_internal_call): Add a few newlines.
26467
26468 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26469
26470         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26471         literal strings.
26472
26473         * appdomain.c (set_domain_search_path): Recalculate search path when
26474         AppDomainSetup.PrivateBinPath changes.
26475
26476         * object.c (mono_class_compute_gc_descriptor): It turns out some
26477         parts of the class libs (like System.Thread) holds pointers to
26478         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26479         to treat native int a pointer type here.
26480         
26481 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26482
26483         * appdomain.h, domain.c: add hashtable for jump target resolution.
26484
26485 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26486
26487         * reflection.h reflection.c icall.c: Added new icalls 
26488         GetManifestResourceInfoInternal, GetModulesInternal and support
26489         infrastructure.
26490
26491 2003-05-16  Dick Porter  <dick@ximian.com>
26492
26493         * icall.c:
26494         * file-io.h:
26495         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26496
26497 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26498
26499         * object.c: mono_store_remote_field: little fix to previous patch.
26500
26501 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26502
26503         * class.c: add constructors to array classes.
26504         * icall.c: special case array construction for InternalInvoke (),
26505
26506 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26507
26508         * class.h class.c reflection.c object.c: Added support for field
26509         defaults in dynamically generated classes.
26510
26511 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26512
26513         * reflection.c: properly encode charset for ddlimport.
26514
26515 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26516
26517         * threads.c: allow compiling without GC.
26518
26519 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26520
26521         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26522         handling of thread static data.
26523
26524 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26525
26526         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26527
26528 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26529
26530         * class.c (mono_array_class_get): always set the serializable flags
26531         (mono_array_class_get): always set the SEALED attribute for array types
26532
26533 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26534
26535         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26536         attributes (fix for bug 42021).
26537
26538 2003-05-12  Dick Porter  <dick@ximian.com>
26539
26540         * gc.c: Don't run finalizers when the finalizer thread is
26541         finishing up, because the default domain has already been
26542         destroyed.
26543
26544 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26545
26546         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26547         value is null, we should throw an exception.   This is slightly
26548         different than the other conventions used for the constructor.
26549
26550 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26551
26552         * socket-io.c: fixed windows build.
26553
26554 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26555
26556         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26557
26558 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26559
26560         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26561         compilers.
26562
26563 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26564
26565         * class.c (mono_class_layout_fields): Add experimental GC aware
26566         auto layout facility. Requires class library changes to work correctly.
26567
26568         (mono_class_setup_vtable): Avoid overriding explicit interface
26569         method implementations. Fixes iface3.exe test.
26570
26571         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26572         object reference.
26573         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26574         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26575
26576         * metadata.h: Add new type classification macro which determines
26577         whenever the type holds an object reference.
26578
26579 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26580
26581         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26582
26583 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26584
26585         * gc.c (finalizer_thread): Work around a GC bug.
26586
26587 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26588
26589         * marshal.c (emit_struct_conv): allow unions
26590
26591         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26592
26593 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26594
26595         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26596
26597 2003-05-06  Martin Baulig  <martin@ximian.com>
26598
26599         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26600
26601 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26602
26603         * socket-io.c:
26604         (Select_internal): allow NULLs, don't create arrays if not needed.
26605         Coupled with Socket.cs changes.
26606
26607         * threadpool.c:
26608         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26609         register a finalizer for it that will close the semaphore handle. This
26610         fixes the leak and make Lupus' test run with > 4080 loops.
26611
26612 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26613
26614         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26615         Jerome Laban (bug #42287)
26616
26617 2003-05-02  Martin Baulig  <martin@ximian.com>
26618
26619         * debug-mono-symfile.h
26620         (MonoSymbolFile): Moved declaration into mono-debug.h.
26621         (MonoDebugMethodJitInfo): Likewise.
26622         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26623         argument.
26624         (_mono_debug_address_from_il_offset): Take a
26625         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26626
26627         * mono-debug.h
26628         (MonoDebugDomainData): New struct.
26629         (mono_debug_get_domain_data): New function.
26630         (mono_debug_add_method): Take an additional `MonoDomain *'
26631         argument.
26632         (mono_debug_source_location_from_address): Likewise.
26633         (mono_debug_il_offset_from_address): Likewise.
26634         (mono_debug_address_from_il_offset): Likewise.
26635
26636 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26637
26638         * reflection.c: one more check for null type in custom attrs.
26639
26640 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26641
26642         * reflection.c: avoid warning (comparison is always false due to limited
26643         range of data type).
26644
26645 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26646
26647         * icall.c: throw an exception in Type.GetField if the argument 'name'
26648         is NULL.
26649
26650 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26651
26652         * reflection.c: fixed handling of enums in named arguments to custom
26653         attributes (bug #42123).
26654
26655 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26656
26657         * reflection.c: use the right array element type and handle
26658         a null for a Type argument, too.
26659
26660 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26661
26662         * reflection.c: handle arrays as arguments to custom attributes.
26663
26664 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26665
26666         * reflection.c: handle a string value in a custom attr
26667         ctor that takes an object.
26668
26669 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26670
26671         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26672         (fix bug #42063)
26673
26674 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26675
26676         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26677
26678 2003-04-27  Martin Baulig  <martin@ximian.com>
26679
26680         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26681         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26682         MONO_DEBUGGER_EVENT_BREAKPOINT.
26683         (mono_breakpoint_trampoline_code): Removed.
26684         (mono_debugger_event_handler): The last argument is now a
26685         `guint32'.
26686         (mono_debugger_insert_breakpoint_full): Removed the
26687         `use_trampoline' argument.
26688         (mono_debugger_method_has_breakpoint): Likewise.
26689         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26690         mono_debugger_breakpoint_callback(); take the method and
26691         breakpoint number as arguments.
26692
26693 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26694
26695         * metadata.c: fix off by one when loading parameters attributes.
26696
26697 2003-04-24  Martin Baulig  <martin@ximian.com>
26698
26699         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26700
26701 2003-04-24  Martin Baulig  <martin@ximian.com>
26702
26703         * mono-debug-debugger.c: Moved all code which interacts with the
26704         Mono Debugger here.
26705
26706         * debug-mono-symfile.c: This code now just deals with the symbol
26707         file itself, the debugger code is now in mono-debug-debugger.c.
26708
26709 2003-04-23  Martin Baulig  <martin@ximian.com>
26710
26711         * mono-debug.c (mono_debug_source_location_from_il_offset):
26712         New method; like mono_debug_source_location_from_address(), but
26713         takes an IL offset instead of a machine address.
26714
26715 2003-04-23  Martin Baulig  <martin@ximian.com>
26716
26717         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26718         `line' field; this is now computed by the debugger.
26719
26720 2003-04-23  Martin Baulig  <martin@ximian.com>
26721
26722         * mono-debug.[ch]: New files.  This is the new debugging interface.
26723
26724         * mono-debug-debugger.[ch]: New files.  Moved all code which
26725         interacts with the Mono Debugger here.
26726
26727 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26728
26729         * domain.c (mono_init): initialize mono_defaults.monitor_class
26730
26731 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26732
26733         * reflection.c (method_encode_code): Add a spicy exception to help
26734         future compiler authors.
26735
26736 2003-04-21  Martin Baulig  <martin@ximian.com>
26737
26738         * icall.c
26739         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26740         Make this work with relative pathnames; g_filename_to_uri() needs
26741         an absolute filename.
26742
26743 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26744
26745         * icall.c: Track name changes in Object and ValueType.
26746
26747 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26748
26749         * metadata.c (mono_type_stack_size): size should be a multiple of
26750         sizeof (gpointer)
26751
26752 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26753
26754         * gc.c:
26755         (internal_domain_finalize): moved into mono_domain_finalize. No need
26756         to create another thread because the finalizers will be run in the
26757         finalizer thread.
26758         
26759         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26760         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26761         to be run (MS does this too).
26762
26763 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26764
26765         * object.c (mono_class_compute_gc_descriptor): Update comment.
26766
26767         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26768
26769         * image.h: Add synchronized wrapper cache.
26770
26771         * image.c (do_mono_image_open): Initialize cache.
26772
26773         * reflection.c (create_dynamic_mono_image): Initialize cache.
26774
26775 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26776
26777         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26778         ves_icall_System_Buffer_ByteLengthInternal.
26779
26780 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26781
26782         * reflection.c: setup klass->nested_in earlier. Allow
26783         a dash in the assembly name.
26784
26785 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26786
26787         * metadata.c (mono_type_to_unmanaged): dont access
26788         type->data.klass for MONO_TYPE_OBJECT
26789         (mono_type_to_unmanaged): consider System.Delegate class
26790
26791 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26792
26793         * class.c: just setup supertypes in the proper place instead of
26794         initializing the full element class for arrays.
26795
26796 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26797
26798         * class.c: ensure the element class of arrays is initialized.
26799         Setup the supertype info for array classes, too.
26800
26801 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26802
26803         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26804
26805 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26806
26807         * Makefile.am: re-added -m option when running cygpath. This way,
26808         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26809         separator.
26810         * mono-config.c: same codepath for locating mono config file for WIN32
26811         and the rest.
26812         * assembly.c: if mono_assembly_setrootdir is called, don't override
26813         the value set.
26814
26815 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26816
26817         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26818         MONO_ASSEMBLIES variable.
26819
26820 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26821
26822         * icall.c: added Assembly::GetNamespaces() icall.
26823
26824 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26825
26826         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26827
26828 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26829
26830         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26831         * object.c: fixed bug in the construction of vtable for proxies
26832
26833 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26834
26835         * object.c (mono_array_new): Mark mono_array_new as an icall.
26836
26837 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26838
26839         * class.c: fixed test for public method when overriding interfaces.
26840         Closes bug #40970.
26841
26842 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26843
26844         * appdomain.h, domain.c: added mono_domain_foreach() to
26845         be able to access the currently loaded appdomains.
26846         * object.c: make string interning work across sppdomains.
26847         Mark some functions for use as icalls.
26848
26849 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26850
26851         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26852
26853         * reflection.h reflection.c: Allocate long living data using 
26854         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26855
26856         * reflection.c: Double the allocation size in streams instead of
26857         increasing it, to prevent unneccesary copying on large assemblies.
26858         
26859         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26860         creation if the assembly does not have the Run flag set.
26861
26862 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26863
26864         * class.h: avoid the C++ keywords in header files (Jerome Laban
26865         spotted and fixed this).
26866
26867 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26868
26869         * object.c:
26870         (mono_unhandled_exception): fill in the arguments for the
26871         UnhandledException event. Only trigger that event for the default
26872         domain (as MS does).
26873
26874 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26875
26876         * object.c: Improve typed allocation stuff based on suggestions from
26877         Paolo. Also turn it on if the GC library supports it.
26878
26879 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26880
26881         * object.c object.h class.h: Added experimental typed allocation
26882         facility using the interfaces in gc_gcj.h.
26883
26884         * os/gc_wrapper.h: Added new include files.
26885         
26886 2003-04-03  Martin Baulig  <martin@ximian.com>
26887
26888         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26889         which is not yet enabled by default.
26890
26891         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26892         functions.
26893         (mono_gc_lock, mono_gc_unlock): New static functions.
26894
26895         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26896         functions; stop/start the world for the garbage collector.  This
26897         is using the windows API; we need to complete the SuspendThread()/
26898         ResumeThread() implementation in the io-layer to make this work on Unix.
26899         (mono_gc_push_all_stacks): New public function; tells the garbage
26900         collector about the stack pointers from all managed threads.
26901
26902 2003-04-03  Martin Baulig  <martin@ximian.com>
26903
26904         * object.h (MonoThread): Added `gpointer stack_ptr'.
26905
26906         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26907
26908 2003-04-03  Martin Baulig  <martin@ximian.com>
26909
26910         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26911
26912 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26913
26914         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26915         field.last.
26916
26917 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26918
26919         * loader.c (mono_lookup_internal_call): Report the corlib that is
26920         out of sync.
26921
26922 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26923
26924         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26925         System.DBNull (it's class not valuetype).
26926
26927 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26928
26929         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26930         if the array method was already assigned a token (fixes bug#40646).
26931
26932 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26933
26934         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26935         if no assembly is given.
26936
26937 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26938
26939         * metadata.h: Added the new tables.
26940
26941         * row-indexes.h: Added definitions for new tables.
26942
26943         * metadata.c: Add schemas for new tables, and add support for
26944         computing the sizes of them.
26945
26946         * class.c: Update for handling the new type cases.
26947
26948 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26949
26950         * metadata.h (MONO_TYPE_IS_VOID): new macro
26951
26952 2003-03-31  Martin Baulig  <martin@ximian.com>
26953
26954         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26955
26956         * threads.c (mono_thread_new_init): Call `thread_created' in the
26957         mono_thread_callbacks.
26958
26959 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26960
26961         * loader.h: added marshalbyrefobject_class to mono_defaults
26962         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26963         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26964           generation of output parameters.
26965           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26966         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26967           contextbound and the target object belongs to the context of the caller.
26968         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26969         * object.c: Implemented support for interfaces and abstract classes
26970           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26971           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26972
26973 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26974
26975         * class.h class.c (mono_class_is_subclass_of): New function.
26976         
26977         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26978         routines for most common case (calls from ArrayList::ToArray).
26979
26980         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26981         routine so programs which call Environment::Exit() can be profiled.
26982
26983         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26984         Added MONO_ARCH_SAVE_REGS.
26985
26986         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26987
26988 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26989
26990         * blob.h: Add a couple of new MonoType types definitions.
26991
26992         * tabledefs.h: Add a couple of new call convs.
26993
26994 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26995
26996         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26997         the layout of the class.
26998
26999         * reflection.c (alloc_table): double the size on overflow to avoid
27000         unnecessary copying.
27001
27002         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
27003         avoid filling out metadata tables and blobs. Also set mb->ilgen to
27004         null so it can be garbage collected.
27005         
27006 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
27007
27008         * reflection.c (mono_reflection_get_type): Return the resolved type
27009         only if it is in the assembly we searched.
27010
27011         * reflection.c (ensure_runtime_vtable): Initialize method slots.
27012
27013         * class.c (mono_class_setup_vtable): Set the slot of the overriding
27014         method.
27015
27016 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27017
27018         * appdomain.c:
27019         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
27020         the right one is 'file:///blah', but MS allows it.
27021         * assembly.c:
27022         (mono_assembly_open): allow 'file://blah'
27023
27024         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
27025
27026 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
27027
27028         * socket-io.c: fixes bug #40310.
27029
27030 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
27031
27032         * reflection.c (mono_reflection_parse_type): handle deeply nested
27033         types correctly.
27034
27035         * reflection.c (mono_image_create_token): Use unique token values
27036         since they will be put into a hash table.
27037
27038         * class.c (mono_class_setup_vtable): If a method occurs in more than
27039         one place in the vtable, and it gets overriden, then change the
27040         other occurances too.
27041
27042         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
27043         object as return type.
27044
27045 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27046
27047         * icall.c: Deleted "ToString" implementation for double and float
27048         because they are full implemented in managed code.
27049
27050 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27051
27052         * reflection.c, reflection.h: implemented and exported functions
27053         to retrieve info about custom attributes.
27054
27055 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27056
27057         * appdomain.c: moved Uri handling to assembly.c
27058         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
27059         work when using a file Uri in *nix and windows.
27060
27061         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
27062         GetReferencedAssemblies.
27063
27064 2003-03-18  Dick Porter  <dick@ximian.com>
27065
27066         * icall.c: Rename a couple of internal calls
27067
27068         * threads.c: Set the thread state to Stopped when a thread exits.
27069         Fixes bug 39377.
27070
27071 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
27072
27073         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
27074         New icall.
27075
27076         * object.c (mono_class_vtable): fix warning.
27077
27078 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
27079
27080         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
27081
27082         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
27083         memory.
27084         (method_encode_clauses): Create exception info structures in the right
27085         order.
27086         (mono_reflection_setup_internal_class): Initialize supertypes field.
27087
27088         * class.c object.c: Handle interfaces which implement other interfaces 
27089         correctly.
27090
27091         * class.h class.c: Move the supertypes array initialization code into 
27092         a separate function so it can be used for dynamic types too. Also call
27093         it earlier, in mono_class_init(), since it can be used before the
27094         type is initialized.
27095
27096 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27097
27098         * Makefile.am:
27099         * assembly.c:
27100         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
27101
27102         * appdomain.c:
27103         * appdomain.h:
27104         * marshal.c:
27105         * object.c: remove warnings.
27106
27107 2003-03-13  Martin Baulig  <martin@ximian.com>
27108
27109         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
27110         (MonoDebugLexicalBlockEntry): New types.
27111
27112         * debug-mono-symfile.c
27113         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
27114
27115 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27116
27117         * process.c: ret can be any non-zero value accroding to MS doc.
27118
27119 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
27120
27121         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
27122         fixing a warning for a miss-used prototype, would have cause
27123         random memory corruption.
27124
27125 2003-03-07  Martin Baulig  <martin@ximian.com>
27126
27127         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
27128         getting really annoying ....
27129
27130 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
27131
27132         * reflection.c (fixup_method): added support for array methods.
27133
27134 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
27135
27136         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
27137         (pointed out by Michael Adams).
27138
27139 2003-03-04  Dick Porter  <dick@ximian.com>
27140
27141         * icall.c: Temporarily reverted the Double and Single ToString()
27142         change, because it broke nunit.
27143
27144 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
27145
27146         * object.h, threads.h: make include files compatible with C++
27147         (patch by Jerome Laban <jlaban@wanadoo.fr>).
27148
27149 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27150
27151         * icall.c: Erased ToString helper functions for Double and Single.
27152         Now, that implementations ar all in managed code (Double and Single
27153         Formatters).
27154
27155 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
27156
27157         * appdomain.c: Added method for initializing the default context of
27158         a domain. Added internal call for getting the default context.
27159         * appdomain.h: Added context variable in MonoDomain struct.
27160         * domain.c: mono_domain_set also sets the default context of the domain
27161         * icall.c: Mapped internal method InternalGetDefaultContext.
27162         * object.c: mono_object_get_virtual_method returns always a remoting
27163         wrapper if the object is a transparent proxy.
27164         mono_runtime_invoke_array: when creating an object by calling the
27165         constructor, if the created object is a proxy, then the constructor should
27166         be called using the a remoting wrapper.
27167
27168 2003-03-03  Dick Porter  <dick@ximian.com>
27169
27170         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
27171         variable so it compiles on solaris.  Problem spotted by
27172         Christopher Taylor <ct@cs.clemson.edu>
27173
27174 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27175
27176         * appdomain.c:
27177         (get_info_from_assembly_name): don't leak value.
27178
27179         * icall.c:
27180         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
27181         result.
27182
27183 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
27184
27185         * assembly.c: export mono_image_load_references ().
27186         * class.c: handle function pointers. mono_class_from_name() now
27187         supports nested type names directly.
27188
27189 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
27190
27191         * reflection.h reflection.c: Encode already created dynamic methods 
27192         and fields correctly as a DEF instead of a REF.
27193
27194         * reflection.c: Get rid of the force_ref argument to 
27195         mono_image_typedef_or_ref since it was wrong in the first place.
27196
27197         * string-icalls.c: add error checking to string constructors according
27198         to the MSDN docs.
27199
27200         * reflection.c: Emit types in the order their TypeBuilders were 
27201         created. Previously, a new table index was assigned to each type before
27202         the tables were emitted. This was wrong because the signature blob
27203         might already refer to a type by its original table index.
27204
27205 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
27206
27207         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
27208         change.
27209         
27210 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27211
27212         * Makefile.am: make assemblies dir have \ instead of / on windows.
27213
27214 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
27215
27216         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
27217         iterate over the NESTEDCLASS table using a linear search since the
27218         table is not guaranteed to be sorted by the secondary key.
27219
27220         * class.c (mono_class_create_from_typedef): fixed up call to
27221         mono_metadata_nesting_typedef.
27222         
27223 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
27224
27225         * marshal.c (mono_string_to_byvalstr): clear the memory as
27226         suggested by Jerome Laban <jlaban@wanadoo.fr>
27227
27228 2003-02-26  Dick Porter  <dick@ximian.com>
27229
27230         * process.c: Cope with padding in .rsrc blocks
27231
27232 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27233
27234         * metadata.h: reverted the filter_len change, it breaks reflection
27235         
27236 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27237
27238         * metadata.h: added a new field to store the filter_len
27239         
27240
27241 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
27242
27243         * reflection.c: handle custom attributes for types and members
27244         created with Reflection.Emit (bug#38422).
27245
27246 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
27247
27248         * reflection.c: define RTSpecialName automatically for constructors for
27249         compatibility with MS.NET.
27250
27251         * reflection.c (mono_reflection_create_runtime_class): initialize
27252         nested_in field of dynamically created classes.
27253
27254 2003-02-22  Martin Baulig  <martin@ximian.com>
27255
27256         * debug-mono-symfile.h: Incremented version number.
27257
27258 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27259
27260         * object.h icall.c process.c: fix warnings.
27261
27262 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27263
27264         * appdomain.h appdomain.c:
27265         (mono_domain_try_type_resolve): split the 
27266         name_or_tb argument into a name and a tb argument.
27267         (mono_domain_has_type_resolve): new function to check whenever the
27268         application has registered a TypeResolve event handler.
27269         
27270         * icall.c reflection.h reflection.c: move the type resolve logic into
27271         mono_reflection_get_type () so it will be invoked when 
27272         Assembly::GetType () is called.
27273
27274         * reflection.c:
27275         (mono_reflection_get_type): renamed to get_type_internal.
27276         (mono_reflection_get_type): fixed type name generation so it works 
27277         for nested types too.
27278         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27279         costly type name generation if there is no resolve event handler.
27280
27281 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27282
27283         * class.c, image.c: load exported types from file references.
27284
27285 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27286
27287         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27288           used to cache the managed methods used to create proxies and make 
27289           remote invocation of methods.
27290         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27291           to be remotely created.
27292         * object.c: Modified the method mono_class_vtable(). It now initializes 
27293           the remote flag of the vtable. Modified mono_object_new_specific(), 
27294           so now it checks the remote flag.
27295         * icall.c: Added a couple of internal methods, one for enabling instance 
27296           creation interception for a type, and one for creating objects bypassing
27297           the remote check.
27298
27299 2003-02-18  Martin Baulig  <martin@ximian.com>
27300
27301         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27302         New interncall to get a method's metadata token.
27303
27304         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27305         New interncall for the debugger.
27306
27307 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27308
27309         * class.c (mono_class_setup_vtable): allocate supertype array
27310
27311 2003-02-18  Martin Baulig  <martin@ximian.com>
27312
27313         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27314
27315 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27316
27317         * reflection.c:
27318         (assembly_name_to_aname): jump over unknown properties (i've found
27319         something like: 'type, assembly, version=xxx, custom=null, public...',
27320         so now will ignore custom=null and still get the rest of the values).
27321
27322 2003-02-17  Dick Porter  <dick@ximian.com>
27323
27324         * threads.c: Have Thread.Start() wait for a semaphore to signal
27325         that the thread has set up all its local data.  This fixes bug
27326         34323, where Abort() raced the new thread's TLS data.
27327
27328         Also removes the handle_store() call from start_wrapper, because
27329         threads are now always created suspended and there is no longer a
27330         race between the parent and child threads to store the info.
27331
27332 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27333
27334         * image.c: explain the #- heap issue in a message, hopefully
27335         avoiding FAQs on mono-list.
27336
27337 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27338
27339         * icall.c:
27340         (GetEntryAssembly): if the domain has not invoked
27341         AppDomain.ExecuteAssembly yet, return the assembly of the default
27342         AppDomain.
27343
27344 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27345
27346         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27347
27348 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27349
27350         * metadata.c, reflection.c: simple speedup to type hash
27351         and equals code.
27352
27353 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27354
27355         * image.c, image.h, class.c, assembly.c: move module loading
27356         to MonoImage. When loading metadata, consider alignemnet from
27357         the start of metadata, not from the metadata address in memory.
27358
27359 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27360
27361         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27362         AssemblyBuilder objects. Factored out custom attribute creation into
27363         a separate function.
27364         (create_custom_attr): new function to create custom attributes.
27365
27366 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27367
27368         * Makefile.am: Got tired of typing the full pathname to pedump.
27369         Until there is another option, am installing this.
27370
27371 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27372
27373         * class.c (class_compute_field_layout): always set field->parent 
27374         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27375
27376 2003-02-11  Dick Porter  <dick@ximian.com>
27377
27378         * threads-types.h:
27379         * monitor.c: Rewrote Monitor, making lock much faster and
27380         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27381         creates them as needed.
27382
27383         * exception.c: Added SynchronizationLockException
27384
27385         * threads.c: Deleted old Monitor implementation.  The new one is
27386         in a new file.
27387
27388 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27389
27390         * class.c: handled TypedReference type code. Set the correct size for
27391         class data. Setup interface_offsets for interface classes, too.
27392
27393 2003-02-09  Martin Baulig  <martin@ximian.com>
27394
27395         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27396
27397 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27398
27399         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27400         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27401         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27402         * verify.c: check for code that runs after the end of the method.
27403
27404 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27405
27406         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27407         "System.Math::Round2".
27408         * sysmath.h: Added Floor, Round and Round2 definitions.
27409         * sysmath.c: Modified certain functions that were not 100% compliant
27410         with MS.NET (math precision) and added the implementation of Floor,
27411         Round and Round2.
27412
27413 2003-02-07  Martin Baulig  <martin@ximian.com>
27414
27415         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27416
27417 2003-02-07  Martin Baulig  <martin@ximian.com>
27418
27419         * debug-mono-symfile.c: Reflected latest symwriter changes.
27420         (mono_debug_create_mono_symbol_file): Removed.
27421         (mono_debug_open_mono_symbol_file): Take an argument which
27422         specifies whether to create a dynamic symbol file.
27423
27424 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27425
27426         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27427
27428 2003-02-05  Martin Baulig  <martin@ximian.com>
27429
27430         * reflection.c (mono_image_build_metadata): Make this public,
27431         protect it against being called multiple times, don't create
27432         resources and don't build the compressed metadata here.
27433         (mono_image_create_pefile): Do this here.
27434
27435         * icall.c
27436         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27437
27438 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27439
27440         * socket-io.c: fixed bug #36322.
27441
27442 2003-02-06  Piers Haken <piersh@friskit.com>
27443
27444         * appdomain.[ch]:
27445         * class.h:
27446         * debug-mono-symfile.c:
27447         * icall.c:
27448         * loader.c:
27449         * mono-config.c:
27450         * monosn.c:
27451         * reflection.c:
27452         * socket-io.c: warning cleanups
27453
27454 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27455
27456         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27457         function. works like remoting invoke, but does a check for the Proxy first.
27458
27459 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27460
27461         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27462
27463 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27464
27465         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27466         array of pointers.
27467         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27468         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27469
27470         * object.c (mono_store_remote_field_new): used by the new jit
27471         instead of mono_store_remote_field
27472         (mono_load_remote_field_new): used by the new jit
27473         instead of mono_load_remote_field
27474
27475 2003-02-05  Patrik Torstensson
27476
27477         * appdomain.c: changed unload to take the domain id instead
27478         of domain
27479         
27480         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27481
27482
27483 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27484
27485         * appdomain.c: don't look for assemblies in ApplicationBase if
27486         PrivateBinPathProbe is set.
27487
27488 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27489
27490         * object.c: make the first argument in main_args contain the absolute
27491         path to the assembly. Fixes bug #37511.
27492
27493 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27494
27495         * icall.c: get correct UTC offset for countries not using daylight
27496         time saving. Fixes bug #30030.
27497
27498 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27499
27500         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27501         and 1 are the family).
27502
27503 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27504
27505         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27506
27507         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27508
27509 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27510
27511         * reflection.c: added support for SignatureHelper tokens, which is
27512         needed by the Calli opcode.
27513
27514         * reflection.h: track changes to SignatureHelper class.
27515
27516         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27517
27518 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27519
27520         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27521
27522 2003-02-03  Patrik Torstensson
27523         * appdomain.[c|h], domain.c : 
27524          - Added support for getting a domain via domain id
27525          - Support for setting and getting domain from System.AppDomain 
27526            (used in cross appdomain channel)
27527          - Added support for get/set for a MonoAppContext on a thread 
27528            (Context class in System.Runtime.Remoting.Contexts),
27529          - Removed hack in Get/SetData and ExecuteAssembly.
27530         
27531         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27532         the managed world to get control when a proxy is created.
27533
27534         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27535         
27536 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27537
27538         * icall.c
27539         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27540         Populate the codebase field as well.
27541
27542 2003-02-02  Martin Baulig  <martin@ximian.com>
27543
27544         * debug-mono-symfile.c
27545         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27546         (mono_debug_symfile_add_method): Allow interncalls.
27547
27548 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27549
27550         * icall.c: throw parse exception if strtod fails or the string is empty.
27551
27552 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27553
27554         * marshal.c: handle object type separately from defined
27555         class types.
27556
27557 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27558
27559         * marshal.c: handle NATIVE_LPSTR for strings when it's
27560         explicitly specified.
27561
27562 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27563
27564         * reflection.c, reflection.h, icall.c: setup the reflection
27565         handle cache for ModuleBuilders and AssemblyBuilders.
27566
27567 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27568
27569         * reflection.c (reflection_methodbuilder_to_mono_method): set
27570         pinvoke flag
27571
27572 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27573
27574         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27575
27576 2003-01-29  Dick Porter  <dick@ximian.com>
27577
27578         * threads.c: No need for the fake_thread kludge now that Thread
27579         doesn't run a class constructor
27580         
27581 2003-01-29  Dick Porter  <dick@ximian.com>
27582
27583         * threads.c: Use g_direct_hash instead of the rather bogus
27584         g_int_hash
27585
27586 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27587
27588         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27589         (fix pinvoke12.exe)
27590         (mono_marshal_get_struct_to_ptr): generate valid IL code
27591         (mono_marshal_get_ptr_to_struct): generate valid IL code
27592         (*): correctly set sig->pinvoke, we need to memdup the signature
27593         to do that
27594
27595 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27596
27597         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27598         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27599
27600 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27601
27602         * profiler.c: provide more callers information.
27603
27604 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27605
27606         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27607
27608         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27609
27610         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27611
27612 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27613
27614         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27615         exception instead of going into an infinite loop on dates which it 
27616         can't yet handle.
27617
27618         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27619         out-of-range exception if needed.
27620
27621         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27622         an implementation for an interface method and to override an inherited
27623         method at the same time. 
27624         Imagine a scenario when a virtual method is used to override a
27625         virtual abstract method in a parent class, and this same method 
27626         provides an implementation for an method inherited from an interface. 
27627         In this case, the interface resolution code will set im->slot, which 
27628         means that the virtual method override pass will skip this method 
27629         which means a pointer to the abstract method inherited from the parent
27630         will remain in the vtable of this non-abstract class.
27631
27632         * class.c: (mono_class_setup_vtable): continue search for a real 
27633         method if only an abstract method is found.     
27634
27635 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27636
27637         * reflection.c: add size to encoding for ByValStr and ByValArray
27638         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27639
27640 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27641
27642         * class.c (mono_class_setup_vtable): pass the override info as an
27643         argument.
27644
27645         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27646         correctly.
27647         
27648         * reflection.c (ensure_runtime_vtable); add support for method 
27649         overrides.
27650         
27651 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27652
27653         * reflection.c (resolution_scope_from_image): Hack to work to work with
27654         dynamic assemblies.
27655
27656         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27657         added a 'force_ref' argument to force this function to allways return 
27658         a TypeRef. This is needed by mono_image_get_memberref_token ().
27659         
27660 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27661
27662         * reflection.c (mono_image_get_type_info): interfaces really don't have
27663         a parent.
27664
27665         * reflection.c (mono_image_basic_init): fill out missing fields of
27666         image structure.
27667
27668         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27669         dynamic assemblies. This is required so dynamic assemblies show up in
27670         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27671         Type::GetType() etc. This is consistent with MS behaviour.
27672
27673         * image.c image.h reflection.c: add newly created classes to the name 
27674         cache so mono_class_get () will find them.      
27675
27676 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27677
27678         First part of changes to get IKVM.NET running under mono.
27679         
27680         * appdomain.h, appdomain.c: added new function 
27681         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27682         This function will call AppDomain::DoTypeResolve to do the actual work.
27683
27684         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27685         moved existing code dealing with dynamic tokens to a new function 
27686         called mono_reflection_lookup_dynamic_token (). This function will 
27687         raise TypeResolve events when appropriate. Since reflection.c is not 
27688         part of libmetadata, a new hook function called 
27689         mono_lookup_dynamic_token() is added to class.c which will call this.
27690
27691         * assembly.h assembly.c: make the invoke_load_hook function public,
27692         so it can be called for dynamic assemblies.
27693
27694         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27695
27696         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27697         type isn't found.
27698
27699         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27700         MonoGHashTable, since it contains pointers to objects which the GC 
27701         needs to track.
27702
27703         * assembly.c (search_loaded): remove unused variable.
27704         
27705 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27706
27707         * object.c: fixed issue exposed by gcc-generated IL programs
27708         that use RVA data for pointers.
27709
27710 2003-01-25  Martin Baulig  <martin@ximian.com>
27711
27712         * threads.c (start_wrapper): Moved the initialization of
27713         `start_func' above the mono_new_thread_init() call to which we
27714         pass it as argument.
27715
27716 2003-01-24  Martin Baulig  <martin@ximian.com>
27717
27718         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27719         the MonoThread pointer.
27720
27721 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27722
27723         * icall.c: Rename `PowImpl' to Pow.
27724
27725 2003-01-23  Dick Porter  <dick@ximian.com>
27726
27727         * threads.c (start_wrapper): Create a Thread object if needed, so
27728         the Main() thread can do the class initialisation in a subthread
27729         that has been set up to allow managed code execution.
27730
27731         Pass the thread ID instead of the MonoThread pointer to the thread
27732         start and attach callbacks.  This change is required, because the
27733         jit thread start callback must be called _before_ the Thread
27734         object can be created.
27735         
27736         (mono_thread_init): Removed much object creation code that is no
27737         longer needed.  No managed code is called from here now.
27738
27739         * object.c (mono_runtime_exec_managed_code): Create a subthread
27740         for Main, and call back to the runtime to use it.
27741         Set the exit code when Main exits.
27742
27743         * gc.c: Make sure domain finalisation happens in a subthread.
27744         Re-enable threaded GC, fixing bug 31333 (again).
27745
27746         * environment.c: System.Environment internall calls (so far just
27747         ExitCode is here, the others are still in icall.c)
27748
27749         * appdomain.c (mono_runtime_cleanup): All threads running managed
27750         code should have finished before mono_runtime_cleanup() is
27751         reached, so no need to clean up threads.
27752
27753 2003-01-22  Martin Baulig  <martin@ximian.com>
27754
27755         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27756         `gpointer func' arguments.      
27757         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27758         but added `MonoThread *thread' argument.
27759         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27760
27761         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27762         and pass it to the mono_thread_start_cb callback.
27763         (mono_install_thread_callbacks): New public function to install a
27764         set of callbacks which are set by the debugger.
27765         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27766
27767 2003-01-22  Martin Baulig  <martin@ximian.com>
27768
27769         * Makefile.am: Install debug-mono-symfile.h.
27770
27771 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27772
27773         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27774
27775 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27776
27777         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27778         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27779         (mono_array_class_get): correctly set access levels of arrays
27780
27781 2003-01-20      Patrik Torstensson
27782         * image.h (MonoAssemblyName): changed major, minor, build, revision
27783         from signed to unsigned.
27784
27785 2003-01-20  sean kasun <skasun@azstarnet.com>
27786
27787         * reflection.c (load_cattr_value): Now this handles
27788         MONO_TYPE_SZARRAY.  Fixes bug #35629
27789
27790 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27791
27792         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27793         integer value
27794
27795 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27796
27797         * decimal.c: fixed bug #26056.
27798
27799 2003-01-17  Martin Baulig  <martin@ximian.com>
27800
27801         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27802
27803 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27804
27805         * exception.[ch]:
27806         (mono_get_exception_type_initialization): new function.
27807
27808         * object.c: throw a TypeInitializationException when an exception is
27809         thrown invoking the class constructor.
27810
27811 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27812
27813         * reflection.c: fixed attribute reading.
27814
27815 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27816
27817         * icall.c:
27818         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27819         provided, look for the type in the calling assembly and then in
27820         mscorlib; if the assembly name is provided, only try that one.
27821
27822 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27823
27824         * object.c: register the vtable before there is a chance it's
27825         queried again recursively.
27826
27827 2003-01-13  Duncan Mak  <duncan@ximian.com>
27828
27829         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27830         gc-internal.h. 
27831         
27832 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27833
27834         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27835
27836 2003-01-11  Martin Baulig  <martin@ximian.com>
27837
27838         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27839         this to 20 for the release.
27840
27841 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27842
27843         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27844
27845         * loader.c (mono_method_get_marshal_info): bug fix
27846
27847         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27848         structures with explicit layout
27849
27850 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27851
27852         * profiler.c: made the output more readable (and sorted). 
27853         Added caller information for the allocation profiler.
27854
27855 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27856
27857         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27858
27859 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27860
27861         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27862         to get value types.
27863         
27864 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27865
27866         * object.c, profiler.h, profiler.c, profiler-private.h:
27867         Added object allocation profiler.
27868
27869 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27870
27871         * reflection.h, reflection.c: handle global methods.
27872         Compress blob entries.
27873
27874 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27875
27876         * marshal.c: fix compilation.
27877
27878 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27879
27880         * loader.c (mono_method_get_marshal_info): impl.
27881
27882         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27883
27884 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27885
27886         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27887         for reference types.
27888
27889 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27890
27891         * loader.c: fixed off by one error in loaded parameter names.
27892
27893 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27894
27895         * marshal.c (mono_marshal_get_icall_wrapper): like
27896         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27897         instead of a MonoMethod.
27898
27899 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27900
27901         * decimal.c: fixed bug #36537.
27902
27903 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27904
27905         * marshal.c: throw a missing method exception if a
27906         P/Invoke method is not found.
27907
27908 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27909
27910         * icall.c: allow a null this for constructors.
27911
27912 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27913
27914         * icall.c: raise the proper exceptions if the arguments to the
27915         internal Invoke are incorrect.
27916
27917 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27918
27919         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27920
27921 2003-01-03  Martin Baulig  <martin@ximian.com>
27922
27923         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27924
27925 2002-12-31  Martin Baulig  <martin@ximian.com>
27926
27927         * debug-mono-symfile.c: Completely rewrote the type section.
27928         Instead of using individual malloc()ed fields, we use one big
27929         continuous memory area and offsets into this area.
27930         See the comments in the source code for details.
27931
27932 2002-12-30  Martin Baulig  <martin@ximian.com>
27933
27934         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27935
27936 2002-12-30  Martin Baulig  <martin@ximian.com>
27937
27938         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27939         line number table in this data blob instead of using an external
27940         pointer.
27941
27942 2002-12-28  Martin Baulig  <martin@ximian.com>
27943
27944         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27945
27946 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27947
27948         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27949         as a boxed return type.
27950
27951 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27952
27953         * appdomain.c
27954         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27955         g_build_filename to properly get separators on the filename created.
27956
27957         * object.h: Small change, introduce MonoMarshalByRefObject to
27958         track the layout of that structure in the C# universe as we make
27959         changes there.
27960
27961 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27962
27963         * object.c: removed assert to allow static fields on interfaces.
27964         * loader.c: a TypeSpec may be used for any type, not just arrays.
27965
27966 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27967
27968         * class.c, class.h: added mono_class_array_element_size ().
27969         Ignore static methods in interfaces.
27970
27971 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27972
27973         * threads.c: fixed the build under cygwin.
27974
27975 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27976
27977         * reflection.c: handle nullref constants. Allocate keys for
27978         reflection handles with the GC.
27979
27980 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27981
27982         * threads.c, threads.h: added mono_thread_get_abort_signal()
27983         to get a suitable signal for thread abort.
27984
27985 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27986
27987         * metadata.c: fix handling of ExportedType table.
27988
27989 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27990
27991         * icall.c: added WriteWindowsDebugString internal call.
27992
27993 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27994
27995         * reflection.h: added fields to match C# implementation.
27996
27997 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27998
27999         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
28000
28001 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
28002
28003         * gc.h, gc-internal.h: Rename header for GC internal calls to
28004         gc-internal.h from gc.h as to not clash with Boehm GC having its
28005         header installed as <gc.h> in outside include paths.
28006         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
28007         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
28008
28009 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28010
28011         * icall.c: assign minor, build and revision in FillName.
28012
28013 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
28014
28015         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
28016         Added support for running code generated by Reflection.Emit.
28017
28018 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28019
28020         * appdomain.c: check for NULL argument in LoadFrom.
28021
28022 2002-12-10  Dick Porter  <dick@ximian.com>
28023
28024         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
28025
28026 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28027
28028         * appdomain.c: fix buglet when building exe file name.  Handle full
28029         assembly name (needed after latest changes to AssemblyName).
28030         * image.c:
28031         (mono_image_close): free some hashtables.
28032
28033 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
28034
28035         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
28036         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
28037         on some systems (redhat 7.3) 
28038
28039 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
28040
28041         * threads.c: delete the critical section of a sync block,
28042         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
28043
28044 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
28045
28046         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
28047
28048 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28049
28050         * appdomain.[ch]: handle the assembly preload event to try loading the
28051         assemblies using the paths we have in the current domain.
28052
28053         * assembly.[ch]: created an assembly preload hook that is called to try
28054         loading the assembly by other means that the ones provided here.
28055
28056         * domain.c: initialize the domain search path.
28057
28058         From now on, assemblies (TODO: except corlib and System) are loaded
28059         according to these rules when using mono_assembly_load ():
28060
28061                 1. It tries to load the assembly from the ApplicationBase
28062                 of the current domain appending .dll and .exe (TODO: have to
28063                 try loading from name/name.dll and name/name.exe).
28064
28065                 2. It tries the search path specified in PrivateBinPath for the
28066                 current domain (if any).
28067
28068                 3. Previous behavior.
28069
28070 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
28071
28072         * icall.c: implemented GetInterfaceMap() related icall.
28073         * domain.c, loader.h: load MethodInfo in mono_defaults.
28074
28075 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
28076
28077         * gc.c: disable the finalizer thread for now, untill all the issues
28078         with it are resolved.
28079
28080 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
28081
28082         * string-icalls.c: handle embedded nulls in string ctor when the
28083         length is specified.
28084
28085 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
28086
28087         * class.c: look for explicit interface implementation in parent
28088         classes, too.
28089
28090 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
28091
28092         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
28093
28094 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
28095
28096         * gc.c: protect handles with a critical section.
28097
28098 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28099
28100         * icall.c:
28101         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
28102         parameters. If no assembly specified, try getting the type from all
28103         the assemblies in the current domain, else, load the assembly and get
28104         the type from it.
28105
28106 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28107
28108         * marshal.c: applied patch from Aleksey Demakov that fixes
28109         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
28110
28111 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28112
28113         * icall.c: fixed get_location.
28114
28115 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
28116
28117         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
28118         declarations to make it work with older gcc. 
28119
28120         * loader.c (mono_get_method): set signature->pinvoke for native calls
28121
28122 2002-11-20  Dick Porter  <dick@ximian.com>
28123
28124         * threads.c (mono_thread_init): Set the main thread's handle
28125
28126 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28127
28128         * gc.c: allow compilation without GC support. Changed to match the
28129         mono coding style.
28130
28131 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28132
28133         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
28134
28135 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
28136
28137         * reflection.c: set a public key token on the core assemblies.
28138
28139 2002-11-18  Dick Porter  <dick@ximian.com>
28140
28141         * threads.c: Split out some thread initialisation so that other
28142         files can set the start callback function.
28143
28144         * gc.c: Run finalisers in a separate thread, to avoid stack
28145         overflow.  Fixes bug 31333.
28146
28147         * appdomain.c: Set up GC finalisation thread.
28148
28149         * reflection.c: 
28150         * object.c: 
28151         * domain.c: Use gc.h macros for GC_malloc
28152         
28153 2002-11-15  Dick Porter  <dick@ximian.com>
28154
28155         * threadpool.c: 
28156         * threads.c:
28157         * appdomain.c: Removed mono_runtime_init_with_attach(),
28158         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
28159         merging the extra parameter with the existing function.  Removed
28160         unneeded code in mono_thread_attach().
28161
28162 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
28163
28164         * image.c (mono_image_loaded_by_guid): a method to get loaded
28165         images by guid. 
28166         (load_metadata_ptrs): we store the guid as string.
28167
28168 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
28169
28170         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
28171
28172         * metadata.c (mono_guid_to_string): imported method form Zoltan
28173         Varga (slightly modified)
28174
28175         * assembly.c (mono_assembly_open): load precompiled code
28176
28177         * loader.h (MonoMethod): we store the method token for use in the
28178         aot compiler. 
28179
28180 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28181
28182         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
28183         the hook function called when an assembly is loaded.
28184         
28185         * domain.c: Modified file.
28186         (mono_domain_assembly_load): removed hash table insertion of assemblies.
28187
28188         Fixes bug #33196.
28189
28190 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
28191
28192         * reflection.c: Map PEFileKind to the value expected by the WinNT
28193         image loader. 
28194
28195 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28196
28197         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
28198         Read until the buffer is filled completely.
28199
28200 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28201
28202         * icall.c: implemented MonoType.InternalGetEvent ().
28203
28204 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28205
28206         * appdomain.c: implemented InitAppDomainSetup. Delayed
28207         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
28208         the entry_assembly.
28209
28210         * assembly.c: base_dir is now an absolute path ending with
28211         G_DIR_SEPARATOR.
28212
28213         * icall.c: modified get_location according to the above changes.
28214
28215         * object.c: init AppDomain.SetupInformation for the default domain after
28216         we have the entry assembly.
28217
28218         * domain.c: when unloading a domain, setup = NULL.
28219
28220 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
28221
28222         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
28223
28224 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
28225
28226         * object.h, object.c: introduced mono_object_get_virtual_method ()
28227         to lookup the method invoked on an object when a callvirt is done on
28228         a method.
28229         * icall.c: make MethodInfo::Invoke() always do a virtual call.
28230
28231 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28232
28233         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
28234         current domain when loaded an assembly and failed to load it.
28235
28236         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
28237
28238 2002-10-31  Dick Porter  <dick@ximian.com>
28239
28240         * icall.c: 
28241         * file-io.h: 
28242         * file-io.c: Return the error status in a parameter, as the
28243         GetLastError() value has long since been blown away if we try and
28244         look it up in a subsequent internal call invocation.  Delete the
28245         GetLastError() internal call, because it's useless.
28246
28247 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28248
28249         * class.[ch]: added cast_class to fix bug 29517
28250
28251 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28252
28253         * marshal.c: create valid IL code in the filter clause:
28254         the new JIT is less forgiving:-)
28255
28256 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28257
28258         * icall.c: removed get_property internal call.
28259
28260 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28261
28262         * appdomain.h domain.c: Added an ID to appdomains.
28263         
28264         * threads.c threads.h icall.c: Implement icall
28265         Thread:GetDomainID(), and remove unused icall 
28266         CurrentThreadDomain_internal.
28267
28268 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28269
28270         * icall.c: Don't recurse through the base types in GetConstructor.
28271         Fixes bug #32063. 
28272
28273 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28274
28275         * mempool.h, mempool.c: added mono_mempool_empty() and
28276         mono_mempool_stats().
28277
28278 2002-10-23  Dick Porter  <dick@ximian.com>
28279
28280         * file-io.c: 
28281         * file-io.h: 
28282         * icall.c: Added MonoIO.GetFileType internal call
28283
28284 2002-10-17  Dick Porter  <dick@ximian.com>
28285
28286         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28287         delegate semaphore before waiting for all threads to finish,
28288         because new threads can also call async delegates.  Fixes bug
28289         32004.
28290
28291         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28292         of 3 seconds, in case another async job is queued.  (This part is
28293         needed because the bug fix reintroduced the 3s exit lag.)  This
28294         makes the mono_runtime_shutdown flag superfluous.
28295
28296 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28297
28298         * reflection.c: include ehader size in method section headers.
28299         Really check for suplicated modules entries.
28300
28301 2002-10-17  Martin Baulig  <martin@gnome.org>
28302
28303         * debug-mono-symfile.c: Added back support for locals.
28304
28305 2002-10-14  Martin Baulig  <martin@gnome.org>
28306
28307         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28308         MONO_TYPE_VOID.
28309
28310 2002-10-14  Martin Baulig  <martin@gnome.org>
28311
28312         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28313         mono_class_get() instead of looking in the class cache. 
28314
28315 2002-10-13  Martin Baulig  <martin@gnome.org>
28316
28317         * debug-mono-symfile.c: Set version number to 28, include the
28318         signature in method names.
28319
28320 2002-10-13  Martin Baulig  <martin@gnome.org>
28321
28322         * debug-mono-symfile.h: Set version number to 27.
28323
28324 2002-10-11  Martin Baulig  <martin@gnome.org>
28325
28326         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28327
28328 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28329
28330         * metadata.c, metadata.h: added helper function to allocate signatures.
28331
28332 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28333
28334         * icall.c: added internal call to get the location of machine.config.
28335
28336 2002-10-08  Martin Baulig  <martin@gnome.org>
28337
28338         * debug-mono-symfile.c: Ignore classes with a pending init for the
28339         moment.
28340
28341 2002-10-03  Dick Porter  <dick@ximian.com>
28342
28343         * threads.c: Freebsd pthread_t is a pointer
28344
28345 2002-10-03  Dick Porter  <dick@ximian.com>
28346
28347         * socket-io.c: Implemented GetHostName_internal
28348
28349 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28350
28351         * mono-config.c:
28352         (mono_config_parse_file): don't leak the text.
28353
28354 2002-10-02  Martin Baulig  <martin@gnome.org>
28355
28356         * debug-mono-symfile.c: Added support for methods.
28357
28358 2002-10-01  Martin Baulig  <martin@gnome.org>
28359
28360         * debug-mono-symfile.c: Don't emit methods and line numbers for
28361         the dynamic symbol file, just write the type table.  We can easily
28362         have an external helper program which creates a symbol file for an
28363         IL file.        
28364
28365 2002-10-01  Dick Porter  <dick@ximian.com>
28366
28367         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28368         Only add the handle to the cleanup array when we're about to
28369         launch the thread.  Bug 31425 deadlocked when the test was run on
28370         mono under w32.
28371
28372 2002-10-01  Martin Baulig  <martin@gnome.org>
28373
28374         * debug-mono-symfile.c: Added support for properties.
28375
28376 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28377
28378         * reflection.c: unaligned store fix from Mark Crichton
28379         <crichton@gimp.org>.
28380
28381 2002-09-27  Martin Baulig  <martin@gnome.org>
28382
28383         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28384         New interncall.
28385
28386 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28387
28388         * assembly.h, assembly.c: use a sane API to hook into the assembly
28389         loading process instead of a useless special-purpouse hack
28390         (ngen needs a hook, too, for example).
28391
28392 2002-09-27  Dick Porter  <dick@ximian.com>
28393
28394         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28395         io-layer can set up some process handle info.  Not needed on w32,
28396         but doesn't hurt either.
28397
28398         * process.c: Pass the program name in the second parameter to
28399         CreateProcess, so the path is searched.  Include the working
28400         directory. Implemented process name, process enumeration, and some
28401         process detail internal calls.
28402         
28403         * icall.c: Added internal calls for process lookup, and some
28404         process details
28405
28406 2002-09-26  Martin Baulig  <martin@gnome.org>
28407
28408         * assembly.c (mono_install_open_assembly_hook): New global
28409         function to install a function to be invoked each time a new
28410         assembly is loaded.
28411         (mono_assembly_open): Run this callback function if set.
28412
28413         * debug-mono-symfile.c: Put back line numbers for the dynamic
28414         symbol file and also record the .il file as source file.  This
28415         allows us to install the temporary symbol file as `file.dbg' just
28416         like a compiler-generated one.
28417
28418 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28419
28420         * Corrected typo in gc.c (BOHEM vs BOEHM).
28421
28422 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28423
28424         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28425         GetProperties. Also avoid calling g_slist_length in GetProperties and
28426         GetMethods.
28427
28428 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28429
28430         * reflection.c: avoid unaligned stores (bug spotted by
28431         Mark Crichton  <crichton@gimp.org>).
28432
28433 2002-09-25  Martin Baulig  <martin@gnome.org>
28434
28435         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28436         instead of guint64 for addresses and added prologue/epilogue info.
28437
28438 2002-09-25  Martin Baulig  <martin@gnome.org>
28439
28440         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28441         store line number info.  For the dynamic symbol file, we only need
28442         to provide the JIT generated dynamic line number info for the dynamic
28443         symbol file.
28444
28445 2002-09-25  Martin Baulig  <martin@gnome.org>
28446
28447         * debug-mono-symfile.h: Incremented version number.
28448
28449 2002-09-24  Martin Baulig  <martin@gnome.org>
28450
28451         * class.c (mono_debugger_class_init_func): New global function
28452         pointer variable.
28453         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28454         call it.
28455
28456         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28457         function.  This is called via the mono_debugger_class_init_func
28458         hook to add all types to the dynamic type table.
28459         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28460         from its metadata token.
28461
28462         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28463         New interncall for the debugger.
28464
28465 2002-09-24  Nick Drochak <ndrochak@gol.com>
28466
28467         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28468         before using it in case it is null.
28469         
28470 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28471
28472         * metadata.c: allow custom modifiers in local var signatures
28473         (bug spotted by Zoltan Varga).
28474
28475 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28476
28477         * class.c: deal with the <Module> class that may have a NULL vtable.
28478         Eliminate warnings.
28479
28480 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28481
28482         * image.c, image.h: more strong name helpers.
28483         * monosn.c: more work: convert pem keys to cryptoapi format.
28484
28485 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28486
28487         * string-icalls.c: speedup IndexOf.
28488
28489 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28490
28491         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28492
28493 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28494
28495         * icall.c: cleanup: use mono_object_domain ().
28496
28497 2002-09-23  Martin Baulig  <martin@gnome.org>
28498
28499         * debug-mono-symfile.c: Improved type support.
28500
28501 2002-09-22  Martin Baulig  <martin@gnome.org>
28502
28503         * debug-mono-symfile.c: Added support for reference types and strings.
28504
28505 2002-09-22  Martin Baulig  <martin@gnome.org>
28506
28507         * debug-mono-symfile.c: Started to work on the type table.
28508
28509 2002-09-21  Martin Baulig  <martin@gnome.org>
28510
28511         * debug-mono-symfile.c: Largely reworked the symbol table format.
28512         The symbol table is now incrementally updated each time a new
28513         method is added.  We're now also using our own magic and version
28514         so that you don't need to recompile all your classes if the
28515         dynamic table changes.
28516         (mono_debug_update_mono_symbol_file): Removed.
28517         (mono_debug_symfile_add_method): New function to add a method.
28518
28519 2002-09-21  Martin Baulig  <martin@gnome.org>
28520
28521         * icall.c
28522         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28523         New interncall.
28524
28525         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28526         New interncall to get a method from its metadata token.
28527
28528 2002-09-21  Martin Baulig  <martin@gnome.org>
28529
28530         * debug-mono-symfile.c: Create type table.
28531
28532 2002-09-20  Martin Baulig  <martin@gnome.org>
28533
28534         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28535
28536 2002-09-20  Martin Baulig  <martin@gnome.org>
28537
28538         * debug-mono-symfile.c: Provide information about params and locals.
28539
28540 2002-09-20  Martin Baulig  <martin@gnome.org>
28541
28542         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28543         New interncall.
28544
28545         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28546         interncall to get a method from its metadata token.
28547
28548 2002-09-20  Martin Baulig  <martin@gnome.org>
28549
28550         * debug-mono-symfile.c: Added a few checks for method->header
28551         being non-NULL.  This should never happen, but for the moment
28552         let's use a g_warning() rather than a g_assert().
28553
28554 2002-09-19  Mark Crichton  <crichton@gimp.org>
28555
28556         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28557         even if support for it isn't present.  Added an #ifdef to fix this.
28558
28559         * socket-io.c: Added checks back for Solaris support.
28560
28561 2002-09-19  Martin Baulig  <martin@gnome.org>
28562
28563         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28564         changes in the symbol file format.
28565
28566 2002-09-18  Martin Baulig  <martin@gnome.org>
28567
28568         * debug-mono-symfile.c: Set version number to 21.
28569
28570 2002-09-18  Dick Porter  <dick@ximian.com>
28571
28572         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28573         on netbsd.  Fixes bug 30051.
28574
28575 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28576
28577         * reflection.c:
28578         (set_version_from_string): little fix.
28579
28580 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28581
28582         * monosn.c, Makefile.am: added strong name utility.
28583         * reflection.h, reflection.c: implemented delayed signing,
28584         locale, version and hash id assembly attributes.
28585
28586 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28587
28588         * loader.c, metadata.c: load param attributes in signatures.
28589
28590 2002-09-16  Martin Baulig  <martin@gnome.org>
28591
28592         * debug-mono-symfile.c: Added string table with all method names.
28593
28594 2002-09-14  Martin Baulig  <martin@gnome.org>
28595
28596         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28597         fast method lookup.
28598
28599 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28600
28601         * reflection.c: record the public key token of referenced assemblies.
28602
28603 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28604
28605         * image.c, image.h: added functions to get the strong name and the
28606         public key of an assembly.
28607         * pedump.c: use them.
28608
28609 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28610
28611         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28612
28613 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28614
28615         * marshal.c (mono_marshal_get_managed_wrapper): Added
28616         MONO_TYPE_BOOLEAN 
28617
28618 2002-09-11  Martin Baulig  <martin@gnome.org>
28619
28620         * gc.c: Call GC_unregister_disappearing_link() on all links when
28621         finalizing them, this is necessary to aviod a crash in boehm's
28622         finalize handler.
28623
28624 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28625
28626         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28627         nick@chemlab.org.
28628
28629 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28630
28631         * icall.c: implemented MonoType::Module.
28632         * reflection.c, reflection.h: mono_module_get_object () from
28633         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28634
28635 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28636
28637         * icall.c: ignore overridden methods in GetMethods ().
28638         Fix for FieldInfo::SetValue().
28639         * object.c: handle float/double in runtime invoke.
28640
28641 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28642
28643         * object.c: allow a constructor to be called again on an object.
28644
28645 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28646
28647         * class.h, class.c: move field layout code to it's own function and
28648         export it. Get an interface id earlier. Move fields in MonoClass
28649         so they are more cache friendly and align the bitfields.
28650         * loader.c: temporary handle get_param_names() for a runtime method.
28651         * reflection.c, reflection.h: more code to handle runtime creation of
28652         types.
28653
28654 2002-09-09  Martin Baulig  <martin@gnome.org>
28655
28656         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28657         signature with the pinvoke field being set for the actual call.
28658
28659 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28660
28661         * icall.c: removed some unused icalls. Start of map of glib charsets
28662         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28663
28664 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28665
28666         * debug-helpers.c: break infinite loop (found and fixed by
28667         Holger Arnold <harnold@gmx.de>).
28668
28669 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28670
28671         * icall.c: target may be null in create_delegate.
28672
28673 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28674
28675         * marshal.c: handle a boolean return type.
28676
28677 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28678
28679         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28680
28681 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28682
28683         * gc.c: fix weakreferences.
28684
28685 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28686
28687         * icall.c: added icall to get default codepage.
28688
28689 2002-09-03  Dick Porter  <dick@ximian.com>
28690
28691         * threads.h: 
28692         * threads.c: Use MonoThread instead of MonoObject where
28693         apropriate.
28694
28695         Store running thread objects in a hash table, so that we have all
28696         the info to hand when waiting for them to finish
28697         (means we don't need OpenThread() any more, so mingw builds should
28698         be fully functional again.)
28699
28700         * verify.c:
28701         * object.h: Added thread ID to MonoThread
28702
28703 2002-09-03  Martin Baulig  <martin@gnome.org>
28704
28705         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28706
28707 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28708
28709         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28710
28711 2002-09-03  Martin Baulig  <martin@gnome.org>
28712
28713         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28714         argument to store the end address of the disassembled instruction.
28715
28716         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28717         here from debug-symfile.h.
28718         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28719         JIT into this struct.
28720         (MonoSymbolFile): Added `char *image_file' field.
28721         (MonoDebugGetMethodFunc): Removed.
28722         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28723         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28724         (mono_debug_find_method): New method.
28725
28726         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28727         create a full symbol file.
28728         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28729         and static symbol files.
28730         (mono_debug_find_method): The symbol file keeps an internal method hash,
28731         call this to get a MonoDebugMethodInfo from a MonoMethod.
28732
28733         * debug-symfile.[ch]: Removed.
28734
28735 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28736
28737         * image.c (do_mono_image_open): Remove linker version check.
28738
28739 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28740
28741         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28742         wrappers for instance methods.
28743         
28744 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28745
28746         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28747
28748 2002-08-28  Dick Porter  <dick@ximian.com>
28749
28750         * Makefile.am: Export HOST_CC for w32 builds
28751
28752 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28753
28754         * file-io.c process.c: MonoString are null terminated, no
28755         need for mono_string_to_utf16() anymore.
28756
28757 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28758
28759         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28760
28761 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28762
28763         * icall.c, reflection.h: speedup System.MonoType.
28764
28765 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28766
28767         * reflection.c: allow null as the value of a string argument in
28768         custom attributes constructors.
28769
28770 2002-08-27  Martin Baulig  <martin@gnome.org>
28771
28772         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28773         `trampoline_address' field.
28774
28775 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28776
28777         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28778         check (fixes bug #29486) 
28779
28780 2002-08-27  Martin Baulig  <martin@gnome.org>
28781
28782         * debug-mono-symfile.c: Changed the file format in a way that allows us
28783         open it read-only and to use a specially malloced area for all the
28784         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28785         debugging IL code and there is no MCS generated symbol file for it.
28786
28787 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28788
28789         * object.c: added a define for a good string and array
28790         creation speedup (not enabled by default because we need to deal with
28791         the synch stuff).
28792
28793 2002-08-26  Martin Baulig  <martin@gnome.org>
28794
28795         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28796         function to create a dynamic symbol file.  This is used by the
28797         debugger to create a symbol file for IL code on-the-fly.
28798
28799 2002-08-26  Martin Baulig  <martin@gnome.org>
28800
28801         * loader.c (mono_lookup_pinvoke_call): Include the error message
28802         from g_module_error() in the error message.
28803
28804 2002-08-24  Martin Baulig  <martin@gnome.org>
28805
28806         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28807         function to update the symbol file.  The symbol file is mmap()ed
28808         writable, but private.  This allows us to install the symbol file
28809         together with the assembly.
28810
28811 2002-08-24  Martin Baulig  <martin@gnome.org>
28812
28813         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28814         but they can read the new symbol file format which mcs is now creating.
28815
28816         * debug-symfile.c (mono_debug_find_source_location): Moved to
28817         debug-mono-symfile.c; this is now operating on the new symbol file.
28818
28819 2002-08-23  Martin Baulig  <martin@gnome.org>
28820
28821         * debug-helpers.c (mono_method_desc_from_method): New function to get
28822         a MonoMethodDesc from a MonoMethod.
28823
28824 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28825
28826         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28827         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28828
28829 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28830
28831         * string-icalls.[ch]: make helper methods static.
28832
28833 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28834
28835         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28836         types to it and to SetValueInternal.
28837
28838         * object.c: Moved handle_enum label to its proper place. This was the
28839         f... bug! ;-)
28840
28841         This time i compiled mcs and gtk-sharp and they both work.
28842
28843 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28844
28845         * icall.c: reverted partially my previous patch until 
28846         object.c:set_value handles enums correcly.
28847
28848 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28849
28850         * icall.c:
28851         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28852         (ves_icall_System_Environment_get_MachineName): removed warning when
28853         compiling under cygwin.
28854
28855 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28856
28857         * object.c: fixed field_get_value() for reference types.
28858
28859 2002-08-22  Dick Porter  <dick@ximian.com>
28860
28861         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28862         Don't free a buffer while it's still needed.  Patch from Jonathan
28863         Liger <Jonathan.liger@wanadoo.fr>
28864
28865 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28866
28867         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28868         internal call.
28869
28870 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28871
28872         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28873         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28874
28875         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28876         we call unmanaged code which throws exceptions.
28877
28878 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28879
28880         * appdomain.h: added per-domain entry_assembly.
28881         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28882         arguments.
28883         * icall.c: Assembly::GetEntryAssembly icall.
28884         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28885         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28886
28887 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28888
28889         * appdomain.h, gc.c: added mono_domain_finalize ().
28890
28891 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28892
28893         * object.c:
28894         (mono_print_unhandled_exception): changed g_warning by g_printerr
28895         because g_log has a 1024 characters limit (yeah, i got a big stack
28896         trace). Don't print exception name, that should be in ToString 
28897         returned string.
28898
28899 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28900
28901         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28902         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28903
28904 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28905
28906         * object.c:
28907         (mono_print_unhandled_exception): after previous commit, i realized
28908         that MS calls ToString on the exception. I changed this function to
28909         do that. This way we get stack_trace for free.
28910
28911 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28912
28913         * object.c:
28914         (mono_print_unhandled_exception): invoke Message property instead of
28915         getting 'message' field from Exception. Don't allocate memory for
28916         'trace' and 'message' if not needed.
28917
28918 2002-08-18  Dick Porter  <dick@ximian.com>
28919
28920         * unicode.c: Fix asserts to match Encoder.cs checks
28921
28922 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28923
28924         * marshal.c: fix unaligned store issue and a few wrong
28925         opcode argument types.
28926
28927 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28928
28929         * icall.c: added GetUninitializedObjectInternal internal call.
28930
28931 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28932
28933         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28934         to the right domain.
28935
28936 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28937
28938         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28939
28940         * class.c (class_compute_field_layout): set blittable to false for Strings
28941
28942         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28943
28944 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28945
28946         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28947         first chunk of code to create types at runtime. Code to
28948         handle ReflectedType/DeclaringType. Make reflection handles
28949         domain specific.
28950
28951 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28952
28953         * class.c: set correct name in arrays.
28954
28955 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28956
28957         * appdomain.c (mono_domain_transfer_object): make it work with
28958         valuetypes. bug fixes.
28959
28960 2002-08-12  Dick Porter  <dick@ximian.com>
28961
28962         * object.h: Rename some parameters to avoid c++ keywords (Patch
28963         from Joseph Wenninger <kde@jowenn.at>)
28964
28965 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28966
28967         * icall.c: added icall to implement Assembly.GetFile*.
28968
28969 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28970
28971         * reflection.h, reflection.c: code to embed managed resources.
28972
28973 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28974
28975         * class.c: move all the type size stuff into
28976         class_compute_field_layout().
28977
28978 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28979
28980         * class.c: ensure enums have always the correct instance size.
28981         * unicode.c: remove wrong assert.
28982
28983 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28984
28985         * assembly.c: fix mem corruption issue.
28986         * image.h, image.c: added mono_image_get_resource () to access
28987         managed resources.
28988         * icall.c: implemented Assembly.EntryPoint property and some
28989         Managed Resources related internalcalls.
28990
28991
28992 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28993
28994         * image.c, image.h: impemented mono_image_get_entry_point ().
28995         * appdomain.c: use mono_image_get_entry_point.
28996
28997 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28998
28999         * reflection.c: support the object type argument when loading
29000         custom attributes.
29001
29002 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
29003
29004         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
29005         String as return type.
29006
29007 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
29008
29009         * reflection.c: fix encoding of named args for custom attrs to match
29010         the ms implementation. Read them back when instantiating custom
29011         attributes.
29012
29013 2002-08-02  Radek Doulik  <rodo@ximian.com>
29014
29015         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
29016         by Dietmar as quick fix
29017         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
29018         16 as stack size, used on more places as quick fix before Dietmar
29019         will fix it properly
29020
29021 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
29022
29023         * object.h, object.c: added accessors for fields and properties.
29024
29025 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
29026
29027         * class.c, class.h: made mono_class_get_field_from_name ()
29028         loop on parent types.
29029         Added mono_class_get_property_from_name ().
29030
29031 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29032
29033         * class.c, class.h: move the code to setup the type vtable in its own
29034         function so that it can be reused also for types created at runtime.
29035         Eliminate the "class" identifier from the header file.
29036         * reflection.c: setup the vtable for enums so that we can create
29037         objects for use in SetConstant ().
29038
29039 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
29040
29041         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
29042         instead of the delegate itself as this pointer (bug #28383)
29043
29044 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
29045
29046         * marshal.c (mono_marshal_get_managed_wrapper): added return type
29047         conversions.
29048
29049 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29050
29051         * loader.c: don't set the pinvoke bit on icalls.
29052
29053 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
29054
29055         * debug-helpers.c (mono_method_full_name): only print a number to
29056         indicate wrapper type (so that the output is more readable in traces).
29057
29058 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
29059
29060         * class.c (mono_class_init): include method override patch from Paolo
29061
29062 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
29063
29064         * icall.c: fixed GetTypeCode().
29065
29066 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
29067
29068         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
29069         use real delegate invoke function to make it work with multicast
29070         delegates (fix bug# 28291).
29071
29072 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29073
29074         * object.c: load constant strings.
29075
29076 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29077
29078         * reflection.c: no magic numbers.
29079         * tabledefs.h: security action enum.
29080
29081 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29082
29083         * assembly.c: fix possible memory corruption.
29084
29085 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29086
29087         * reflection.h, reflection.c: added support for linking resources.
29088         * verify.c: check we have an updated corlib.
29089
29090 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
29091
29092         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
29093         string arrays.
29094         (mono_marshal_string_array): null terminate unmanaged string arrays.
29095         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
29096
29097 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29098
29099         * icall.c: Type.GetType () can now return also types from the
29100         calling assembly.
29101
29102 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29103
29104         * loader.h, loader.c: stack walking support.
29105         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
29106         GetCallingAssembly.
29107
29108 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
29109
29110         * marshal.c: added optimisations for blittable types 
29111
29112         * class.c (mono_array_class_get): do not set blittable attribute on arrays
29113         (mono_class_setup_mono_type): set blittable attribute for single
29114         and double.
29115
29116         * marshal.c (mono_string_utf8_to_builder): impl.
29117         (mono_string_builder_to_utf8): impl.
29118         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
29119
29120 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
29121
29122         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
29123         (mono_marshal_get_managed_wrapper): impl. byref types
29124
29125 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29126
29127         * icall.c:
29128         (search_method): don't display debug message. 
29129
29130 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29131
29132         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
29133
29134 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29135
29136         * appdomain.c: set the missing filename when throwing exception.
29137
29138 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29139
29140         * metadata.c (mono_type_size): code cleanup
29141         (mono_type_stack_size): removed some test code
29142
29143 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
29144
29145         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
29146         mono_get_exception_file_not_found now.
29147
29148         * exception.c (mono_exception_from_name_two_strings): New version
29149         that will call a constructor with two string arguments. 
29150         (mono_get_exception_file_not_found): New helper routine, used to
29151         report file-not-found errors.
29152
29153 2002-07-20  Dick Porter  <dick@ximian.com>
29154
29155         * process.h:
29156         * process.c: Pass file handles to CreateProcess
29157         
29158         * icall.c:
29159         * file-io.h:
29160         * file-io.c: Implemented CreatePipe
29161
29162 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29163
29164         * metadata.c (mono_get_param_info): set alignment for value types
29165
29166 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29167
29168         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
29169         Constify mono_domain_assembly_open().
29170         * loader.c: handle null namespace in icalls.
29171
29172 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29173
29174         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
29175         (emit_str_to_ptr_conv): marshal object as structs
29176
29177         * metadata.c (mono_type_to_unmanaged): marshal object as structs
29178
29179         * marshal.c (mono_marshal_get_runtime_invoke): support value types
29180
29181 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
29182
29183         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
29184         (mono_marshal_get_native_wrapper): we an now return value types
29185
29186 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29187
29188         * verify.c: more checks implemented.
29189
29190 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
29191
29192         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
29193         (fix bug #27695)
29194         (mono_marshal_get_native_wrapper): allow byref arguments
29195         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
29196         impl. PtrToStringXXX methods
29197         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
29198         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
29199         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
29200         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
29201         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
29202
29203 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29204
29205         * reflection.c: fix buglet in parsing an assembly name.
29206
29207 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29208
29209         * marshal.c (emit_ptr_to_str_conv): first impl.
29210
29211 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29212
29213         * object.c, class.h: cache the vtable in the class as suggested by
29214         vargaz@freemail.hu (Zoltan Varga).
29215
29216 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29217
29218         * class.h, loader.c: added mono_field_from_token().
29219         * verify.c: first cut of type checking code.
29220
29221 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29222
29223         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
29224
29225 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
29226
29227         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
29228         (fix bug #27782)
29229         (mono_marshal_get_remoting_invoke): impl.
29230         (mono_delegate_begin_invoke): impl.
29231         (mono_mb_emit_save_args): impl.
29232         (mono_delegate_end_invoke): impl.
29233         (mono_marshal_get_delegate_begin_invoke):
29234         (mono_marshal_get_delegate_end_invoke):
29235         (mono_marshal_get_delegate_invoke): generate a special name for
29236         those methods (including the signature) and associate them whith
29237         the delegate class. 
29238
29239 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
29240
29241         * reflection.[ch]: 
29242         (mono_reflection_type_from_name): now it has a MonoImage parameter
29243         which is used as the default image to search the type in. If the image
29244         is NULL or getting the type from it fails, it defaults to corlib.
29245
29246         * icall.c: changed 1 call to mono_reflection_type_from_name to match
29247         new parameter.
29248
29249 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29250
29251         * reflection.c: update the parameter table index.
29252
29253 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29254
29255         * domain.c: don't include the mark byte in the string hash.
29256
29257 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29258
29259         * icall.cs: icall for Type.GetTypeCode ().
29260         * verify: a couple of fixes and disabled local initialization checks.
29261
29262 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29263
29264         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29265
29266         * debug-helpers.c (mono_method_full_name): print the type of the
29267         runtime wrapper
29268
29269         * metadata.c (mono_signature_hash): a hash function for signatures
29270         (mono_signature_hash): better hash algorithm
29271
29272         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29273
29274         * debug-helpers.c (mono_method_full_name): this can now generate
29275         method names with signatures
29276
29277         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29278         method dont have this pointers.
29279
29280 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29281
29282         * reflection.c: fixup typebuilder tokens.
29283         * image.c: fix buglet.
29284         * marshal.h: remove whitespace.
29285         * metadata.h, metadata.c: reinstate code that was removed.
29286         * verify.c: handle catch directives and fix another couple of bugs.
29287
29288 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29289
29290         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29291         (mono_marshal_get_native_wrapper): make it comp. with the old code
29292         (mono_marshal_get_native_wrapper): support boolean
29293         (mono_marshal_get_managed_wrapper): support more types
29294
29295 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29296
29297         * class.c (class_compute_field_layout): compute class->blittable attribute.
29298
29299 2002-07-09  Dick Porter  <dick@ximian.com>
29300
29301         * threads.c: Make the thread cleaning up cope with threads that
29302         call ExitThread()
29303
29304 2002-07-08  Radek Doulik  <rodo@ximian.com>
29305
29306         * reflection.c (method_encode_code): use non-translated values to
29307         compute finally_start, this fixes exception handling on ppc, yay!
29308
29309         * decimal.h (struct signscale): fix endianess
29310
29311 2002-07-07  Radek Doulik  <rodo@ximian.com>
29312
29313         * reflection.c: swap box_val and not val
29314
29315 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29316
29317         * reflection.c, reflection.h: handle full assembly info in type name.
29318         Handle Type arguments when loading custom attributes.
29319         * icall.c: updated to use new mono_reflection_type_from_name () method.
29320
29321 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29322
29323         * loader.c:
29324         (method_from_memberref): also print assembly name when method not found.
29325
29326 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29327
29328         * icall.c:
29329         (ves_icall_TypeGetProperties): fixed bug #27473. 
29330
29331 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29332
29333         * reflection.c: display image name and token when cannot find the
29334         .ctor for an attribute.
29335
29336 2002-07-05  Martin Baulig  <martin@gnome.org>
29337
29338         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29339
29340 2002-07-04  Dick Porter  <dick@ximian.com>
29341
29342         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29343         compile on mingw.  This will cause mingw builds to not wait for
29344         subthreads to terminate after the main thread does.  I've lodged a
29345         bug with the mingw developers for them to wrap OpenThread().
29346
29347 2002-07-03  Dick Porter  <dick@ximian.com>
29348
29349         * threads.c: Store thread IDs instead of handles, because
29350         GetCurrentThread() returns a pseudohandle and therefore stores
29351         useless values.  mono_thread_cleanup() continues checking the
29352         array of threads until it is empty, to cope with subthreads
29353         spawning new threads after the main thread has finished.
29354
29355         * profiler.h:
29356         * profiler.c:
29357         * profiler-private.h: Pass the thread ID to thread profiler
29358         functions, instead of a handle
29359
29360 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29361
29362         * verify.c: fixes to make it more usable.
29363         * pedump.c: added --verify code to verify IL code in an assembly.
29364
29365 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29366
29367         * reflection.c: turn errors into warnings to allow compiling corlib.
29368
29369 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29370
29371         * reflection.c: add special cases to compile corlib.
29372
29373 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29374
29375         * reflection.c: handle properties with only a set method.
29376
29377 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29378
29379         * opcodes.h: add enum with opcodes in opval order.
29380
29381 2002-07-01  Dick Porter  <dick@ximian.com>
29382         
29383         * object.h:
29384         * object.c (mono_runtime_run_main): Removed unneeded argument
29385
29386 2002-06-28  Martin Baulig  <martin@gnome.org>
29387
29388         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29389
29390 2002-06-27  Dick Porter  <dick@ximian.com>
29391
29392         * threads.c: Store the handle in both the parent thread and in the
29393         subthread, to minimise the time between starting a new thread and
29394         storing its ID.
29395
29396 2002-06-26  Dick Porter  <dick@ximian.com>
29397
29398         * appdomain.c (mono_runtime_cleanup): Close the socket library
29399         after all the threads have finished, not before
29400
29401 2002-06-26  Martin Baulig  <martin@gnome.org>
29402
29403         * debug-symfile.c (mono_debug_find_source_location): Added
29404         `guint32 *line_number' argument.  If it's not NULL, store the line number
29405         there and return the file name without the line number.
29406
29407 2002-06-25  Dick Porter  <dick@ximian.com>
29408
29409         * icall.c:
29410         * process.h:
29411         * process.c: Process forking and other support functions
29412
29413 2002-06-25  Dick Porter  <dick@ximian.com>
29414
29415         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29416         things dont happen when the image is closed.
29417         (mono_image_lookup_resource): Walk the resource section looking
29418         for a particular entry
29419
29420         * cil-coff.h: PE resource section decoding
29421
29422 2002-06-25  Dick Porter  <dick@ximian.com>
29423         
29424         * assembly.h:
29425         * assembly.c: 
29426         (mono_assembly_foreach): Accessor functions to walk the list of
29427         loaded assemblies
29428         (mono_assembly_set_main):
29429         (mono_assembly_get_main): Process methods need to know which
29430         assembly is the "main" one
29431
29432         * object.c (mono_runtime_run_main): Record the main assembly
29433
29434         * debug-helpers.c: Fix typo
29435
29436 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29437
29438         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29439         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29440
29441 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29442
29443         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29444
29445 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29446
29447         * image.c (do_mono_image_open): Initialize reference count,
29448         otherwise we leak the MonoImage.
29449
29450 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29451
29452         * reflection.c: small tweak to handle self-hosting.
29453
29454 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29455
29456         * reflection.c: fix type name parse code.
29457
29458 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29459
29460         * reflection.c: break out of the loop.
29461         * image.c: special case corlib.
29462
29463 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29464
29465         * reflection.c: add all the custom attrs at the end to ensure the
29466         ctors have been properly initialized when the attributes are defined
29467         in the current assembly.
29468
29469 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29470
29471         * reflection.c: handle correctly multiple-nested types.
29472
29473 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29474
29475         * row-indexes.h: fix typos.
29476         * reflection.c: adjust for typos and fix method_def_or_ref
29477         encoding in MethodImpl table.
29478
29479 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29480
29481         * reflection.c: fix entry point patching (thanks Serge!).
29482
29483 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29484
29485         * verify.c: add check for System.Exception
29486
29487 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29488
29489         * image.c, class.c: minifix for code just c&p'ed.
29490         * reflection.c: warning fix.
29491         * object.h, loader.h, domain.c: load also StringBuilder.
29492
29493 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29494
29495         * marshal.h, marshal.c: some support code to handle complex marshaling.
29496
29497 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29498
29499         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29500         Better signatures with vtable error dump.
29501
29502 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29503
29504         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29505
29506 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29507
29508         * icall.c (ves_icall_Type_GetField): impl.
29509
29510 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29511
29512         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29513         to retrieve a marshal description blob for a field or param.
29514
29515 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29516
29517         * reflection.h, reflection.c: change order of nested type emission
29518         to avoid table corruption. The NestedTypes table is sorted.
29519         * icall.c: change order of GetConstructor results to workaround mcs bug.
29520
29521 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29522
29523         * reflection.h, reflection.c: handle field and param marshal
29524         information.
29525
29526 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29527
29528         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29529
29530 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29531
29532         * reflection.c: fix call convention.
29533
29534 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29535
29536         * reflection.h, reflection.c: mono_image_get_memberref_token()
29537         takes a type instead of a class, now. Added
29538         mono_image_get_array_token() to create tokens for the special
29539         multi-dim array methods.
29540
29541 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29542
29543         * assembly.c: handle modules (no assembly table). Split
29544         loading references in its own function.
29545         * class.c: handle moduleref resolution scope.
29546         * image.c, image.h: cache module name in image.
29547
29548 2002-06-07  Martin Baulig  <martin@gnome.org>
29549
29550         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29551         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29552
29553 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29554
29555         * icall.c: more signature fixes that used uint instead of int.
29556
29557 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29558
29559         * reflection.c: fixed signature of field refs.
29560
29561 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29562
29563         * class.c, reflection.c: handle typerefs of nested types
29564         (both on read and when writing files).
29565
29566 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29567
29568         * icall.c: fix method signatures that tried to workaround the previous
29569         typo, d'oh!
29570
29571 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29572
29573         * debug-helpers.c: fix typo.
29574
29575 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29576
29577         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29578         rewrote the PE/COFF writing code (our programs are understood by the
29579         ms runtime, now).
29580
29581 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29582
29583         * gc.c, gc.h, icall.c: weakreference support.
29584
29585 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29586
29587         * Makefile.am, mono-config.c: use $(sysconfdir).
29588
29589 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29590
29591         * icall.c: changed default precision of Double.ToString() to 15.
29592         Fixed memory leak. Unified with Single.ToString.
29593
29594 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29595
29596         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29597
29598 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29599
29600         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29601         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29602         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29603         and myself.
29604
29605 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29606
29607         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29608
29609 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29610
29611         * reflection.c, socket-io.c: more compilation fixes.
29612
29613 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29614
29615         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29616         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29617         unicode.c: warning and compiler compatibility fixes.
29618
29619 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29620
29621         * class.h, metadata.c: fixed warnings/compilation errors.
29622
29623 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29624
29625         * Makefile.am, mono-config.c, mono-config.h: configuration file
29626         support routines.
29627         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29628         config file. Export methods to insert and lookup mappings.
29629
29630 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29631
29632         * reflection.c: handle types and boxed objects in custom attr
29633         constructors.
29634
29635 2002-05-30  Martin Baulig  <martin@gnome.org>
29636
29637         * debug-symfile.c
29638         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29639
29640 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29641
29642         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29643         to lookup the implmap row for a P/Invoke method.
29644         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29645         P/Invoke method from the runtime on an as needed basis.
29646
29647 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29648
29649         * metadata.c (mono_metadata_parse_signature): impl.
29650
29651 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29652
29653         * class.c: handle .pack directive.
29654
29655 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29656
29657         * object.c: initialize static fields with RVA data.
29658
29659 2002-05-25  Martin Baulig  <martin@gnome.org>
29660
29661         * debug-symfile.c
29662         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29663
29664 2002-05-24  Martin Baulig  <martin@gnome.org>
29665
29666         * debug-symfile.c
29667         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29668         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29669         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29670
29671 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29672
29673         * object.c: special case string ctros in invoke.
29674         * gc.c: silly whitespace changes.
29675
29676 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29677
29678         * threadpool.[ch]: impl. a threadpool that can
29679         be used by mint and mono.
29680
29681 2002-05-22  Martin Baulig  <martin@gnome.org>
29682
29683         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29684         The first argument is now a `MonoReflectionModuleBuilder *', the return
29685         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29686         `methods' field to get the method builder.  The `token' argument is the
29687         unfixed token.
29688
29689         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29690         invalid characters instead of g_assert_not_reached()ing.  This seems
29691         to be the behaviour of mscorlib.
29692
29693 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29694
29695         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29696         Hestilow to fix bug #25104
29697
29698 2002-05-21  Martin Baulig  <martin@gnome.org>
29699
29700         * debug-symfile.c (mono_debug_find_source_location): New function.
29701         Looks up an IL offset in the line number table and returns the source
29702         location as a string.
29703
29704 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29705
29706         * icall.c:
29707         (mono_double_ToStringImpl): changed %f by %g until we have something
29708         better.
29709
29710 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29711
29712         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29713         parameters first in C#.
29714
29715 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29716
29717         * icall.c, reflection.h: added icall to get info about an event.
29718
29719 2002-05-20  Radek Doulik  <rodo@ximian.com>
29720
29721         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29722         endian
29723         (mono_value_box): don't use memcpy for small sizes on
29724         architectures with unaligned access
29725
29726 2002-05-20  Martin Baulig  <martin@gnome.org>
29727
29728         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29729         if `tb->parent == NULL'.
29730         (mono_reflection_create_internal_class): New function.  This is
29731         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29732         for enum types.
29733
29734         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29735         New interncall.
29736
29737 2002-05-19  Martin Baulig  <martin@gnome.org>
29738
29739         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29740         argument to get the length, don't default to the array length.
29741
29742 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29743
29744         * assembly.c (mono_assembly_setrootdir): New function used to
29745         override the MONO_ASSEMBLIES directory.
29746
29747 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29748
29749         * icall.c: ValueType_GetHashCode() initialize local var.
29750
29751 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29752
29753         * reflection.c: sort custom attributes table.
29754
29755 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29756
29757         * reflection.c: support named args in custom attributes (write support).
29758
29759 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29760
29761         * reflection.c: fix finally position calculation.
29762
29763 2002-05-15  Radek Doulik  <rodo@ximian.com>
29764
29765         * reflection.c: fixed endianess at many places
29766
29767         * icall.c (ves_icall_InitializeArray): comment out debug msg
29768
29769 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29770
29771         * object.c (mono_unhandled_exception): new function to handle
29772         unhandled exceptions.
29773         (mono_unhandled_exception): call the UnhandledException event.
29774         (mono_runtime_delegate_invoke): impl.
29775
29776 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29777
29778         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29779         returns the RVA, not the direct pointer to the data. Handle the case
29780         when the class size is fixed.
29781
29782 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29783
29784         * reflection.c: fix some endianess issues.
29785
29786 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29787
29788         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29789
29790         * threads.c (mono_thread_init): added a callback which is invoked
29791         at thread start.
29792
29793 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29794         
29795         * icall.c: make GetHashCode return non-negative values.
29796
29797 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29798
29799         * object.c, icall.c, gc.c: revert to address-based hashcode.
29800
29801 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29802
29803         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29804
29805 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29806
29807         * icall.c, class.c: special case <Module>.
29808
29809 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29810
29811         * icall.c: fix bug in GetNow().
29812
29813 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29814
29815         * object.c (mono_runtime_class_init): make sure that we call all
29816         static class constructors.
29817
29818 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29819
29820         * reflection.c: sort methodsemantics table.
29821
29822 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29823
29824         * reflection.h, reflection.c: honour init locals setting.
29825
29826 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29827
29828         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29829
29830 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29831
29832         * reflection.c: support ContructorBuilders in attribute blob creation.
29833
29834 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29835
29836         * reflection.c: some changes to build a binary that can be run
29837         directly in windows.
29838
29839 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29840
29841         * loader.c: print a big message when an icall can't be found.
29842
29843 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29844
29845         * string-icalls.c: fix bug 24248.
29846
29847 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29848
29849         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29850         icall.c, reflection.h: separate assembly loading by pathname and by
29851         assembly name. Use the MONO_PATH env var to search for assemblies.
29852
29853 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29854
29855         * assembly.c, image.h: add some support for assemblies
29856         with multiple modules.
29857         * class.c, class.h: export mono_class_from_typeref().
29858         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29859         instead.
29860
29861 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29862
29863         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29864         documentation says (the ECMA one is correct).
29865
29866 2002-05-02  Dick Porter  <dick@ximian.com>
29867
29868         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29869         Don't name the synchronisation mutex.
29870
29871 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29872
29873         * rand.c
29874         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29875         Make the prototypes match.
29876         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29877         Same.
29878
29879         * icall.c
29880         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29881         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29882         all systems have tm.tm_zone, so use strftime() with %Z to print
29883         the timezone abreviation into a temp string.
29884
29885         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29886         rather than mono_array_addr() on a MonoString on Big Endian
29887         machines.
29888
29889 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29890
29891         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29892         fix bug 24041
29893
29894 2002-04-30  Dick Porter  <dick@ximian.com>
29895
29896         * socket-io.c: Cope with SOCKET being an integer rather than a
29897         pointer now.
29898
29899         * threads.c: Added Thread_free_internal, to deal with thread
29900         handle cleanup.  Moved calls to handle_store() and handle_remove()
29901         to start_wrapper(), so each can only be called once.  Allocate
29902         synchronisation blocks with GC_malloc(), and use GC finalisation
29903         to close the handles.
29904
29905         * icall.c: added System.Threading.Thread::Thread_free_internal
29906
29907 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29908
29909         * icall.c: support Environment.Exit, CommandLineArgs().
29910
29911 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29912
29913         * object.c, object.h: added mono_runtime_run_main () and
29914         mono_runtime_get_main_args () for use in System.Environment.
29915
29916 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29917
29918         * gc.c: fix thinko, enable actual finalization since the jit is now
29919         fixed.
29920
29921 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29922
29923         * gc.c, object.c: take into account that an object may be offset wrt the address
29924         returned by GC_malloc().
29925
29926 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29927
29928         * image.c: handle files without entries in the assembly table (modules).
29929
29930 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29931
29932         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29933         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29934         allowed to be null when it's System.Object class setup.
29935
29936 2002-04-27  Martin Baulig  <martin@gnome.org>
29937
29938         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29939         if `tb->parent == NULL' rather than crashing.
29940
29941 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29942
29943         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29944         calling acos() where asin() should have been called.
29945
29946 2002-04-26  Martin Baulig  <martin@gnome.org>
29947
29948         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29949         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29950         there's a subdirectory called `System', but we don't want to read that
29951         subdirectory as an assembly.
29952
29953 2002-04-25  Martin Baulig  <martin@gnome.org>
29954
29955         * debug-symfile.c: Reflect latest MonoString changes.
29956
29957 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29958
29959         * rand.c, rand.h: instance method icalls need to have an explicit
29960         this pointer as first argument in the C implementation.
29961
29962 2002-04-25  Nick Drochak <ndrochak@gol.com>
29963
29964         * icall.c: Fix typo in map for GetNonZeroBytes
29965
29966 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29967
29968         * string-icalls.c : String does now passes unit tests without any 
29969         errors, the following changes has been made:
29970         
29971         Implemented replace methods.
29972         Renaming of methods to (try) follow the standard.
29973         Fixed compare ordinal
29974         Made all memory allocated directly to function instead of via icall function.
29975         Small performance fix in is_in_array function
29976                         
29977  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29978
29979         c (mono_string_Internal_ctor_charp_int_int):
29980         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29981         sindex < 0, throw ArgumentOutOfRangeException instead of
29982         ArgumentNullException.
29983
29984         Added new check for length == 0, however
29985         I need to make it return String.Empty from the C code.
29986         
29987         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29988         that calculate the length for us here.
29989         
29990         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29991         mono_string_new_utf16 with mono_string_new, since value is utf8.
29992
29993 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29994
29995         * object.c: register the object for finalization if needed.
29996         Allocate one more char in the string for the terminating 0 char.
29997
29998 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29999
30000         * class.c, class.h, image.c: check if a type implemenst a destructor.
30001         Use the proper key for array class lookups.
30002         * icall.c: register the icalls in the System.GC class.
30003         * gc.c, gc.h: GC-related functions and icalls.
30004
30005 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30006
30007         * icall.c:
30008         * socket-io.c:
30009         * unicode.c: free some strings gotten from mono_string_to_utf8 and
30010         changed a couple of free () by g_free ().
30011
30012         * decimal.c: one-liner in the comments for decimal2string ().
30013
30014 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30015
30016         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
30017
30018 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
30019
30020         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
30021         * object.c (mono_runtime_invoke_array) : handle null in params
30022
30023 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30024
30025         * string-icalls.c: fixed bug in split (one off bug)
30026
30027 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30028
30029         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
30030         * icalls.c: added String::Equals as internal method
30031
30032 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
30033
30034         * threads.c: fixed bug in the double interlocked functions
30035
30036 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
30037
30038         * threads.c: implemented all of the new interlocked icalls.
30039         * string-icalls.c: fix a bug in insert.
30040         * icalls.c: added the icalls for interlocked, removed old string functions.
30041         
30042 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30043
30044         * loader.c: fix off-by-one error when reading argument names.
30045
30046 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30047
30048         * profiler.c: win32 counter implementation (untested).
30049         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
30050         (the latter needs testing and more complete impl. from win32 folks).
30051
30052 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
30053
30054         * object.c: mono_array_new_full workaround mono_array_class_get
30055         problem.
30056
30057 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30058
30059         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
30060         * object.h (mono_string_chars): Changed casting type.
30061
30062 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30063
30064         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
30065                            method signatures to use gunichar2 instead of gint16.
30066
30067 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
30068
30069         * object.h, object.c: domain-specific versions of mono_object_new and
30070         mono_array_new.
30071
30072 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
30073
30074         * object.c: changed String layout
30075
30076         * string-icalls.c (mono_string_Internal_ctor_chara): added
30077         internal string constructors.
30078
30079 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
30080
30081         * threads.c: pass 'this' to the thread start routine.
30082
30083 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30084
30085         * string-icalls.c: fix IndexOf and LastIndexOf. Now
30086         InternalCompareStr don't call twice mono_string_cmp_char for the last
30087         character. Improved performance in mono_string_cmp_char.
30088
30089 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30090
30091         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
30092         code into its own library: libmonoruntime.
30093
30094 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
30095
30096         * object.h, object.c: changed array format so that szarrays do not
30097         require a bounds structure.
30098         * icall.c, appdomain.c: support for new szarray format.
30099
30100 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
30101
30102         * metadata.c: compare also the retuns type when comparing signatures:
30103         we didn't do this as an optimization since really overloaded methods
30104         must differ also in the arguments, but this doesn't work with
30105         low-level IL code (or when using explicit conversion operators: see
30106         bug#23498 for an example).
30107
30108 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
30109
30110         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
30111
30112 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
30113
30114         * icall.c: make MonoType::GetElementType its own icall.
30115
30116 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
30117
30118         * icall.c: remove MonoMethod_get_Name().
30119         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
30120         object.
30121
30122 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30123
30124         * string-icalls.c: optimized a few methods.
30125
30126 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30127
30128         * icall.c: added all new string internal calls
30129         * string-icalls.c: added, new string internal call implementation.
30130         * object.c: added mono_string_new_size for allocating a string a size
30131
30132 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
30133
30134         * object.c (mono_object_isinst): use the same code as in the
30135         optimized x86 version.
30136
30137 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30138
30139         * profiler.c: TSC-based timer code (faster and more accurate).
30140         Not hooked up in configure, yet (set USE_X86TSC to 1).
30141
30142 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
30143
30144         * profiler.c, profiler.h: track time spent compiling methods.
30145         * threads.c: track thread creation/destruction.
30146
30147 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
30148
30149         * profiler.c, profiler.h, profiler-private.h: profiling interface
30150         and sample implementation. Moved here so that it can be used also by
30151         the jit.
30152
30153 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
30154
30155         * reflection.c, reflection.h: keep types and other handles separate in
30156         the hash tables for referred tokens. Add guid for modules.
30157
30158 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30159
30160         * assembly.c: fix bugs found with valgrind.
30161         * metadata.h, metadata.c: added mono_metadata_guid_heap().
30162
30163 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
30164
30165         * threads: added icall support for getting current domain for
30166                    the thread.
30167  
30168 2002-04-13  Martin Baulig  <martin@gnome.org>
30169
30170         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
30171         (MonoDebugVarInfo): Added `index' field for register based addresses.
30172         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
30173         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
30174         `MonoDebugVarInfo *params' and `guint32 this_offset' with
30175         `MonoDebugVarInfo *this_var'.
30176
30177         * debug-symfile.c (relocate_variable): New static function to write
30178         a location description for a local variable or method parameter.
30179
30180 2002-04-12  Martin Baulig  <martin@gnome.org>
30181
30182         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
30183         stack offset and begin/end scope address of a local variable.
30184         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
30185         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
30186         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
30187
30188         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
30189         Added new relocation types for start/end scope of a local variable.
30190
30191 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30192
30193         * object.h: add mono_object_domain() macro.
30194         * reflection.c: handle typespecs.
30195         * icall.c: MonoMethod::get_Name() implementation.
30196
30197 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30198
30199         * icall.c: String::GetHashCode() icall implementation.
30200
30201 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30202
30203         * icall.c: String::IndexOfAny icall.
30204         * object.c, object.h: make array->max_length more useful.
30205         Intrduced mono_object_class() and mono_string_length() macros.
30206
30207 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30208
30209         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
30210         instead of g_unichar_isdigit.
30211
30212 2002-04-11  Nick Drochak  <ndrochak@gol.com>
30213
30214         * icall.c: Implement a simple Double.ToString().
30215
30216 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30217
30218         * appdomain.h: only io-layer.h is supposed to be included.
30219         * icall.c: explicitly import environ. Fix warning.
30220
30221 2002-04-10  Nick Drochak  <ndrochak@gol.com>
30222
30223         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
30224                 return true even if it's not Daylight Savings time.
30225                 Only return false for the case where the function isn't
30226                 implemented for a plaform (read Windows).
30227
30228 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30229
30230         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
30231         data with a mutex.
30232
30233 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
30234
30235         * mempool.c (mono_mempool_alloc): only use g_malloc when
30236         absolutely necessary.
30237
30238 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30239
30240         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
30241
30242         * class.c (mono_class_vtable): use domain mempool to allocate vtable
30243         (mono_class_proxy_vtable): use domain mempool
30244
30245 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30246
30247         * appdomain.h, appdomain.c: split initialization that requires the
30248         execution engine support into mono_runtime_init().
30249
30250 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30251
30252         * class.c (mono_class_init): don't include vtable inside MonoClass
30253         to save some memory, gather some statistics.
30254         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30255
30256 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30257
30258         * icall.c: internalcall implementation for ValueType.Equals().
30259
30260 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30261
30262         * object.c (mono_message_init): moved 
30263         (mono_runtime_exec_main): new arch. independent impl.
30264         (mono_runtime_invoke_array): new method - like
30265         mono_runtime_invoke, but you can pass an array of objects.
30266         (mono_remoting_invoke): new arch. independent impl.
30267         (mono_message_invoke): new arch. independent impl.
30268         (mono_runtime_class_init): new arch. independent impl.
30269         (mono_runtime_object_init): new arch. independent impl.
30270
30271 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30272
30273         * metadata.c, object.c, reflection.c: documented the exported
30274         functions.
30275
30276 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30277
30278         * icall.c: simpler code to pass the assembly builder data to corlib.
30279         Implement GetNestedTypes() internalcall.
30280
30281 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30282
30283         * class.c: warn if a type can't be loaded.
30284
30285 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30286
30287         * image.h: typedef MonoImageOpenStatus
30288         * types.h: removed unused file
30289         
30290 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30291
30292         * icall.c: Enum_ToObject accepts enum value arguments.
30293
30294 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30295
30296         * class.c: move initialization of properties, events and nested
30297         classes, so that they happen for interfaces, too.
30298
30299 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30300
30301         * icall.c: cleanup some ugly casts in Array_SetValue*.
30302
30303 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30304
30305         * icall.c: the values array fro enums is of the correct type, now.
30306         Implement (correctly) getFullName instead of assQualifiedName for
30307         MonoType.
30308         * reflection.h, reflection.c: added mono_type_get_name ().
30309
30310 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30311
30312         * assembly.c, image.h: for each MonoImage, record from wich assembly
30313         it was loaded.
30314         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30315         Make Type.Assembly work.
30316
30317 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30318
30319         * debug-symfile.h: use char* instead of gpointer to avoid
30320         unnecessary casts.
30321
30322         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30323
30324         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30325         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30326
30327 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30328
30329         * icall.c (mono_message_init): impl. (code cleanup)
30330         (ves_icall_InternalExecute): impl. FieldGetter
30331
30332         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30333         defined we call all (non-static)methods through the vtable. 
30334
30335 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30336
30337         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30338         finalizer even though the memory is still referenced (and the chunk of
30339         memory is not freed).
30340
30341 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30342
30343         * assembly.c: fix brokeness.
30344
30345 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30346
30347         * class.c: kill some warnings. Check explicit interface method
30348         implementation also without considering the namespace.
30349         Load also literal strings in static class data.
30350
30351 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30352
30353         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30354         (default_assembly_name_resolver): Make the resolver take the
30355         "base" directory where the assembly was originally defined, so we
30356         can load DLLs that are in the same directory as the assembly that
30357         is being referenced.
30358
30359 2002-03-28  Dick Porter  <dick@ximian.com>
30360
30361         * file-io.h: 
30362         * file-io.c:
30363         * socket-io.c: 
30364         * unicode.h: 
30365         * unicode.c: Warning cleanups
30366
30367 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30368
30369         * object.h, reflection.h: use the correct type instead of MonoObject.
30370
30371 2002-03-28  Martin Baulig  <martin@gnome.org>
30372
30373         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30374         (mono_debug_update_symbol_file): Initialize classes if necessary.
30375
30376 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30377
30378         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30379         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30380
30381 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30382
30383         * assembly.h: fix function prototype.
30384         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30385         * mono-endian.h: use const cast.
30386
30387 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30388
30389         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30390
30391 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30392
30393         * loader.c: don't assert when a typeref can't be loaded, give
30394         a chance to the runtime to trow an exception instead.
30395         * loader.h: fix warning.
30396
30397 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30398
30399         * class.c (mono_class_proxy_vtable): added proxy support
30400
30401 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30402
30403         * icall.c: removed last of PAL calls, added System.Environment
30404         * file-io.h, file-io.c: MonoIO implementation
30405         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30406
30407 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30408
30409         * appdomain.c: do not use the byte marker in ldstr table lookup.
30410         * debug-helpers.c: allow two ':' to separate class and method name.
30411         * object.c: allocate arrays bounds with the GC, too.
30412         * verify: add a few more checks.
30413
30414 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30415
30416         * reflection.c: output also literal strings. Allocate parameter data
30417         with GC_malloc() (thanks, Martin, for catching this!).
30418
30419 2002-03-26  Martin Baulig  <martin@gnome.org>
30420
30421         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30422         include the `this' offset in the `param_offsets'.
30423
30424 2002-03-25  Martin Baulig  <martin@gnome.org>
30425
30426         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30427         mono_debug_get_class() function to get the classes. Added new
30428         relocation types for arrays and strings.
30429         (mono_debug_get_class): New static function to search in all
30430         referenced assemblies for a metadata token.
30431
30432         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30433
30434 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30435
30436         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30437         hold gc-allocated objects. Make the string heap a stream like the
30438         others. Removed duplicated code when writing stream info.
30439         Added asserts to catch possible buffer overflows. Set the sorted map
30440         for tables that need sorting. Added some documentation.
30441
30442 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30443
30444         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30445         for interned strings and vtables.
30446
30447 2002-03-24  Martin Baulig  <martin@gnome.org>
30448
30449         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30450         it in the array since it was created with g_slist_prepend().
30451
30452 2002-03-24  Martin Baulig  <martin@gnome.org>
30453
30454         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30455         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30456         (mono_debug_method_from_token): Renamed to
30457         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30458         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30459
30460         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30461         relocation types.
30462
30463         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30464
30465 2002-03-24  Martin Baulig  <martin@gnome.org>
30466
30467         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30468         (mono_debug_method_from_token): New func.
30469
30470         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30471         New interncall, calls mono_debug_local_type_from_signature().
30472         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30473         calls mono_debug_method_from_token().
30474
30475 2002-03-23  Martin Baulig  <martin@gnome.org>
30476
30477         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30478         specifies the number of bytes to be converted, not the array size.
30479         Return the number of chars, not the number of bytes.
30480         (ves_icall_iconv_get_chars): The `byteCount' argument
30481         specifies the number of bytes to be converted, not the array size.
30482
30483 2002-03-23  Martin Baulig  <martin@gnome.org>
30484
30485         * reflection.h (MonoReflectionSigHelper): New type.
30486
30487         * reflection.c (mono_reflection_sighelper_get_signature_local),
30488         (mono_reflection_sighelper_get_signature_local): New functions.
30489
30490         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30491         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30492         interncalls.
30493
30494 2002-03-23  Martin Baulig  <martin@gnome.org>
30495
30496         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30497         is_writeable is set.
30498         (mono_raw_buffer_update): New function to write the modified map
30499         back to disk.
30500
30501         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30502
30503         * debug-symfile.c (mono_debug_update_symbol_file): Call
30504         mono_raw_buffer_update() when done writing.
30505
30506 2002-03-23  Martin Baulig  <martin@gnome.org>
30507
30508         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30509
30510         * debug-symfile.c: Added support for arguments and local variables.
30511
30512 2002-03-23  Dick Porter  <dick@ximian.com>
30513
30514         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30515         protected by ifdefs, hence breaking the w32 build.
30516
30517 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30518
30519         * object.c: implement is_interned() the right way.
30520
30521 2002-03-21  Martin Baulig  <martin@gnome.org>
30522
30523         * debug-symfile.[ch]: New files to handle debugging information
30524         files. There's also support to dynamically update these symbol
30525         files to include machine dependent information.
30526
30527 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30528
30529         * threads.c (mono_thread_create): new function to create thread
30530         from C
30531
30532 2002-03-20  Martin Baulig  <martin@gnome.org>
30533
30534         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30535         method is a constructor.
30536         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30537         points to ves_icall_InternalInvoke().
30538
30539 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30540
30541         * file-io.c: Flush shouldn't throw exceptions.
30542
30543 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30544
30545         * file-io.c: FileStream flush support; FileSetLength now
30546         restores file pointer.
30547
30548 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30549
30550         * class.c: set image for pointer classes.
30551
30552 2002/03/19  Nick Drochak <ndrochak@gol.com>
30553
30554         * sysmath.c: Forgot one.
30555
30556 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30557
30558         * sysmath.c: Avoid redefining existing names.
30559
30560 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30561
30562         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30563         handled by runtime as icall rather than dllimport from libm.so
30564         * file-io.c, file-io.h: fixed handle argument type.
30565
30566 2002-03-18  Dick Porter  <dick@ximian.com>
30567
30568         * reflection.c (mono_image_get_type_info): rename interface to
30569         iface, because of "#define interface struct" on windows.
30570
30571 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30572
30573         * class.c, class.h: rename and export mono_ptr_class_get().
30574         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30575         * reflection.c, reflection.h, icall.c: better/saner type name
30576         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30577         method signatures.
30578
30579 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30580
30581         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30582
30583         * icall.c (ves_icall_InternalInvoke): impl.
30584
30585 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30586
30587         * reflection.c: output the interface map table, too.
30588
30589 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30590
30591         * class.c (class_compute_field_layout): separate computation of 
30592         static field layout
30593
30594 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30595
30596         * icall.c: added System.Buffer support.
30597         * file-io.c: moved file icalls from PAL to FileStream.
30598
30599 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30600
30601         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30602
30603 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30604
30605         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30606
30607 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30608
30609         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30610
30611 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30612
30613         * debug-helpers.{c,h}: moved here from monograph some useful functions
30614         to locate a method by name/signature in a class or image. Included
30615         also a small and flexible IL disassembler.
30616
30617 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30618
30619         * reflection.c: fixup tokens in methods with small header size, too.
30620
30621 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30622
30623         * object.c (mono_string_to_utf8): remove assert(!error), instead
30624         print a warning. 
30625
30626 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30627
30628         * icall.c: update to the new mono_Array_class_get interface.
30629
30630 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30631
30632         * appdomain.c, object.c: Boehm-GC enable.
30633         * icall.c: make get_data_chunk() support split data requests.
30634         Ensure a class is initialized in more cases. Return only the first
30635         property found in GetProperties() or the compiler gets confused. 
30636         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30637         * reflection.h, reflection.c: add fixup mechanism for field and method
30638         tokens. Initialize assembly->typeref in a single place. Output
30639         properties after events. Support custom attributes for events, too.
30640         Typo fix for paramter custom attrs.
30641
30642 2002-03-07  Martin Baulig  <martin@gnome.org>
30643
30644         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30645
30646 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30647
30648         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30649
30650 2002-03-06  Martin Baulig  <martin@gnome.org>
30651
30652         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30653         non-zero lower bounds. See testcases #F10-#F13.
30654
30655 2002-03-05  Martin Baulig  <martin@gnome.org>
30656
30657         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30658
30659         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30660         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30661         here.
30662         (ves_icall_System_Array_SetValue): Likewise.
30663         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30664         as argument and does the actual work. This function is used when copying a
30665         multi-dimensional array.
30666         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30667         now do all the widening conversions of value types.
30668         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30669
30670 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30671
30672         * class.c: remove some magic numbers and use the smbolic names,
30673         instead. Added init_events() to load event info at class init time.
30674         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30675         and mono_metadata_methods_from_event().
30676         * reflection.h, reflection.c: added support for writing out the evnets
30677         related information.
30678
30679 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30680
30681         * reflection.h, icall.c: use a different method (GetInterfaces)
30682         to gather interface info and add isbyref, isprimitive and
30683         ispointer to the ves_icall_get_type_info() return value.
30684
30685 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30686
30687         * class.h: stared adding support for events.
30688         * icall.c: split find_members implementation. Added debug icall to get
30689         the address of an object.
30690         * reflection.c: handle TypeBuilders in mono_type_get_object().
30691
30692 2002-03-01  Martin Baulig  <martin@gnome.org>
30693
30694         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30695         ArgumentOutOfRangeException(), not an ArgumentException().
30696         (ves_icall_System_Array_GetLowerBound): Likewise.
30697         (ves_icall_System_Array_GetValue): Improved argument checking.
30698         (ves_icall_System_Array_SetValue): Improved argument checking.
30699
30700 2002-03-01  Martin Baulig  <martin@gnome.org>
30701
30702         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30703         called with invalid arguments rather than just dying with g_assert().
30704         (ves_icall_System_Array_SetValue): Likewise.
30705         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30706         raise a NotImplementedException instead.
30707         (ves_icall_System_Array_GetLength): Added argument checking.
30708         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30709
30710 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30711
30712         * object.h (mono_assert): new macros mono_assert and
30713         mono_assert_not_reached
30714
30715 2002-02-28  Martin Baulig  <martin@gnome.org>
30716
30717         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30718         and "System::String::IsInterned" to "System::String::_IsInterned".
30719
30720 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30721
30722         * icall.c: remove hacks for typebuilder. Added icall to create a
30723         modified type from a tybebuilder.
30724         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30725         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30726         to create a backing MonoClass for a TypeBuilder.
30727
30728 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30729
30730         * class.c, class.h: more refactoring of class init.
30731         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30732
30733 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30734
30735         * marshal.c, marshal.h: start of marshaling interface.
30736
30737 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30738
30739         * icall.c: fix order in assembly qualified name icall.
30740
30741 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30742
30743         * class.c: do not free str, since we store it in the hash table.
30744         * reflection.h: add label field to MonoILExceptionInfo.
30745         * reflection.c: handle references to more than one assembly. Handle
30746         case when there isn't a module created in the assembly.
30747
30748 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30749
30750         * class.c: Fix typo. Start refactoring of class init code.
30751
30752 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30753
30754         * appdomain.c: exit with 1 on error.
30755         * class.c: we already have the name in MonoClassField.
30756         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30757         MonoStreamHeader instead of an offset of image->raw_metadata.
30758
30759 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30760
30761         * appdomain.c (mono_init): Be even more descriptive about the error.
30762
30763 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30764
30765         * appdomain.c: give the user an informative message when corlib can't
30766         be loaded.
30767
30768 2002-02-26  Martin Baulig  <martin@gnome.org>
30769
30770         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30771         New icall to get the time zone data.
30772
30773 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30774
30775         * reflection.c: set virtual and raw size of section correctly.
30776         * threads.c: transfer domain information to newly created threads.
30777
30778 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30779
30780         * class.c: when instancing a class in a domain, load the default
30781         vaules for static fields from the constant table. Fix System.Enum to
30782         not be an enum.
30783         * icall.c: implement Object::GetType() internalcall. Implemented
30784         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30785         Fixed checking of binding flags in find_members().
30786         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30787         * reflection.c: handle enumerations when writing to the constant
30788         table. Use a different object cache for types.
30789
30790
30791 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30792
30793         * object.c (mono_object_isinst): fix for arrays
30794
30795         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30796
30797 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30798
30799         * object.c: don't use mprotect ()  and fix intern pool hash table
30800         lookup for big endian systems.
30801
30802 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30803
30804         * icall.c: change type_is_subtype_of () signature.
30805
30806 2002-02-21  Mark Crichton  <crichton@gimp.org>
30807
30808         * rand.c, rand.h: Added random number generator for
30809         System.Security.Cryptography classes.
30810
30811         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30812
30813         * icall.c: Added System.Security.Cryptography calls.
30814
30815 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30816
30817         * class.c, icall.c, metadata.c: better support for pointer types.
30818         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30819         * reflection.c: Add support for getting custom attrs for properties
30820         and simplify some code.
30821
30822 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30823
30824         * icall.c: change getToken () and add custom attribute GetBlob()helper
30825         method.
30826         * reflection.h: add custom attrs array to the reflection builder structures.
30827         * reflection.c: encode and emit custom attributes for all the relevant
30828         reflection objects. Cache fieldref and methodref tokens. Change
30829         mono_image_create_token() interface to take a MonoDynamicAssembly.
30830         More complete custom attributes decoder. Load custom attributes for
30831         Assembly, Field, Method and Constructor objects, too. Make the
30832         returned array an Attribute[] one, not object[]. Added
30833         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30834         custom attribute constructor.
30835
30836 2002-02-20  Dick Porter  <dick@ximian.com>
30837
30838         * icall.c:
30839         * rawbuffer.c:
30840         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30841         problem code out for now).
30842
30843 2002-02-19  Radek Doulik  <rodo@ximian.com>
30844
30845         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30846
30847 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30848
30849         * icall.c: register the GetCustomAttributes method.
30850         * object.c, object.h: add mono_string_new_len ().
30851         * reflection.h, reflection.c: added mono_runtime_invoke(),
30852         mono_install_runtime_invoke(). Added
30853         mono_reflection_get_custom_attrs () to load custom attributes and
30854         create the attribute objects.
30855
30856 2002-02-19  Dick Porter  <dick@ximian.com>
30857         * threads-dummy-types.c:
30858         * threads-dummy-types.h:
30859         * threads-dummy.c:
30860         * threads-dummy.h:
30861         * threads-pthread-types.c:
30862         * threads-pthread-types.h:
30863         * threads-pthread.c:
30864         * threads-pthread.h:  Deleted obsolete files
30865
30866 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30867
30868         * class.c (mono_class_vtable): runtime init the class when we
30869         allocate static class data.
30870
30871         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30872
30873         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30874         and String - but we will need generic marshalling support in the
30875         future. 
30876         (mono_init): set the domain name in a ms compatible way
30877
30878         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30879         String[].
30880
30881 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30882
30883         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30884         for sizes
30885
30886         * appdomain.c (mono_domain_unload): impl.
30887
30888 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30889
30890         * appdomain.c, object.c: fix intern pool implementation.
30891         * class.c: fix alignment code.
30892
30893 2002-02-16  Radek Doulik  <rodo@ximian.com>
30894
30895         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30896         and s2 > s1, just copy lower bytes to be compatible with little
30897         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30898         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30899
30900         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30901         force big_endian to be 1 for big endian machines 
30902         (ves_icall_iconv_new_decoder): ditto
30903
30904 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30905
30906         * socket-io.c (convert_sockopt_level_and_name): If the system
30907         doesn't define SOL_IP or SOL_TCP, get them by hand using
30908         getprotobyname() and caching the values (because this could be a
30909         slow operation).
30910         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30911         Use the appropriate struct when the system does support it. Ie,
30912         not all systems have struct ip_mreqn so use struct ip_mreq when
30913         appropriate.
30914
30915 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30916
30917         * reflection.c: handle finally clauses.
30918
30919 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30920
30921         * socket-io.c: use g_snprintf() instead of snprintf.
30922
30923 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30924
30925         * reflection.c (mono_param_get_objects): Cast second argument to
30926         mono_method_get_param_names to a const char** to silence the
30927         compiler warning.
30928
30929         * appdomain.c (mono_domain_assembly_open): Put parens around the
30930         truth statement in the for-loop.
30931
30932         * unicode.c (iconv_convert): Got rid of a compiler warning about
30933         int i being unused when the system has a new iconv.
30934         (iconv_get_length): Same.
30935
30936         * image.c (load_class_names): Cast the second argument to
30937         g_hash_table_insert() to char* to hush compiler warnings about the
30938         arg being a const.
30939         (mono_image_open): Same here.
30940
30941         * socket-io.c: Don't conditionally include sys/filio.h or
30942         sys/sockio.h here anymore since we now get them from
30943         io-layer/io-layer.h
30944         (inet_pton): If the system doesn't support inet_aton, implement
30945         using inet_addr and also #define INADDR_NONE if it isn't defined
30946         by the system.
30947
30948 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30949
30950         * metadata.c, metadata.h: added function to get packing and size info
30951         of a typedef.
30952         * reflection.h, reflection.c: handle field RVA data. Save info about
30953         the table layout if needed. Assign typedef indexes to all the types
30954         before dumping the info about them to avoid forward reference problems.
30955
30956 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30957
30958         * socket-io.c (convert_sockopt_level_and_name): ifdef
30959         SO_ACCEPTCONN because it is not defined on my system (old debian)
30960
30961 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30962
30963         * opcode.c: use stddef.h to get NULL.
30964
30965 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30966
30967         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30968         for FIONBIO, FIONREAD and SIOCATMARK.
30969         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30970         define INADDR_NONE and besides, inet_addr() is deprecated and
30971         should not be used. Use inet_pton() instead - it also has the
30972         added bonus that it can easily handle IPv6 addresses as well.
30973         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30974
30975 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30976
30977         * decimal.c: remove _MSC_VER conditional.
30978
30979 2002-02-13  Dick Porter  <dick@ximian.com>
30980
30981         * socket-io.c: 
30982         * icall.c: Internal calls for Blocking, Select, Shutdown,
30983         GetSocketOption and SetSocketOption
30984
30985 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30986
30987         * assembly.cs: better resolver: use it instead of some kludgy
30988         code.
30989
30990 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30991
30992         * reflection.c: the best way to speed-up the compiler is to avoid
30993         infinite loops.
30994
30995 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30996
30997         * class.c (mono_class_vtable): changed the object layout
30998         (obj->vtable->class). 
30999         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
31000
31001 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
31002
31003         * assembly.c: look for assemblies in the assembly dir, too.
31004
31005 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31006
31007         * class.c: fix thinko in mono_class_from_type().
31008
31009 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
31010
31011         * exception.h, exception.c: added TypeLoadException.
31012         * object.h, object.c: added mono_array_clone ().
31013         * icall.c: handle throwOnError in AssemblyGetType().
31014         Added Array.Clone().
31015         * opcode.h, opcode.c: use a single value for the opcode val.
31016         Compile fix for non-gcc compilers.
31017
31018 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
31019
31020         * opcodes.c, opcodes.h: export interesting info about opcodes.
31021
31022 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
31023
31024         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
31025         icalls. 
31026
31027         * class.c (class_compute_field_layout): set element_class for enums
31028         (mono_class_create_from_typedef): set element_class for normal classes
31029
31030         * icall.c (ves_icall_System_Enum_get_value): impl.
31031
31032         * class.c (mono_class_create_from_typedef): do not set valuetype
31033         flag for System.ValueType and System.Enum
31034
31035 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
31036
31037         * unicode.c (iconv_convert): fix big endian problem.
31038
31039 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
31040
31041         * class.c: add asserts if we are ever going to scribble over memory.
31042         * socket-io.c: not all systems have AF_IRDA defined.
31043
31044 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
31045
31046         * class.c (class_compute_field_layout): do not consider static
31047         fields to compute alignment
31048
31049 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
31050
31051         * appdomain.c (mono_appdomain_get): impl.
31052         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
31053
31054 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
31055
31056         * icall.c: ignore "file://" prefix when loading an assembly.
31057
31058 2002-01-23  Dick Porter  <dick@ximian.com>
31059
31060         * socket-io.c:
31061         * icall.c:
31062         * Makefile.am: Added socket support
31063
31064 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31065
31066         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
31067         code back.  This should return the assemblies that are loaded by
31068         the runtime on behalf of an application domain. 
31069
31070         The current implementation is still broken, it just returns every
31071         assembly loaded, but until we get real applications domain this
31072         will do.
31073
31074 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
31075
31076         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
31077         AppDomain object.
31078
31079 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
31080
31081         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
31082         the mono_class_from_name lookup.
31083         (ves_icall_get_parameter_info): ditto.
31084         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
31085         method.
31086         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
31087
31088 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
31089
31090         * class.c: load also nested classes on class init.
31091         System.ValueType instance methods gets passed boxed
31092         values, unless methods in derived classed that get a pointer to the
31093         data.
31094         * icall.c: use better name parsing code in GetType().
31095         * image.c, image.h: add mono_image_loaded ().
31096         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
31097         * reflection.c, reflection.h: added mono_reflection_parse_type().
31098
31099 2002-01-22  Veronica De Santis <veron78@interfree.it>
31100
31101         * icall.c : Added mapping of internal calls for Manual and Auto reset events
31102         * threads.c : Added the implementation of internal calls for events
31103         * threads.h : Added prototypes of internal calls for events
31104         
31105 2002-01-21  Radek Doulik  <rodo@ximian.com>
31106
31107         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
31108
31109 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
31110
31111         * class.c (mono_class_init): set min_align to 1 (instead of 0)
31112         (mono_class_value_size): use min_align
31113
31114 2002-01-20  Dick Porter  <dick@ximian.com>
31115
31116         * threads.h:
31117         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
31118         so it compiles on w32.
31119
31120 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
31121
31122         * metadata.c (mono_type_stack_size): impl.
31123
31124         * class.c (mono_class_get_field): impl. memberref token
31125
31126 2002-01-16 Veronica De Santis <veron78@@interfree.it>
31127
31128         * icall.h : Added the internal calls mapping for CreateMutex_internal
31129                     and ReleaseMutex_internal.
31130         * threads.h : Added the prototype of mutexes internal calls.
31131         * threads.c : Added the implementations of mutexes internal calls.
31132
31133 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31134
31135         * metaparse.h: removed unused file.
31136         * reflection.c, reflection.h: added stream_data_align () function 
31137         to align data in streams and keep stream aligned. Add support for
31138         exception support in method headers.
31139
31140 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
31141
31142         * unicode.c: make iconv_convert () return the number of bytess written
31143         in the output buffer.
31144
31145 2002-01-15  Dick Porter  <dick@ximian.com>
31146         * threads.c: Make the runtime's idea of infinite timeouts coincide
31147         with the class library's
31148
31149         Fix a particularly egregious bug in mono_thread_cleanup(). That
31150         code was so utterly bogus it must have been written on a Monday.
31151
31152 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31153
31154         * reflection.h: add subtypes field to TypeBuilder.
31155         * reflection.c: encode constants for literal fields.
31156         Handle subtypes. Fix user string token (and add a zero byte)
31157         at the end.
31158         
31159 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
31160
31161         * class.c (mono_class_init): bug fix: assign slot numbers for
31162         abstract methods.
31163
31164 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31165
31166         * reflection.c: don't try to output a code RVA for abstract methods.
31167         Small fixes for method header format. Output parameter info to the
31168         ParamDef table. Save method overriding info to MethodImpl table.
31169         Fix property support. Allow typedef.extends to be a type in the
31170         building assembly.
31171         * verify.c: fix off-by-one error.
31172
31173 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
31174
31175         * class.c: fix mono_class_from_mono_type () for szarray types.
31176         Remove unused cache check in mono_class_from_type_spec().
31177         * icall.c: *type_from_name () functions handle simple arrays and byref.
31178         * reflection.c: handle byref and szarray types. Handle methods without
31179         body (gets P/Invoke compilation working). Handle types and fields in
31180         get_token ().
31181         * reflection.h: add rank to MonoTypeInfo.
31182
31183 2002-01-10  Dick Porter  <dick@ximian.com>
31184
31185         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
31186         internal calls
31187
31188 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31189
31190         * icall.c: initialize class in type_from_handle ().
31191         Loop also in parent classes for get_method ().
31192         * reflection.c: properly encode class and valuetype types.
31193         Start on encoding TypeBuilder types. Handle fieldrefs.
31194         Use correct length when registering a user string.
31195         Handle ConstructorBuilder and MonoMethod in get_token ().
31196         Make mono_type_get_object () aware of cached types.
31197         * object.c: back out change to mono_string_new ().
31198
31199 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
31200         * object.c: mono_string_new should return a NULL when the string 
31201         passed in is NULL -- not try to deference it.
31202         
31203 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31204
31205         * icall.c: hack to make IsSubType work for TypeBuilders.
31206         * reflection.c: emit constructors before methods.
31207         Retrieve param names in mono_param_get_objects().
31208
31209 2002/01/05  Nick Drochak  <ndrochak@gol.com>
31210
31211         * Makefile.am: fix list of headers and sources so automake 1.5
31212         doesn't complain. Removed \# at end of list.
31213
31214 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31215
31216         * reflection.c: get token for a method ref. Set return type of
31217         constructor to void.
31218         * loader.c: debug message.
31219         * class.c: typo fix.
31220
31221 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
31222
31223         * icall.c: fix array init with rank > 1. FindMembers
31224         loops in parent class as well.
31225         * image.c: do not insert nested types in name cache.
31226         * reflection.c: warning fix.
31227         * reflection.h: add override method (for interface impl).
31228
31229 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
31230
31231         * metadata.c: fix customattr decoding.
31232
31233 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
31234
31235         * rawbuffer.cs: Added native Win32 implementation, avoids using
31236         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
31237
31238 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
31239
31240         * class.c: make the low-level routines handle the cache.
31241
31242 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
31243
31244         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
31245
31246 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
31247
31248         * class.c: fix mono_array_element_size() for objects.
31249         * class.h, class.c: add properties to MonoClass and load them
31250         at init time.
31251         * icall.c: check with isinst() when assigning a value to an array
31252         instead of requiring the classes to match exactly.
31253         Implemented icall for System.Type::GetType().
31254         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31255         enums. Handle bindingflags when looking for methods and fields.
31256         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31257         and mono_metadata_methods_from_property().
31258         * reflection.h, reflection.c: added structures for propreties,
31259         parameters and enums. Implemented mono_property_get_object() and
31260         mono_param_get_objects().
31261
31262 2001-12-18  Dick Porter  <dick@ximian.com>
31263
31264         * file-io.c: Use mono_string_to_utf16() instead of
31265         mono_string_chars()
31266
31267         * object.c: Added mono_string_to_utf16(), which copies the non
31268         NULL-terminated MonoString into a new double-null-terminated
31269         buffer.
31270
31271 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31272
31273         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31274
31275 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31276
31277         * file-io.c: raise exceptions if handle is invalid.
31278
31279 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31280
31281         * assembly.c: yet another check for mscorlib.
31282         * class.c, class.h: load nesting info for classes.
31283         * icall.c: many new functions to support the Reflection classes.
31284         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31285         * reflection.h, reflection.c: mono_image_create_token(),
31286         mono_assembly_get_object(), mono_type_get_object(),
31287         mono_method_get_object(), mono_field_get_object(): methods to return
31288         objects that parallel the C representation of assemblies, types,
31289         methods, fields.
31290
31291 2001-12-11  Dick Porter  <dick@ximian.com>
31292
31293         * icall.c:
31294         * file-io.c: Internal calls for file IO.
31295
31296 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31297
31298         * tabledefs.h: missing FileAttributes.
31299         * verify.h, verify.c: use is_valid_string () to simplify and check for
31300         valid strings more correctly. Fix warnings and speeling.
31301         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31302         Check code: branches, maxstack, method calls.
31303
31304 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31305
31306         * object.c (mono_object_allocate): removed static, so that the jit
31307         can allocate value types.
31308
31309         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31310
31311 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31312
31313         * class.c: init enum types right away and register the
31314         token->MonoClass map in mono_class_create_from_typedef ().
31315         * verify.h, verify.c: first cut of the verifier.
31316         * pedump.c: add --verify switch to verify metadata tables.
31317         * tabledefs.h: add some missing enums.
31318
31319 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31320
31321         * class.c (mono_install_runtime_class_init): impl.
31322         (mono_class_init): renamed mono_class_metadata_init to
31323         mono_class_init, also removed the metadata_inited flag
31324
31325         * object.c (mono_object_isinst): use faster algorithm
31326
31327 2001-11-30  Radek Doulik  <rodo@ximian.com>
31328
31329         * mono-endian.h: reverted last change
31330         added function prototypes
31331
31332         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31333         add mono-endian.c back
31334
31335         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31336         for unaligned access, I've mistaked it with endianess. I am
31337         sorry.
31338         (mono_read16): fix reverted endianess
31339         (mono_read64): ditto
31340         (mono_read32): ditto
31341
31342 2001-11-30  Dick Porter  <dick@ximian.com>
31343
31344         * exception.c: Implement mono_exception_from_name()
31345
31346 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31347
31348         * metadata.h, metadata.c: remove params_size and locals_size and their
31349         calculation from the metadata code: they are only usefult to the
31350         interp.
31351
31352 2001-11-29  Radek Doulik  <rodo@ximian.com>
31353
31354         * object.c (mono_ldstr): swap bytes here, it's probably not the
31355         best place, but works for me now, I'll redo it once I know mono
31356         better, also note that I add PROT_WRITE and don't reset back, also
31357         note that it's only affects big endians, so x86 should be OK
31358
31359         * mono-endian.h (read16): use just glib macros for both endians
31360
31361         * mono-endian.c: removed as glib macros are used in in
31362         mono-endian.h so we don't need to care about endianess for read
31363         macros as glib does that for us already
31364
31365 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31366
31367         * class.h, class.h: take minimum alignment into consideration so
31368         that the fields of a class remain aligned also when in an array.
31369
31370 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31371
31372         * loader.h, loader.c: add mono_method_get_param_names().
31373         * class.c: 0-init class fields.
31374
31375 2001-11-26  Dick Porter  <dick@ximian.com>
31376
31377         * icall.c:
31378         * threads-types.h:
31379         * threads.c: New file that handles System.Threading on all platforms
31380
31381         * object.c: 
31382         * object.h: Remove the synchronisation struct from MonoObject,
31383         replace it with a pointer that gets initialised on demand
31384
31385         * Makefile.am: Replace all the system-specific threading code with
31386         a single file that uses the new wrapper library
31387
31388 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31389
31390         * class.c, class.h: add mono_install_trampoline() so that the runtime
31391         can register a function to create a trampoline: removes the ugly
31392         requirement that a runtime needed to export arch_create_jit_trampoline.
31393         * object.h, object.c: added mono_install_handler() so that the runtime
31394         can install an handler for exceptions generated in C code (with
31395         mono_raise_exception()). Added C struct for System.Delegate.
31396         * pedump.c: removed arch_create_jit_trampoline.
31397         * reflection.c: some cleanups to allow registering user strings and
31398         later getting a token for methodrefs and fieldrefs before the assembly
31399         is built.
31400         * row-indexes.h: updates and fixes from the new ECMA specs.
31401
31402 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31403
31404         * class.h, class.c: add enum_basetype field to MonoClass.
31405         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31406         to get index in the constant table reated to a field, param or
31407         property.
31408         * reflection.h, reflection.c: handle constructors. Set public-key and
31409         version number of the built assembly to 0.
31410         * row-indexes.h: update from new ECMA spec.
31411
31412 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31413
31414         * class.h, class.c: add a max_interface_id to MonoClass.
31415         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31416         since it's used to do that. Added mono_type_type_from_obj().
31417         Make GetType() return NULL instead of segfaulting if the type was not
31418         found. Handle simple arrays in assQualifiedName.
31419         * object.h: add a struct to represent an Exception.
31420         * reflection.c: output call convention in method signature.
31421         Add code to support P/Invoke methods and fixed offsets for fields.
31422
31423 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31424
31425         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31426         the value.
31427         * icall.c: use mono_array_addr instead of array->vector: fixes the
31428         reflection image writing.
31429         * reflection.c: init call convention byte to 0 in method signature.
31430         Encode the property signature. Don't output property-related methods
31431         twice. Really process the properties for a type (don't cast a field to
31432         a property, my mom always told me that).
31433         Fix 64 bit issues in pointer alignment in a different and more
31434         readable way.
31435
31436 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31437
31438         * loader.h: Removed type class from MonoDefaults, added monotype
31439
31440         * loader.c: Loaded MonoType, removed loading of Type
31441
31442         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31443         and fills in System.Type._impl with a RuntimeTypeHandle rather
31444         than the actual MonoClass *
31445
31446         (ves_icall_type_from_handle): change from type_class to
31447         monotype_class
31448
31449         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31450         implemented
31451
31452         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31453         implemented
31454
31455         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31456
31457         (ves_icall_System_Reflection_Assembly_GetType): implemented
31458
31459         (ves_icall_System_MonoType_assQualifiedName): implemented
31460
31461         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31462
31463 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31464
31465         * assembly.c (mono_assembly_open): Implement a cache for the
31466         assemblies. 
31467
31468         (mono_assembly_close): only destroy the assembly when the last
31469         reference is gone.
31470         
31471 2001-11-09  Dick Porter  <dick@ximian.com>
31472
31473         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31474
31475 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31476
31477         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31478
31479 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31480
31481         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31482         from Martin Weindel.
31483         * object.h: add mono_string_chars ().
31484
31485 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31486
31487         * reflection.c (build_compressed_metadata): Eliminates warnings
31488         and uses 64-bit clean code.
31489
31490         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31491         (mono_type_equal): Change signature to eliminate warnings.
31492
31493 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31494
31495         * icall.c, loader.c: remove the internalcall array constructors.
31496         Changes to match the new MonoArray structure.
31497         * object.h, object.c: an array object doesn't allocate an extra
31498         vector. Add mono_array_new_full () to create jagged arrays easily.
31499
31500 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31501
31502         * metadata.h, metadata.c: add mono_metadata_field_info () to
31503         retreive all the info about a field from vairous tables.
31504         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31505         * class.h, class.c: augment MonoClassField with more info.
31506         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31507         policy and load a field's RVA if needed.
31508
31509 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31510
31511         * class.c (mono_class_metadata_init): create a trampoline for all
31512         virtual functions instead of actually compiling them.
31513
31514 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31515
31516         * class.h, class.c: include name in MonoClassField.
31517         * class.c: fix fundamental type of System.Object and System.String.
31518         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31519         tokens in ldtoken.
31520         * icall.c: remove internalcalls for the Reflection stuff that is now
31521         done in C# code.
31522         * loader.c: mono_field_from_memberref () implementation.
31523         * mono-endian.c: thinko (s/struct/union/g).
31524         * object.c, object.h: make the mono_string_* prototypes actually use
31525         MonoString instead of MonoObject.
31526         * reflection.c, reflection.h: updates for changes in the reflection
31527         code in corlib: we use C structures that map to the actual C# classes.
31528         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31529         fat method header if needed and use the info from the ILGenerator for
31530         methods. Handle fields in types. Misc fixes.
31531
31532 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31533
31534         * class.c (mono_class_metadata_init): bug fix: always allocate
31535         space for static class data
31536
31537 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31538
31539         * class.c (mono_compute_relative_numbering): use relative
31540         numbering to support fast runtime type checks.
31541
31542 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31543
31544         * class.c (mono_class_create_from_typeref): added debugging output
31545         to print class name when MonoDummy is returned instead of real class
31546
31547 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31548
31549         * class.c (mono_class_metadata_init): interface offset table now
31550         contains pointers into the vtable - this is more efficient for the jit
31551
31552 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31553
31554         * class.c (mono_class_metadata_init): use a temporary vtable (the
31555         old algorithm only worked for the interpreter, but not for the jit)
31556
31557 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31558
31559         * loader.c (method_from_memberref): use mono_class_get to get the
31560         class of an array instead of using System.Array directly.
31561         (mono_get_method): also add MEMBERREF methods to the method cache
31562         which usefull for arrays.
31563
31564 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31565
31566         * pedump.c (arch_compile_method): added to compute vtable entry
31567
31568         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31569         number of interfaces.
31570         
31571         * class.h: merged MonoArrayClass into MonoClass
31572
31573         * class.c (mono_class_create_from_typedef): compute the vtable size and
31574         allocate space to include the vtable inside MonoClass
31575         (mono_class_metadata_init): initialize the vtable
31576
31577 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31578
31579         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31580         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31581         * image.c: endian fixes by Laurent Rioux.
31582         * object.h, object.c: rename MonoStringObject to MonoString and
31583         MonoArrayObject to MonoArray. Change some function names to conform to
31584         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31585         guint16* as first argument, so don't use char*.
31586         Provide macros to do the interesting things on arrays in a portable way.
31587         * threads-pthread.c: updates for the API changes and #include <sched.h>
31588         (required for sched_yield()).
31589         * icall.c: updates for the API changes above.
31590         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31591         platforms that need them.
31592
31593 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31594
31595         * class.c: set the correct type for all the fundamental
31596         type when loading the class.
31597
31598 2001-10-05  Dick Porter  <dick@ximian.com>
31599
31600         * threads-pthread.c (pthread_mutex_timedlock): Simple
31601         compatibility version for C libraries that lack this call.
31602
31603 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31604
31605         * class.c: MonoTypes stored in MonoClass are stored as
31606         fundamental MonoTypes when the class represents a
31607         fundamental type (System.Int32, ...).
31608         The TypeHandle return by ldtoken is a MonoType*.
31609         * icall.c: ves_icall_get_data_chunk () write out all the
31610         PE/COFF stuff. Implement ves_icall_define_method (),
31611         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31612         * image.c: properly skip unknown streams.
31613         * loader.h, loader.c: add type_class to mono_defaults.
31614         * metadata.c, metadata.h: export compute_size () as
31615         mono_metadata_compute_size () with a better interface.
31616         Typo and C&P fixes.
31617         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31618         * reflection.c, reflection.h: many cleanups, fixes, output method
31619         signatures and headers, typedef and typeref info, compress the metadata
31620         tables, output all the heap streams, cli header etc.
31621         * row-indexes.h: typo fixes.
31622
31623 2001-10-04  Dick Porter  <dick@ximian.com>
31624
31625         * object.h: Add a synchronisation mutex struct to MonoObject
31626
31627         * object.c (mono_new_object): Initialise the object
31628         synchronisation mutexes
31629
31630         * icall.c: System.Threading.Monitor internal calls
31631         
31632         * threads-pthread.h:
31633         * threads-pthread.c: System.Threading.Monitor internal calls
31634
31635         * threads-types.h: New file, includes the system-specific thread
31636         structures
31637         
31638         * threads-pthread-types.h:
31639         * threads-pthread-types.c: New files, handle pthread-specific
31640         synchronisation types
31641
31642         * threads-dummy-types.h: 
31643         * threads-dummy-types.c: New files of dummy support for
31644         thread-specific types
31645
31646         * metadata.c:
31647         * image.c:
31648         * pedump.c: include mono-endian.h not endian.h
31649         
31650         * Makefile.am: More threads files.
31651         Name mono-endian.h not endian.h
31652
31653 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31654
31655         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31656         stuff and implement a few more bits.
31657         * icall.c: a field needs to be dereferenced twice. Do not use the same
31658         name for two variables in the same scope.
31659         * image.c, image.h: cleanups.
31660
31661 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31662
31663         * class.c (mono_class_metadata_init): bug fix: compute the right size
31664
31665 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31666
31667         * icall.c: implemented some of the Reflection internalcalls.
31668         * image.c, image.h: start writing out the PE/COFF image.
31669         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31670         that does the reverse than decode_blob_size ().
31671         * object.c: use mono_metadata_encode_value (). Move here
31672         temporary implementation of mono_string_to_utf8 ().
31673         * rawbuffer.c: make malloc_map static.
31674
31675 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31676
31677         * metadata.c: fix type comparison for arrays.
31678         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31679         Added a couple of new classes to monodefaults.
31680         * icall.c: added a couple of Reflection-related internalcalls.
31681         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31682         Added a byval_arg MonoType to MonoClass.
31683
31684 2001-09-28  Dick Porter  <dick@ximian.com>
31685
31686         * icall.c:
31687         * threads-pthread.h: 
31688         * threads-pthread.c: Implemented internal calls for
31689         LocalDataStoreSlot operations.  Applied mutexes around all shared
31690         data.  Reworked the thread creation and Start() operations to
31691         avoid a race condition.
31692         
31693         * threads-dummy.h:
31694         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31695
31696 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31697
31698         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31699
31700 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31701
31702         * class.c, loader.c: warn and return NULL instead of erroring out.
31703         * icall.c: added System.AppDomain::getCurDomain().
31704         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31705
31706 2001-09-25  Dick Porter  <dick@ximian.com>
31707
31708         * threads-pthread.h:
31709         * threads-pthread.c: Implemented timed thread joining and added
31710         System.Threading.Thread::Join_internal internal call
31711
31712         * icall.c: Added System.Threading.Thread::Join_internal internal call
31713
31714         * threads-dummy.h:
31715         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31716
31717 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31718
31719         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31720         mono_string_intern () to implement the semantics of the ldstr opcode
31721         and the interning of System.Strings.
31722         * icall.c: provide hooks to make String::IsIntern and String::Intern
31723         internalcalls.
31724
31725 2001-09-23  Dick Porter  <dick@ximian.com>
31726
31727         * threads-dummy.c: 
31728         * threads-dummy.h: New files of dummy threading routines
31729
31730         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31731         support code based on system specifics
31732
31733         Rename PTHREAD_LIBS to THREAD_LIBS
31734         
31735 2001-09-23  Dick Porter  <dick@ximian.com>
31736
31737         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31738         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31739         internal calls.
31740         (mono_thread_init): Set up a Thread object instance to return when
31741         the main thread calls Thread.CurrentThread
31742         (mono_thread_cleanup): Wait for all subthreads to exit
31743
31744         * icall.c: New internal calls for System.Threading.Thread::Sleep
31745         (including Schedule) and CurrentThread
31746
31747         * threads.h: New file, to insulate thread-specific stuff from the
31748         rest of the code
31749
31750 2001-09-21  Dick Porter  <dick@ximian.com>
31751
31752         * threads-pthread.h: 
31753         * threads-pthread.c: New file, for handling pthreads-style
31754         threading support.  Start() now starts a new thread and executes
31755         the ThreadStart delegate instance.
31756
31757         * icall.c: Added the internalcall for
31758         System.Threading.Thread::Start_internal
31759
31760         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31761
31762 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31763
31764         * loader.c: work around the different signatures for delegates
31765         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31766
31767 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31768
31769         * class.h, class.c: add mono_class_get_field_from_name ().
31770         * *: Fix C comments and other ANSI C issues.
31771
31772 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31773
31774         * endian.h, assembly.c: fix some endianness issues.
31775
31776 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31777
31778         * loader.h, load.c: add delegate_class to mono_defaults.
31779         Handle runtime provided methods in mono_get_method ().
31780
31781 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31782
31783         * loader.c (mono_get_method): use pinvoke for internal call
31784
31785         * icall.c: use pinvoke for internal call
31786
31787         * loader.c (method_from_memberref): set the method name
31788
31789 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31790
31791         * metadata.c: help the compiler generate better code for
31792         mono_class_from_mono_type ().
31793
31794 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31795
31796         * class.c (mono_class_metadata_init): delayed computing of the
31797         class size to mono_class_metadata_init ()
31798
31799 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31800
31801         * class.c, class.h: add an interfaces member to MonoClass.
31802         * image.c, image.h: add assembly_name field to MonoImage
31803         from the assembly table.
31804         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31805
31806 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31807
31808         * class.c: Handle Array in mono_class_from_mono_type ().
31809         * metadata.c, pedump.c: some endian fixes.
31810
31811 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31812
31813         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31814         * metadata.c: fix small problem introduced with the latest commit.
31815
31816 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31817
31818         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31819         We don't need a MonoMetadata pointer anymore to compare signatures in
31820         mono_metadata_signature_equal (), update callers.
31821         Reduced memory usage an number of allocations for MonoMethodHeader and
31822         MonoMethodSignature.
31823
31824 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31825
31826         * metadata.c: added compare for szarray.
31827
31828 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31829
31830         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31831         and add a couple more types to it and mono_defaults. Give an hint on
31832         classes that need implementing in our corlib and are referenced
31833         in mscorlib.
31834
31835 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31836
31837         * class.h, class.c: keep track if a class is also an Enum.
31838         * loader.c: Implement a couple more types for use in libffi
31839         marshalling. Gives better diagnostics when failing to dlopen
31840         a library. Set method->klass for P/Invoke methods, too.
31841
31842 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31843
31844         * class.c, class.h: add a MonoType this_arg to MonoClass that
31845         represents a pointer to an object of the class' type that
31846         can be used by the interpreter and later the type cache.
31847         Add best guess alignment info for valuetype objects.
31848
31849 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31850
31851         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31852         into MonoType: one less level of indirection and allocation and
31853         simplifies quite a bit of code. Added cache for MonoTypes that are
31854         used frequently, so that we don't need to allocate them all the time.
31855
31856 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31857
31858         * class.c (mono_class_create_from_typedef): System.Enum is also a
31859         value type, although it does not derive from System.ValueType
31860         (maybe a bug in the ms compiler?)
31861
31862         * metadata.c (mono_type_size): return the right size for value types
31863
31864         * loader.c (mono_get_method): only initialize method header if not abstract
31865
31866         * class.c (mono_class_from_mono_type): use mono_default values. 
31867
31868 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31869
31870         * *: use MonoClass pointers instead of <type_tokens>
31871         
31872         * class.h: new flag: metadata_inited.
31873
31874         * class.c (mono_class_metadata_init): impl.
31875         (mono_class_instance_size): impl.
31876         (mono_class_data_size): impl.
31877
31878 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31879
31880         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31881         MonoClass now has the name and name_space fields. 
31882         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31883         mono_get_method () takes and optional MonoClass as argument.
31884         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31885         instead that takes advantage of a map from class names to typedef
31886         tokens in MonoImage.
31887
31888 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31889
31890         * metadata.c: zero is not a valid alignment boundary.
31891         Merge MONO_TYPE_VOID in default decoding code.
31892
31893 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31894
31895         * image.h: merged MonoMetadata into MonoImage
31896
31897         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31898         identify the type of elements.
31899
31900 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31901
31902         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31903         * cil-coff.h: split MonoMSDOSHeader and add size info.
31904         * image.c: add some consistency checks.
31905         * metadata.c: fix row size computation: one programmer
31906         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31907         add explanation for the locator routine.
31908         Fix decoding of size in method header.
31909         
31910 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31911
31912         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31913         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31914         function from gnome-libs.  This uses the right path separator
31915         based on the OS, and also works around a bug in some systems where
31916         a double slash is not allowed. 
31917         (default_assembly_name_resolver): Use g_concat_dir_and_file
31918         (mono_assembly_open): ditto.
31919
31920 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31921
31922         * metadata.c (mono_metadata_signature_equal): impl.
31923
31924         * *: void is now a realy MonoType (instead of using NULL)
31925         
31926         * metadata.c (do_mono_metadata_parse_type): use
31927         mono_metadata_parse_type to parse void value.
31928
31929 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31930
31931         * metadata.c, metadata.h: in the signature and method header store
31932         only the space required for holding the loca vars and incoming arguments.
31933
31934 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31935
31936         * metadata.c (do_mono_metadata_parse_type): treat void like any
31937         other type (instead of assigning NULL);
31938
31939 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31940
31941         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31942
31943 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31944
31945         * image.c (do_mono_image_open): added a cache for arrays.
31946
31947 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31948
31949         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31950         decode a single column from a row in a metadata table and changes
31951         to take advantage of it in the typedef locator (gives a nice speed up).
31952         Store offset info for function params.
31953
31954 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31955
31956         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31957
31958 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31959
31960         * assembly.c: how could mono_assembly_close () had ever worked?
31961         * metadata.c, metadata.h: provide offset info for local vars.
31962         Implement mono_type_size () to take care of alignment as well
31963         as size (it was mono_field_type_size in cli/class.c before).
31964
31965 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31966
31967         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31968
31969         * assembly.h (CORLIB_NAME): set to corlib.dll
31970
31971         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31972
31973 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31974
31975         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31976         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31977         tokentype.h: massive namespace cleanup.
31978
31979 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31980
31981         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31982
31983 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31984
31985         * metadata.c (mono_metadata_free_type): added check for type !=
31986         NULL (void) before calling mono_metadata_free_type()
31987
31988 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31989
31990         * metadata.h, row_indexes.h: added header with enumerations to use
31991         to index in the columns from tables in metadata and to decode coded
31992         tokens: we should start using this instead of embedding magic numbers
31993         all over the code.
31994
31995 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31996
31997         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31998         Move metadata_t info from cli_image_info_t to MonoImage, where
31999         it's easily accessible. Changed all the uses accordingly.
32000         Added the method and class caches to MonoImage.
32001         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
32002         and mono_metadata_decode_value () signature to be more consistent
32003         with the other parse functions (and simplify code). Taken advantage
32004         of zero-length array allocation with GCC. Removed reduntant (and
32005         wrong) MonoFieldType struct and use MonoParam instead. Changed
32006         mono_metadata_parse_field_type () to use common code for parsing.
32007         Added mono_metadata_typedef_from_field () and
32008         mono_metadata_typedef_from_method () to lookup a typedef index from a
32009         field or method token.
32010         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
32011
32012 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
32013
32014         * metadata.c (mono_metadata_parse_field_type): Implement. 
32015         (do_mono_metadata_parse_type): Split engine from
32016         mono_metadata_parse_type, so that we can create smaller structures
32017         for things that just have one pointer to the MonoType (look at
32018         the MonoFieldType)
32019
32020 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
32021
32022         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
32023         as Jan Gray found out, it is incorrect. 
32024
32025 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
32026
32027         * assembly.c: Implement asssembly loading.  This loads an image
32028         and loads all the referenced assemblies.  Come to think of it, we
32029         could always do lazy loading of the assemblies. 
32030
32031         * image.c (mono_image_open): Keep loaded images in a hashtable.
32032
32033         * image.h (MonoImage): Add reference count.
32034
32035 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
32036
32037         * assembly.c (mono_assembly_open): Keep track of the file name in
32038         case the assembly has no ASSEMBLY table.
32039
32040         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
32041         from get.c here.
32042
32043 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
32044
32045         * metadata.c, metadata.h: decode local vars in method header
32046         parse function. Change callers accordingly.
32047
32048 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
32049
32050         * metadata.h, cil-coff.h: protect against multiple inclusion.
32051         Added some new structures to hold information decoded from metadata:
32052         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
32053         and relevant decoding/free functions.
32054         * metadata.c: implement decoding functions. Add warning for out of bounds
32055         index in mono_metadata_locate(). Implement mono_get_method () to retreive
32056         all the info about a method signature and invocation. Remove check on
32057         uninitialized local var in parse_mh() and fix memory leak.
32058
32059 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
32060
32061         * metadata.h: More macros.
32062
32063         * tokentype.h: New file.
32064
32065 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
32066
32067         * assembly.c: added a consistency check and initialize
32068         some structures with g_new0().
32069         * metadata.c: fixed a couple more bugs in table size computation
32070         and add other checks for out-of bound access to metadata.
32071
32072 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
32073
32074         * metatada.c: fix bugs computing table sizes. Spew a
32075         warning when index in string heap is out of bounds.
32076
32077 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
32078
32079         * metadata.h: Add a couple of macros to manipulate tokens. 
32080
32081 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
32082
32083         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
32084         cli_section_tables).
32085
32086 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
32087
32088         * metadata.c (mono_metadata_user_string): New function, provides
32089         access to the UserString heap. 
32090
32091 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
32092
32093         * metadata.c: Add inline documentation.
32094
32095 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
32096
32097         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
32098         files. 
32099
32100 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
32101
32102         * typeattr.h: New file, TypeAttribute flags. 
32103
32104 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
32105
32106         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
32107         mono_assembly_ensure_section): Section loading code.
32108         (load_section_tables): Load the sections.
32109
32110         * mono/metadata/metadata.c (mono_metadata_locate_token,
32111         mono_metadata_locate): Functions to locate the information
32112         definition given a token or a table and an index.
32113         (mono_metadata_compute_table_bases): New.
32114         (compute_size): New function to compute the sizes of the various
32115         tables.
32116
32117         * mono/metadata/metadata.h: Finish listing the different index
32118         types. 
32119
32120         * mono/metadata/pedump.c: Improve to dump new information.
32121
32122 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
32123
32124         * mono/metadata/metadata.c: Entered all the tables matching
32125         Beta2. 
32126
32127         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
32128
32129
32130
32131