Free the old array when resizing a mono_ptr_array.
[mono.git] / mono / metadata / ChangeLog
1 2009-05-26  Mark Probst  <mark.probst@gmail.com>
2
3         * icall.c: Free the old array when resizing a mono_ptr_array.
4
5 2009-05-26  Mark Probst  <mark.probst@gmail.com>
6
7         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
8         for the hashes whose keys are managed objects.
9
10 2009-05-26  Mark Probst  <mark.probst@gmail.com>
11
12         * object-internals.h, threads.c: Set the execution context on
13         thread start here, not in corlib.
14
15         * appdomain.c: Bump corlib version.
16
17 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
18
19         * class.c (mono_class_setup_fields): Don't mark simd types as having
20         16 bytes alignment as the whole runtime doesn't support.
21
22 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
23
24         * metadata-verify.c (safe_read): Use endian safe read macros.
25
26 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
27
28         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
29         it is read-only when using full aot.
30
31 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
32
33         * metadata-verify.c (is_valid_method_signature): Verify parts
34         of the return type. Provide an error message in case of failure.
35
36 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
37
38         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
39
40 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
41
42         * metadata-verify.c: Include the size prefix in the bounds check.
43
44 2009-05-22  Miguel de Icaza  <miguel@novell.com>
45
46         * icall.c: Remove warnings.
47
48         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
49         prevent auto-detection based on GCC defines.
50
51         Add PS3
52
53         * metadata-verify.c: Do not include signal.h
54
55         * generic-sharing.c, marshal.c: Add returns to avoid some warning
56         messages.  Not sure why the g_assert_not_reached is not enough to
57         quiet the compiler.
58         
59
60         * appdomain.c: Remove code that is not used when
61         DISABLE_SHADOW_COPY is set.
62
63         * image.c: use g_getenv
64
65 2009-05-21  Miguel de Icaza  <miguel@novell.com>
66
67         * reflection.c: Remove code that it not used with
68         DISABLE_REFLECTION_EMIT is defined.
69
70 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
71
72         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
73         invoke wrappers.
74
75 2009-05-20  Miguel de Icaza  <miguel@novell.com>
76
77         * socket-io.c
78         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
79         the ifdef here and instead put that on io-layer
80
81 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * metadata-verify.c: Verify the generic param constraint table.
84
85 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * metadata-verify.c (verify_generic_param_table): Fix
88         thinko on the valid flags bits for generic params.
89
90 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
91
92         * metadata-verify.c: Verify the methodspec table.
93
94 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
95
96         * metadata-verify.c: Verify the generic param table.
97
98 2009-05-19  Mark Probst  <mark.probst@gmail.com>
99
100         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
101
102 2009-05-19  Mark Probst  <mark.probst@gmail.com>
103
104         * sgen-gc.c: Use generation enum more consistently and use the
105         correct generation in mono_gc_register_for_finalization().
106
107 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
108
109         * metadata-verify.c: Verify the nested class table.
110
111 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
112
113         * metadata-verify.c: Verify the manifest resource table.
114
115 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
116
117         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
118
119 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
120
121         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
122         wrappers, this is now done in the JIT.
123         
124         * class.c (mono_set_generic_sharing_supported): New internal function.
125         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
126
127 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
128
129         * metadata-verify.c: Verify the exported type table.
130
131 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
132
133         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
134
135 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
136
137         * metadata-verify.c: Verify the file table.
138
139 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
140
141         * metadata-verify.c (verify_assembly_table): Fix an error message.
142
143         * metadata-verify.c: Verify the assemblyref table.
144
145 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
146
147         * metadata-verify.c (verify_assembly_table): Fix the valid
148         bits mask for flags.
149
150 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
151
152         * debug-helpers.c (mono_method_full_name): Print generic parameters of
153         generic methods as well.
154
155 2009-05-15  Geoff Norton  <gnorton@novell.com>
156
157         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
158         use-case and is significantly more performant than the wapi layer.
159
160 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
161
162         * metadata-verify.c: Verify the assembly table.
163
164 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
165
166         * metadata-verify.c: Fix rows limit check.
167
168 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
169
170         * metadata-verify.c: Verify the fieldrva table.
171
172 2009-05-13  Mark Probst  <mark.probst@gmail.com>
173
174         * sgen.c: Speed up weak links and finalizers by grouping them by
175         generation.
176
177 2009-05-13  Mark Probst  <mark.probst@gmail.com>
178
179         * marshal.c (delegate_hash_table_add): When overwriting an entry,
180         free the old GCHandle (only applies to SGen).
181
182 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
183
184         * loader.c (mono_get_method_from_token): Avoid the expensive call to
185         mono_metadata_load_generic_params () for non-generic methods.
186
187 2009-05-12  Mark Probst  <mark.probst@gmail.com>
188
189         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
190         New function for returning a monitor's weak link if it has one.
191
192         * sgen-gc.c: Remove an object's monitor's weak link (if it has
193         one) when clearing a domain.  These can still be around because
194         the object might not have been collected.
195
196 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
197
198         * gc.c: Fix a warning.
199
200 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
201
202         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
203         prevous wait that resulted in a deadlock on Windows when initializing
204         the runtime form DllMain. Also results in improved startup time.
205         (finalizer_thread): Get rid of thread_started_event.
206         * threads.c, threads-types.h (mono_thread_create_internal): Return the
207         resulting MonoThread.
208
209         Contributed under MIT/X11 license.
210
211 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
212
213         * metadata-verify.c: Verify the implmap table.
214         Don't require that #US and #Strings be present.
215
216 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
217
218         * security-core-clr.c: Delegate checks are done at creation time,
219         not a invocation time. Fix exception for Telerik Silverlight demo
220
221 2009-05-11  Mark Probst  <mark.probst@gmail.com>
222
223         * sgen-gc.c (need_remove_object_for_domain): Remove the special
224         case for the Thread class.
225
226         * threads.c: Do clean-up of abort exception/state in
227         thread_cleanup() instead of Thread.free_internal().  Also clean up
228         current_appcontext.  The reason we have to do that is because
229         those references might point into another domain and if that
230         domain is unloaded before the thread is finalized, they point to
231         invalid data.
232
233 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
234
235         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
236         stub signatures.
237         
238         Contributed unter MIT/X11 license.
239
240 2009-05-09  Miguel de Icaza  <miguel@novell.com>
241
242         * verify.c, metadata-verifier.c: Add support for disabling the
243         verifier in some builds.
244
245         [ Sorry, my previous commit accidentally commited some work in
246         progress ]
247
248 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
249
250         * class.c (mono_class_setup_fields): Set class->field.first for
251         generic instances.
252
253 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
254
255         * metadata-verify.c: Verify the typespec table.
256
257 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
258
259         * metadata-verify.c: Verify the module table.
260
261 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * metadata-verify.c: Verify the methodimpl table.
264
265 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
266
267         * metadata-verify.c: Verify the property table.
268
269 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
270
271         * debug-helpers.c (mono_method_desc_match): Add support for generic
272         glob patterns.
273
274 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
275
276         * metadata-verify.c: Verify the propertymap table.
277
278 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
279
280         * metadata-verify.c: Verify the event table.
281
282         * metadata-verify.c (search_sorted_table): Fix offset
283         calculation.
284
285 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
286
287         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
288
289 2009-05-01  Mark Probst  <mark.probst@gmail.com>
290
291         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
292         because mono_delegate_free_ftnptr() needs it.
293
294 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
295
296         * metadata-verify.c: Verify the eventmap table.
297
298 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
299
300         * metadata-verify.c: Verify the standalonesig table.
301
302 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
303
304         * metadata-verify.c: Verify the field layout table.
305
306 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
307
308         * class.c (mono_type_get_name_recurse): Don't crash
309         for ownerless generic params.
310
311         * debug-helpers.c (mono_type_get_desc): Correct the format
312         for ownerless generic params.
313
314 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
315
316         * metadata-verify.c: Verify the class layout table.
317
318 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
319
320         * metadata-verify.c: Verify the decl security table.
321
322 2009-04-30  Mark Probst  <mark.probst@gmail.com>
323
324         * domain.c (mono_domain_set_internal_with_options): Don't do
325         anything if the old domain is the same as the old one.  Fixes
326         #499326.
327
328 2009-04-30  Mark Probst  <mark.probst@gmail.com>
329
330         * appdomain.c: Deregister the reflection_info roots when unloading
331         a domain.
332
333         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
334         memory allocated by a domain and frees its disappearing links.
335
336         * boehm-gc.c, null-gc.c: Empty implementation of
337         mono_gc_clear_domain().
338
339 2009-04-30  Mark Probst  <mark.probst@gmail.com>
340
341         * appdomain.c (clear_cached_vtable): Free the static fields memory
342         block.
343
344 2009-04-30  Mark Probst  <mark.probst@gmail.com>
345
346         * gc.c: Set the correct domain when invoking finalizers.
347
348         * appdomain.c: Set the correct domain when creating threads.
349
350 2009-04-30  Mark Probst  <mark.probst@gmail.com>
351
352         * sgen-gc.c: Fix skip size for vectors.
353
354 2009-05-03  Martin Baulig  <martin@ximian.com>
355
356         * mono-debug-debugger.c
357         (mono_debugger_check_breakpoints): Check class init handlers even
358         if we don't have any method load handers.
359
360 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
361
362         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
363         returning refonly assemblies if refonly is FALSE. Fixes #499013.
364
365 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
366
367         * metadata-verify.c: Verify the field marshal table.
368
369 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
370
371         * metadata-verify.c: Verify the custom attribute table.
372
373 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * metadata-verify.c: Verify the constant table.
376
377 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * metadata-verify.c: Verify the memberef table.
380
381 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
382
383         * metadata-verify.c (get_coded_index_token): Remove
384         dead argument.
385
386 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
387
388         * metadata-verify.c: Verify the interfaceimpl table.
389
390 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
391
392         * verify.c: Improve error message.
393
394         * debug-helpers.c (mono_type_get_desc): Harden the code that
395         deals with VAR and MVAR.
396
397 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
398
399         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
400         part of #498692.
401
402 2009-04-23 Tom Hindle <tom_hindle@sil.org>
403
404         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
405         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
406
407 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
408
409         * security-core-clr.c: Avoid redundant checks for platform code, 
410         e.g. check for method and for class (very common) and check
411         for class and outer class (less common)...
412
413 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
414
415         * reflection.c: Avoid returning random cattrs for synthetic methods.
416         Fixes #498545.
417
418 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
419
420         * assembly.c: assemblies in the GAC should never be shadow-copied.
421
422 2009-04-26  Mark Probst  <mark.probst@gmail.com>
423
424         * domain.c, domain-internals.h: Disable
425         track_resurrection_{objects,handles}_hash in MonoDomain if using
426         SGen.
427
428 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
429
430         * metadata-verify.c: Verify the param table.
431
432 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
433
434         * metadata-verify.c (verify_typedef_table): Range check FieldList and
435         MethodList.
436
437         * metadata-verify.c (verify_method_table): Proper check the ParamList
438         field.
439
440 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
441
442         * metadata-verify.c (verify_method_table): Check for runtime
443         implemented functions such as delegate .ctors. Remove spurious
444         printf.
445         
446 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
447
448         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
449
450 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
451
452         Don't allocate MonoGenericInfo for ownerless generic params.
453         * class-internals.h (MonoGenericParam::info): Move field to ...
454         (MonoGenericParamFull): ... this.  New struct.
455         (MonoGenericContainer::type_params): Change type to
456         MonoGenericParamFull.
457         (MonoGenericParam, MonoGenericContainer): Update accessors.
458         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
459         'info' field for ownerless generic param.
460         (mono_metadata_load_generic_params): Update to changes.
461         * reflection.c (mono_reflection_create_generic_class): Likewise.
462         (reflection_methodbuilder_to_mono_method): Likewise.
463         (mono_reflection_initialize_generic_parameter): Likewise.
464
465 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
466
467         Don't use MonoGenericParamInfo for ownerless generic params.
468         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
469         use ParamInfo class at all.
470         (mono_class_from_generic_parameter): Use them.
471         (make_generic_param_class): Fix a couple of instances where 'pinfo
472         == NULL' wasn't handle.
473
474 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
475
476         * class.c (make_generic_param_class): Carve out of ...
477         (mono_class_from_generic_parameter): ... here.
478
479 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
480
481         Simplify mono_class_from_generic_parameter
482         * class-internals.h (MonoGenericParamInfo::token): New field.
483         * metadata.c (mono_metadata_load_generic_params): Initialize it
484         from metadata.
485         * class.c (mono_class_from_generic_parameter): Use it instead of
486         searching through metadata.
487
488 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * metadata-verify.c: Add verification of the method table.
491
492 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
495         Delegate::Invoke optimization.
496
497 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
498
499         * appdomain.c (mono_domain_create_appdomain_internal): Free the
500         string returned by get_shadow_assembly_location_base.
501
502         * appdomain.c (get_shadow_assembly_location_base): Add a comment
503         about caller's ownership.
504
505 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
506
507         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
508         reflection memory on domain unload.
509
510         * domain.c (mono_domain_free): Don't free refobject_hash, let the
511         reflection cleanup code do it.
512
513         * domain-internals.h: Add mono_reflection_cleanup_domain.
514
515         This fixes a memory leak for managed mirrors of reflection objects
516         on domain unload. 
517
518 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
519
520         * metadata-verify.c: Implement more verification of the field table.
521
522 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
523
524         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
525         doesn't try to parse the input assembly, which can be broken.
526
527 2009-04-23  Mark Probst  <mark.probst@gmail.com>
528
529         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
530         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
531         by using the lowest bit in the link to store whether the link is
532         tracked.  Move the track_resurrection hashes into boehm-gc.c.
533
534 2009-04-22  Miguel de Icaza  <miguel@novell.com>
535
536         * Makefile.am: Split the console support in platform specific code
537         and put together a framework for making this easy in the future so
538         that we can start splitting code instead of having a mess of PLATFORM_WIN32
539
540 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * pedump.c: Fix a warning.
543
544 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
545
546         * verify.c (mono_delegate_type_equal): Compare valuetypes using
547         mono_class_from_mono_type to avoid bad interactions with the dual representation
548         of the generic type definition.
549
550 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
553         get the MonoClass for the call context type as it might be a generic
554         instance.
555
556         Fixes #491483.
557
558 2009-04-21  Mark Probst  <mark.probst@gmail.com>
559
560         * object-internals.h: The Thread object has no execution_context
561         member anymore.
562
563         * threads.c, threadpool.c, threads-types.h: Accessor functions for
564         the execution context.
565
566         * appdomain.c: Bump corlib version.
567
568 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
569
570         * verify.c (do_newobj): Improve error message.
571
572 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
573
574         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
575         is nested in the filter block.
576
577         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
578         block is not fully nested.
579
580         Fixes #495656.
581
582 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
583
584         * verify.c (verify_type_compatibility_full): Compare MonoClass and
585         not MonoType to check for equality of valuetypes as the generic type
586         definition allows for two different encodings: the generic type definition
587         class or a generic instance over the GTD arguments.
588
589         Fixes #496175.
590
591 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
594
595         * verify.c (do_initobj): Improve error message.
596
597 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
598
599         * metadata-verify.c: Enable pe verification as the issue with #496453
600         is that the authenticode data directory have a different unspecified
601         format. Ignore it for now.
602
603         * pedump.c: Run the metadata verifier together with the IL verifier.
604
605         Fixes ##496453.
606
607 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
608
609         * metadata-verify.c: Temporarily disable pe verification due to #496453.
610
611 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * class.c (can_access_type): Check visibility against
614         the element type for pointers and arrays.
615
616         Fixes #496150.
617
618 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
619
620         * metadata-verify.c: Fix cli and table verification to use information
621         from the MonoImage. A lot of duplicated code got killed.
622
623 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
624
625
626         This patch starts to integrate the metadata verifier with the runtime code.
627
628         This patch causes major regression in functionality for the metadata verifier
629         as cli and table verification are disabled since they require to be ported to
630         use MonoImage information.
631
632         * image.c (do_mono_image_load): Split the code in this function
633         into mono_image_load_pe_data and mono_image_load_cli_data.
634         Add     care_about_pecoff parameter to not load pecoff data.
635         Call into the metadata verifier for pecoff and cli verification.
636
637         * image.c (mono_image_open_raw): New function that doesn't perform
638         any parsing of the image contents.
639         
640         The reason for the 3 new functions is to give pedump better control
641         into the interaction with the verifier.
642
643         * metadata-internals.h: Add new functions from image.c as part of the
644         internal mono API.
645
646         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
647         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
648         to make those functions work together with the runtime.
649
650         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
651         true if the image needs to be verified.
652
653         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
654
655         * pedump.c: Use new metadata verifier API.
656
657 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
658
659         * object.c (mono_install_vtable_trampoline): Make this receive a
660         trampoline creation function instead of trampoline, allowing the JIT
661         to use a different trampoline for each vtable.
662
663 2009-04-18  Mark Probst  <mark.probst@gmail.com>
664
665         * object.c (mono_raise_exception): Don't reset the thread abort
666         exception state here.
667
668 2009-04-18  Mark Probst  <mark.probst@gmail.com>
669
670         * icall-def.h: New icall for getting the thread abort exception
671         state for a thread.
672
673         * object.c, thread.c, object-internals.h: A thread's abort
674         exception state is now a GC handle.  To get the object it stands
675         for, we must move it into the current app domain, if it's
676         different than the one where it originated from.
677
678         * appdomain.c: Bump corlib version.
679
680         * domain.c, domain-internals.h: New function for setting the
681         domain and migrate the thread abort exception or not.
682
683 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
684
685         * metadata-verify.c: Add initial verification of the
686         field table.
687
688 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
689
690         * metadata-verify.c: Add a macro to conditionally enable
691         dumping of verification information. Add  make_coded_token
692         and search_sorted_table to enable search sorted tables
693         by a given coded token.
694
695 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
696
697         * metadata-verify.c: Add array mapping from table index
698         to description offset. Add get_col_offset and get_col_size
699         functions.
700
701 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
702
703         * metadata-verify.c: Add remaining table descriptions offsets.
704         Add remaining coded index descriptions.
705
706 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
707
708         * metadata-verify.c: Fixed constant table description.
709         Fixed calculation of HasCustomAttribute coded index size.
710         Fixed calculation of size for many table indexes. 
711
712 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
713
714         * pedump.c (dump_metadata): Dump table offset instead
715         of useless pointer in memory.
716
717 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
718
719         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
720
721 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
722
723         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
724         a missing of for interface types.
725
726 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
727
728         * metadata-verify.c (verify_pe_optional_header): Add comment of why
729         the code is commented.
730
731         * metadata-verify.c (verify_resources_table): Remove spurious printf
732         and don't fail if there are unmanaged resources. Gmcs generates a useless
733         one     for all assemblies - I bet it's some MS compatibility junk.
734
735 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
736
737         * metadata-verify.c (verify_typedef_table): Verify the extends field.
738
739         * metadata-verify.c (mono_image_verify): Add a is_corlib.
740
741         * verify-internals.h: Same.
742
743         * pedump.c: Fix for mono_image_verify new signature.
744
745 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
746
747         * metadata-verify.c (verify_typedef_table): Verify for some invalid
748         flags combinations.
749
750 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
751
752         * metadata-verify.c (verify_module_table): Ignore the generation field.
753
754 2009-04-15  Martin Baulig  <martin@ximian.com>
755
756         * debug-mono-symfile.c
757         (mono_debug_symfile_lookup_location): Don't print a warning for
758         unknown extended opcodes if they're within 0x40 and 0x7f.
759
760 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
761
762         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
763         invoke signatures returning an enum. Fixes #494847.
764
765 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
766
767         * metadata-verify.c: Initial code to verify the typedef table.
768
769 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * verify.c (mono_method_verify): Don't fail if an unconditional branch
772         with non empty stack happens before the beginning of a try block.
773
774         Fixes #494812.
775
776 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
777
778         * metadata-verify.c: Verify typename and typenamespace fields of
779         the typeref table.
780
781 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
782
783         * metadata-verify.c: Initial code to verify the typeref table.
784
785 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * verify.c (verify_delegate_compatibility): Fix error message.
788
789 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
790
791         * security-core-clr.c: Fix typo
792
793 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
794
795         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
796         a MonoGHashTable to keep its values alive.
797         (emit_marshal_boolean): Fix a warning.
798
799 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
800
801         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
802         not have any interface configured for IPv4/IPv6.
803
804 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
805
806         * assembly.c: fix typo in error message.
807
808 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
809
810         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
811         allocating the location holding the this argument to prevent
812         'too many root sets' errors.
813
814         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
815         to mark fields as special static.
816         (mono_field_static_get_value): Handle special static fields.
817         (mono_field_static_set_value): Ditto.
818
819         * class-internals.h (struct _MonoClassField): Document this.
820
821 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
822
823         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
824           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
825           case.  This will handle when managed code returns null to native code.
826
827         Code is contributed under MIT/X11 license.
828
829 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
830
831         * object.c (build_imt_slots): Changing a free to a g_free to match
832           the g_malloc0 in add_imt_builder_entry that allocated this memory.
833
834         Code is contributed under MIT/X11 license.
835
836 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
837
838         * marshal.c (emit_marshal_boolean): Adding code to ensure that
839           the correct TRUE value is passed through the marshaling layer.
840
841         Code is contributed under MIT/X11 license.
842
843 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
844
845         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
846         correctly. Fixes #492330.
847         
848         * marshal.c: Fix the embedding of object pointers into JITted code in
849         the native-to-managed wrappers by allocating some GC tracked memory, and
850         embedding the address of that.
851
852 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
853
854         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
855         pointers into the vtable.
856
857 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
858
859         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
860
861         * verify.c (verify_ldftn_delegate): Improve error message.
862
863 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
864
865         * reflection.c (my_mono_class_from_mono_type): Remove.
866
867 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
868
869         Prepare to reduce memory usage of owner-less generic parameters (1/n)
870         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
871         and constraints fields into ...
872         (MonoGenericParamInfo): ... this.
873         (mono_generic_param_info, mono_generic_container_get_param_info):
874         New accessors.
875         * class.c, debug-helpers.c, icall.c: Update to changes.
876         * metadata.c, reflection.c, verify.c: Likewise.
877
878 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
879
880         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
881
882         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
883         
884         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
885         booleans with sbytes.
886
887 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
888
889         * class.c (can_access_instantiation): Verify accesibility of element types
890         for arrays and pointers.
891
892         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
893
894         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
895
896         Fixes #493068.
897
898 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * verify.c (do_invoke_method): Improve error messages.
901
902 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
903
904         * verify.c:  Fixing the MSVC build.
905
906         Code is contributed under MIT/X11 license.
907
908 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
909
910         * security-core-clr.c: Simplify get_reflection_caller not to call
911         mono_method_get_last_managed (another stack walk) and adjust the
912         callers to handle a (should not happen) NULL return value.
913
914 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
915
916         Add accessors to some MonoGenericParam fields
917         * class-internals.h (mono_generic_param_owner): New accessor.
918         (mono_generic_param_num): Likewise.
919         (mono_type_get_generic_param_owner): New helper.
920         (mono_type_get_generic_param_num): New helper.
921         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
922
923 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
924
925         * class-internals.h (mono_generic_container_get_param): New wrapper.
926         * class.c, icall.c, metadata.c, verify.c: Use it.
927
928 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
929
930         Fix gtest-252.cs
931         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
932         the standard case/loop.  In particular, don't complain about
933         references to generic type definitions.
934
935 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
936
937         * debug-helpers.c (dis_one): Decode string arguments.
938
939 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
940
941         * pedump.c (dump_verify_info): Dump type name correctly.
942
943 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
944
945         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
946         are larger than code size.
947
948         This can happen in valid code if the try/catch block is not followed by any instruction
949         and do a backward branch on the leave instruction.
950
951         Fixes #492494.
952
953 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
954
955         * security-core-clr.c: Fix typo while comparing second method names
956         in can_avoid_corlib_reflection_delegate_optimization
957
958 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
959
960         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
961
962         Fixes #487738.
963
964 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
965
966         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
967         a MVAR using a class context.
968
969         Fixes #490335.
970
971 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
972
973         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
974
975         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
976
977         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
978         functions supplied by the JIT for the SGEN GC.
979
980         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
981         
982 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
983
984         monitor.c (mono_monitor_try_enter_internal):
985         Added calls to profile monitor contentions.
986         Also duplicated a small piece of code (the "get the monitor" logic)
987         from the fast path to the slow path, and changed the relevant goto
988         statements, so that monitor acquisition events can be emitted from the
989         slow path (this is by Paolo Molaro).
990
991 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
992
993         * profiler.c, profiler.h, profiler-private.h:
994         Added support for profiling monitor contentions.
995
996 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
997
998         * metadata-verify.c: Verify the modules table.
999
1000 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
1003         using the context of the method been verifier and not of the method been called.
1004
1005         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
1006         safely inflate generic types. 
1007
1008 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
1009
1010         * security-core-clr.c: Change the strategy for checking the 
1011         "reflection using delegates optimization" to avoid unneeded 
1012         attributes in multiple class libraries.
1013
1014 2009-04-02  Mark Probst  <mark.probst@gmail.com>
1015
1016         * sgen-gc.c: Remove object element in the disappearing link struct
1017         by storing the object pointer in the link.
1018
1019 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1020
1021         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
1022
1023 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1024
1025         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
1026
1027         * verify.c (mono_method_verify): Do proper bounds checking of exception
1028         clause ranges.
1029
1030 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * loader.c (mono_field_from_token): Don't crash if the field parent could
1033         not be decoded.
1034
1035 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1036
1037         * sgen-gc.c: Execute critical finalizers after ordinary
1038         finalizers.
1039
1040         * class-internals.h, domain.c: Add CriticalFinalizerObject to
1041         mono_defaults.
1042
1043 2009-03-31 Jb Evain <jbevain@novell.com>
1044
1045         * verify.c (do_ldstr): don't check if a string is in the user strings
1046         heap if the current image is dynamic.
1047
1048 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1049
1050         * sgen-gc.c: Wait until the last finalizer has executed when
1051         returning from WaitForPendingFinalizers.
1052
1053 2009-03-31  Martin Baulig  <martin@ximian.com>
1054
1055         * mono-debug-debugger.h (MonoDebuggerEvent): Add
1056         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
1057         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
1058         (mono_debugger_event_create_appdomain): New function.
1059         (mono_debugger_event_unload_appdomain): New function.
1060
1061         * appdomain.c (mono_domain_create_appdomain_internal): Call
1062         mono_debugger_event_create_appdomain().
1063
1064 2009-03-31  Martin Baulig  <martin@ximian.com>
1065
1066         * mono-debug-debugger.c
1067         (mono_debugger_register_class_init_callback): Also register the
1068         class init callback if the class is already initialized to make
1069         things work with shadow copied assemblies.
1070
1071 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
1072
1073         * security-core-clr.c
1074         (mono_security_core_clr_ensure_reflection_access_field): Let 
1075         critical code access the field (just like we do for methods). Use
1076         check_field_access helper.
1077         (mono_security_core_clr_ensure_reflection_access_method): Use 
1078         check_field_access helper.
1079
1080 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1081
1082         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
1083         call the run-finalize function directly.
1084
1085         * gc.c, gc-internal.h: Make run_finalize() non-static.
1086
1087 2009-03-31  Mark Probst  <mark.probst@gmail.com>
1088
1089         * sgen-gc.c: Use a separate struct for disappearing links.
1090
1091 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
1092
1093         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
1094         * MaxIOVectorLength enabled, just ignore them.
1095         Fixes bug #349688.
1096
1097 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1098
1099         * metadata-verify.c: Fix eglib build.
1100
1101 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
1102
1103         * threads-types.h: Fix the win32 build.
1104
1105 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
1106
1107         * class.c: move coreclr inheritance/override checks to 
1108         security-core.clr.c
1109         * security-core.clr.c|h: add code from class.c with additional
1110         documentation. Fix override check when the method is not critical.
1111
1112 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
1113
1114         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
1115         (match_class): Ditto.
1116
1117 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1118
1119         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
1120
1121         * metadata-verify.c: Implement table layout row size calculation. Verify
1122         the total size of the tables.
1123
1124 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
1125
1126         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
1127
1128 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1129
1130         * appdomain.c:
1131         * console-io.[ch]: added new mono_console_init() to make sure that
1132         file descriptors 0, 1 and 2 are opened.
1133         Bug #489019 fixed.
1134
1135 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
1136
1137         * appdomain.h: Export a new callback type and a new function to
1138         set this callback. This allow a mono host to provide it's own
1139         definition for "platform code".
1140         * metadata-internals.h: Add a core_clr_platform_code flag on 
1141         _MonoImage to (cache and) know if it is representing platform 
1142         code.
1143         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
1144         on platform code images.
1145         * security-core-clr.c|h 
1146         (mono_security_set_core_clr_platform_callback): Allow the host
1147         to provide it's own platform check definition.
1148         (mono_security_core_clr_determine_platform_image): Detect if an 
1149         image is platform code (using the specified callback).
1150         (mono_security_core_clr_is_platform_image): Return cached value 
1151         for platform code.
1152
1153 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * threads.c (mono_create_thread): New helper function to wrap CreateThread
1156         which has different parameter types for the 'tid' argument in windows and
1157         the io-layer.
1158
1159         * appdomain.c attach.c threads.c: Use the new helper.
1160
1161 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1162
1163         * metadata-verify.c: Verify valid table bits.
1164
1165 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
1166
1167         * metadata-verify.c (verify_metadata_header): Store size in the size field.
1168
1169         * metadata-verify.c: Add initial table schema verification.
1170
1171 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
1174         obtain the refclass argument needed by mono_param_get_objects (). Fixes
1175         #488383.
1176
1177         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
1178
1179         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
1180
1181 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
1182
1183         * security-core-clr.c: Add/update documentation
1184
1185 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
1186
1187         * marshal.c (emit_marshal_object): Generate code to throw an exception
1188         instead of throwing it. Fixes #488670.
1189
1190 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
1191
1192         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
1193         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
1194         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
1195         and add a call to mono_security_core_clr_ensure_delegate_creation
1196         to do the extra checks required by CoreCLR.
1197         * security-core-clr.c|h: Add function to check delegate creation,
1198         both in the binding and accessibility, under CoreCLR.
1199
1200 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
1201
1202         * reflection.c (mono_reflection_create_dynamic_method): when 
1203         coreclr is enabled make sure that every resolved object are
1204         checked (e.g. field and method access).
1205         * security-core-clr.c|h: Add function to check objects resolved
1206         when a dynamic method is created.
1207
1208 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1209
1210         * metadata-verify.c: Cache directory rva translations.
1211
1212         * metadata-verify.c: Add cli-header and streams verification.
1213
1214 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1215
1216         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
1217         the wrong offset (8 instead of 6).
1218
1219 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
1220
1221         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
1222         methods, return the native function address itself. Fixes
1223         #487758.
1224
1225 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
1226
1227         * console-io.c: some of the values for control characters might not be
1228         present.
1229
1230 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
1231
1232         * exception.c|h: Add helpers to create [Field|Method]AccessException
1233         * icall.c: Add required coreclr check calls for field reflection.
1234         Move the existing (method) check logic into security-core-clr.c
1235         * security-core-clr.c: Add functions to check if the access of a
1236         field or method is allowed when reflecting under coreclr. This is
1237         mostly done using a stack walk to find the "real" caller: i.e. the
1238         code that is calling the reflection
1239
1240 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * gc-internal.h: Change location of gc_wrapper.h
1243
1244 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
1245
1246         * class.c: Simplification to coreclr checks for overrides that
1247         makes it easier to set breakpoints.
1248
1249 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
1250
1251         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
1252         mono_security_core_clr_method_level): Avoid potential 
1253         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
1254         user/application code) and make it easier to set breakpoints
1255
1256 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258         * metadata-verify.c: Reject cli header tables that mono don't handle.
1259
1260 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * pedump.c: Fix CLI header dumping.
1263
1264 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
1265
1266         * metadata-verify.c: More CLI header verification.
1267
1268 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
1271
1272 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1273
1274         * metadata-verify.c: Initial verification of the CLI header.
1275
1276 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
1277
1278         * metadata-verify.c (verify_resources_table): Fix verification of zero
1279         sized resource section and id entries count.
1280
1281 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * icall.c: Handle user types in many Type icalls. Fixes #486303.
1284
1285 2009-03-17  Jb Evain  <jbevain@novell.com>
1286
1287         * profiler.c: call mono_gc_base_init from mono_profiler_load.
1288
1289 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
1292         (mono_gc_make_descr_for_array): Ditto.
1293
1294 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1295
1296         * verify.c (mono_verifier_is_class_full_trust): Add support for
1297         CoreCLR security mode where trusted assemblies are defined as
1298         "platform code".
1299
1300 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1301
1302         * metadata-verify.c: Add minimal PECOFF resource verification.
1303
1304 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1305
1306         * metadata-verify.c: Be less restrictive with some coff fields.
1307
1308 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1309
1310         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
1311         params as boxed values on stack. Fixes #485706.
1312
1313 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1314
1315         * console-io.c: the termios values may vary in different flavors of unix.
1316
1317 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
1318
1319         * console-io.[ch]: return the entire set of control characters when
1320         initializing the terminal.
1321         * appdomain.c: bump corlib version.
1322
1323 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
1324
1325         * mono-perfcounters.c: added support for in-process custom
1326         performance counters.
1327
1328 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1329
1330         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
1331
1332 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * metadata-verify.c: Verify the data pointed by the import table. 
1335
1336 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * metadata-verify.c (load_data_directories): Store data
1339         directory contents.
1340
1341         * metadata-verify.c: Verify the import table. 
1342
1343 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1344
1345         * metadata-verify.c: Verify data directories.
1346
1347 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
1348
1349         * metadata-verify.c: Check section header flags.
1350
1351 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
1352
1353         * appdomain.c: if the assembly name is a shadow-copied file, return
1354         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
1355         in mono_make_shadow_copy.
1356         * icall.c: if the assembly name is a shadow-copied file, replace it
1357         with the original assembly path.
1358
1359         Bug #484244 fixed. NUnit tests for corlib can be run without
1360         --noshadow now.
1361
1362 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
1365         entries when the table is reallocated.
1366
1367         * icall.c: Allocate the memory used by the mono_ptr_array macros using
1368         mono_gc_alloc_fixed () since it contains GC refs.
1369
1370 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
1371
1372         * reflection.c (ensure_complete_type): New helper function to call
1373         type resolve handlers for unfinished dynamic types.
1374         (resolve_object): Call it for MonoClassFields. Fixes #483852.
1375
1376 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
1379         #483247.
1380
1381 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
1382
1383         * appdomain.c (get_shadow_assembly_location): Fix memleak.
1384
1385 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
1388         between GCHandles of type WeakTrackResurrection and the objects they
1389         point to.
1390
1391         * gc.c: Partly implement the sematics of GCHandles of type 
1392         WeakTrackResurrection: these handles should only be cleared after the
1393         finalizer of the object they are pointing to has ran.
1394
1395 2009-03-06  Mark Probst  <mark.probst@gmail.com>
1396
1397         * icall.c: Partially revert r126631 because using the jump
1398         trampolines for generic shared methods makes it superfluous.
1399
1400 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * threads.c (handle_store): Create the 'threads' hash table with the proper
1403         MONO_HASH_VALUE_GC type.
1404
1405 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
1406
1407         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
1408         FIRST_GC_TRACKED.
1409
1410         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
1411         and LAST_GC_TRACKED as a GC root.
1412
1413         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
1414
1415         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
1416         the static data even if it consists of 1 reference.
1417
1418         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
1419         if there is a GC descriptor.
1420
1421         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
1422         instead of through the GC since they contain no object references.
1423
1424 2009-03-05  Mark Probst  <mark.probst@gmail.com>
1425
1426         * generic-sharing.c (instantiate_other_info): Always return a jump
1427         trampoline for method code.
1428
1429 2009-03-05  Marek Habersack  <mhabersack@novell.com>
1430
1431         * culture-info-tables.h: generated to include the en-tt culture.
1432
1433 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1434
1435         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
1436         capture the thread context.
1437
1438         * object.c (mono_async_result_new): Cache the invoke wrappers to
1439         ExecutionContext::Capture.
1440
1441 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
1442
1443         * marshal.h: Add a prototype for what mono_compile_method returns
1444         for invoke wrappers.
1445
1446         * gc.c: Use the new prototype declaration.
1447
1448 2009-03-04  Geoff Norton  <gnorton@novell.com>
1449
1450         * boehm-gc.c: Add some MONO_LOG tracing for the GC
1451         * gc-internal.h:
1452         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
1453
1454 2009-03-04  Martin Baulig  <martin@ximian.com>
1455
1456         * mono-debug.h
1457         (mono_debugger_runtime_invoke): Removed.
1458
1459         * mono-debug-debugger.c
1460         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
1461
1462 2009-03-02  Martin Baulig  <martin@ximian.com>
1463
1464         * mono-debug.h
1465         (mono_debugger_unhandled_exception): Removed.
1466         (mono_debugger_handle_exception): Removed.
1467         (mono_debugger_throw_exception): Removed.
1468
1469         * mono-debug.c
1470         (mono_debug_debugger_version): Bump to 5.
1471
1472         * mono-debug-debugger.c: Moved the exception handling code to
1473         ../mini/debug-mini.c
1474
1475 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
1478         finalize_objects_hash.
1479
1480         * gc.c: Use the separate lock to access the finalize_objects_hash field.
1481         
1482         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
1483         field.
1484
1485         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
1486         cache.
1487
1488         * image.c (mono_image_close): Free it.
1489         
1490         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
1491         allowing a creation of a wrapper which invokes its method using a CALLVIRT
1492         on the this argument.
1493
1494         * gc.c (run_finalize): Optimize the calling of the finalizers.
1495
1496 2009-03-03  Martin Baulig  <martin@ximian.com>
1497
1498         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
1499         of the `MonoGenericInst' changes.
1500
1501 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
1502
1503         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
1504         mono_array_class_get_cached to reduce locking contention. Extract
1505         a domain var.
1506
1507         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
1508         intermediary managed arrays. Use caching version of mono_array_new
1509         to allocate the result array.
1510
1511         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
1512
1513         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
1514
1515         * locales.c (create_names_array_idx):  Use mono_array_new_cached
1516         to reduce locking contention.
1517
1518 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
1519                 
1520         * object.c (mono_method_add_generic_virtual_invocation): Put back the
1521         thunk builder code for the non-interface case.
1522
1523 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
1524
1525         * object.c (get_generic_virtual_entries): New helper function to collect
1526         the virtual generic method instances which need to be added to an IMT
1527         thunk.
1528         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
1529         Instead of creating a new IMT thunk, reset the vtable slot to the
1530         trampoline, the thunk will be created the next time the trampoline is called.
1531         (build_imt_slots): Add support for virtual generic methods in interfaces by
1532         adding to the IMT thunk all the methods registered using 
1533         mono_method_add_generic_virtual_invocation ().
1534
1535         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
1536         (struct _MonoIMTCheckItem): Ditto.
1537
1538         * object.c (mono_method_add_generic_virtual_invocation): Take a
1539         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
1540         the IMT thunk to include all items.
1541         
1542         * object.c (mono_class_create_runtime_vtable): Add a missing
1543         mono_loader_unlock ().
1544
1545 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1546
1547         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1548
1549         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
1550
1551 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * object-internals.h: Rename _MonoReflectionEvent to
1554         MonoReflectionMonoEvent so it reflects the right managed type.
1555         Add a MonoReflectionEvent that correctly represents System.EventInfo.
1556
1557         * icall.c:
1558         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
1559         type.
1560
1561 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
1564         intermediary managed arrays. Use caching version of mono_array_new
1565         to allocate the result array.
1566
1567 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1568
1569         * reflection.c: Use cached version of mono_array_new alongside
1570         the mono_reflection_get_custom_attrs_by_type call path.
1571
1572 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1573
1574         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
1575         intermediary managed arrays. Use caching version of mono_array_new
1576         to allocate the result array.
1577
1578         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
1579
1580 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
1581
1582         * icall.c: Add small implementation of a growable stack bound array.
1583
1584         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
1585
1586         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
1587         intermediary managed arrays. Use caching version of mono_array_new
1588         to allocate the result array.
1589
1590 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
1591
1592         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
1593         helps Enum::CompareTo to be implemented without reboxing all enums
1594         to their underlying type.
1595 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
1598         since it acquires a global lock leading to scalability problems.
1599
1600         * profiler.c: Make the stat profiler work with multiple appdomains, this
1601         currently only works when no appdomains are unloaded.
1602
1603 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1604
1605         * appdomain.c: make the check to avoid copying when the assembly is
1606         already shadow copied actually work.
1607
1608 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1611
1612         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
1613         changes to the managed side.
1614
1615 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
1618         classes + a separate lock for it, as it is used frequently at runtime, not
1619         just during metadata loading/JIT compilation.
1620
1621         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
1622         for szarrays.
1623         
1624         * object-internals.h (mono_class_from_name_cached): New macro to cache
1625         the results of the lookup locally without having to declare a static
1626         variable to hold it.
1627         (mono_class_get_field_from_name_cached): Ditto.
1628         (mono_array_class_get_cached): Ditto.
1629
1630         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
1631         the new macros.
1632         
1633         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
1634         slower search in metadata.
1635
1636         * pedump.c: Fix a warning.
1637
1638 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
1639
1640         * reflection.c (encode_locals): Add checks for user types.
1641         (method_encode_clauses): Ditto.
1642         (method_encode_code): Ditto.
1643         (mono_image_create_token): Ditto.
1644
1645         * object-internals.h: Change the type of more fields from MonoReflectionType*
1646         to MonoObject*.
1647
1648 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
1649
1650         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
1651         the a thread does not suspend within 100ms.
1652
1653         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
1654         in addition to StopRequested as well.
1655
1656         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
1657
1658         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
1659         search the method_hash before inserting a new entry, to avoid crashes when
1660         the same method is inserted multiple times, causing the old 
1661         MonoDebugMethodInfo structure to be freed by the value dtor function.
1662
1663 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
1664
1665         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
1666         SO_EXLUSIVEADDRUSE where available.
1667
1668 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
1671         runtime invoke wrappers, this time it is string ctor wrappers, which
1672         pass a dummy string as 'this' instead of their obj argument. Fixes
1673         #478473.
1674
1675 2009-02-21  Jb Evain  <jbevain@novell.com>
1676
1677         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
1678         only get create_culture once.
1679
1680 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * reflection.c (mono_reflection_setup_internal_class): Move the user type
1683         check before the locking.
1684         
1685         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
1686         (mono_reflection_create_runtime_class): Ditto.
1687         (mono_reflection_sighelper_get_signature_local): Ditto.
1688         (mono_reflection_sighelper_get_signature_field): Ditto.
1689
1690         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
1691         is a System.MonoType object or similar.
1692         (monotype_cast): New helper function to cast a MonoObject to a 
1693         MonoReflectionType object.
1694
1695         * object-internals.h: Change MonoReflectionType* members in structures to
1696         MonoObject* members to force the usage of the monotype_cast () function.
1697
1698         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
1699         structures/arrays. This causes us to assert instead of crashing when 
1700         instances of user defined subclasses of System.Type are encountered.
1701
1702 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1703
1704         * cil-coff.h:
1705         * icall-def.h:
1706         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
1707         win32 resource loaded from a PE file.
1708
1709         * image.c: fix mono_image_lookup_resource.
1710
1711 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
1712
1713         * icall-def.h:
1714         * threads-types.h:
1715         * threads.c: added internal call for WaitHandle.SignalAndWait.
1716
1717 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
1718
1719         * cominterop.c : Adding cominterop_type_from_handle and 
1720           registering it as an icall.  Replacing all references
1721           to type_from_handle.
1722
1723         Code is contributed under MIT/X11 license.
1724
1725 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1726
1727         * Makefile.am: Add lock-tracer.h and lock-trace.c.
1728
1729         * appdomain.c: Call the tracer init function.
1730
1731         * domain-internals.h: Enable the tracer for the domain locks.
1732
1733         * image.c: Enable the tracer for image locks.
1734
1735         * loader.c: Enable the trace for the loader lock.
1736
1737         * lock-tracer.h:
1738         * lock-tracer.c: Initial implementation of the lock trace utility.
1739         The tracer requires a compile time define to be enabled and a env var
1740         to be enabled at runtime.
1741
1742 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1743
1744         * domain.c (mono_domain_code_foreach): Improve documentation.
1745
1746 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
1747
1748         * appdomain.c:
1749         * generic-sharing.c:
1750         * object.c:
1751         * reflection.c:  Adjust locking order to the new semantics where the loader lock
1752         comes first.
1753
1754 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
1755
1756         * domain.c: Add mono_domain_code_* functions that perform locking
1757         around the domain codeman.
1758
1759         * domain-internals.h: Export those functions.
1760
1761         * object.c: Use new functions instead of acquiring the domain lock.
1762
1763 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
1766         delegate. Fixes #477396.
1767
1768 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * reflection.c (create_custom_attr): Get rid of alloca.
1771
1772 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
1773
1774         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
1775           Adding exception handling for all CCW calls.
1776
1777         Code is contributed under MIT/X11 license.
1778
1779 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
1782
1783         * marshal.c (emit_marshal_boolean): Add null checks to the new 
1784         native->managed marshalling code. Fixes #476247.
1785
1786 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * class.c (mono_class_get_vtable_entry): Move the addition of
1789         static rgctx invoke wrappers for vtable methods here, this simplifies
1790         a lot of code and causes fewer rgctx wrappers to be created.
1791
1792         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
1793         name of the statistics to begin with an uppercase.
1794
1795 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1796
1797         * reflection.c: Revert previous change as it breaks the build.
1798         
1799 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1800
1801         * verify.c: Properly handle SZARRAY element type.
1802
1803         Fixes #474271.
1804
1805 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
1806
1807         * reflection.c (mono_image_create_method_token): Correctly encode
1808         MethodDef MemberRefParent token.
1809
1810         Fixes #472845.
1811
1812 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * image.c (mono_image_close): Delete the critical section before
1815         freeing the memory holding it.
1816
1817 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1818
1819         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
1820         Fixes #476257.
1821
1822 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1823
1824         * pedump.c (main): Call mono_marshal_init so pedump
1825         doesn't crash.
1826
1827 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1828
1829         * loader.c (method_from_memberref): Properly fix #474271 and
1830         don't break the runtime bad.
1831
1832 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
1835         (mono_domain_alloc0): Ditto.
1836
1837 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1838
1839         * loader.c (method_from_memberref): Don't abort if the array
1840         method is not found. A regular loader failure is more informative
1841         and correct.
1842
1843         Fixes #474271.
1844
1845 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         *loader.c: Guard MonoImage::method_cache/methodref_cache
1848         using the image lock instead of the loader lock.
1849
1850         * metadata.h: Add comments about which fields are protected by
1851         the image lock.
1852
1853 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
1856
1857         * generic-sharing.c (mono_method_construct_object_context): Remove the
1858         wrapper_type == NONE assert, it is not needed.
1859
1860 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * reflection.c (clear_cached_object): New helper function.
1863         (mono_method_clear_object): New function to clear the cached reflection
1864         objects for a dynamic method.
1865
1866         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
1867         Partly fixes # 463323.
1868         
1869 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1870
1871         * class.c:
1872         * loader.c:
1873         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
1874
1875 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
1876
1877         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
1878         take the image lock instead of the loader lock.
1879
1880         * metadata-internals.h: Export new functions.
1881
1882 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1883
1884         * domain.c (app_config_parse): Remove another use of stat that is
1885         not necessary as g_file_get_contents already does the presence
1886         check. 
1887
1888 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1889
1890         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
1891
1892         * marshal.c: Move the bstr handling code to cominterop.c.
1893
1894         * marshal.c: Remove some COM interop code missed previously.
1895
1896 2009-02-12  Miguel de Icaza  <miguel@novell.com>
1897
1898         More Paolo patches from the Wii port:
1899         
1900         * security.c: Remove ves_icall_System_Environment_get_UserName
1901         from here.
1902
1903         * icall.c: And put ves_icall_System_Environment_get_UserName
1904         here. 
1905
1906         * appdomain.c (mono_set_private_bin_path_from_config): Remove
1907         redundant call to stat that was only used to test for the file
1908         existence.   Patch from Paolo.
1909
1910         * gc.c (run_finalize): If COM is disabled, do not link in
1911         mono_marshal_free_ccw.
1912
1913         * generic-sharing.c: Use alloca.h here as well.
1914
1915 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
1916
1917         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
1918
1919 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * cominterop.c cominterop.h: New files.
1922
1923         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
1924         function/typedefs which are needed by cominterop.c global.
1925
1926 2009-02-12  Mark Probst  <mark.probst@gmail.com>
1927
1928         * generic-sharing.c: Don't take the loader lock to guard image
1929         mempool allocs.
1930
1931 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1932
1933         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
1934         called without the loader lock which is required to guard MonoImage:tokens.
1935
1936 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1937
1938         * class.c:
1939         * metadata.c:
1940         * method-builder.c:
1941         * marshal.c:
1942         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
1943
1944 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1945
1946         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1947         Rework the code to use regular mono_image_alloc/0.
1948
1949         * loader.c: Rework the code to use regular mono_image_alloc/0.
1950
1951         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
1952
1953 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
1954
1955         * object-internals.h : Fixing a typo in the 
1956           MonoReflectionComVisibleAttribute struct.
1957
1958         * marshal.c (cominterop_com_visible): Check the implemented 
1959           interfaces for ComImport.
1960
1961         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
1962           assume that bools should be treated as VARIANTBOOLs.
1963
1964         * marshal.c (emit_marshal_boolean): Adding cases for 
1965           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
1966
1967         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
1968           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
1969
1970         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
1971           should be treated as VARIANTBOOLs.    
1972
1973         Code is contributed under MIT/X11 license.
1974
1975 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
1978         allocation with the image lock.
1979
1980 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1981
1982         This patch is the last of a series to remove explicit reference of MonoImage::mempool
1983         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
1984
1985         * object.c: Add mono_string_to_utf8_image.
1986
1987         * object-internals.h: Export mono_string_to_utf8_image.
1988
1989         * reflection.c: Rework all explicit references to the the image mempool to go thought
1990         the mono_image_alloc set of functions.
1991
1992 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
1993
1994         This patch is the third of a series to remove explicit reference of MonoImage::mempool
1995         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
1996         and generics-sharing.c.
1997
1998         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
1999         as first argument. Note that this function remains broken as it doesn't perform locking around the
2000         mempool allocation.
2001
2002         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
2003
2004         * image.c: Add g_slist_append_image.
2005
2006         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
2007         the supplied image for allocation. Move code into mono_metadata_field_info_full.
2008
2009         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
2010         Fix all related code to do the same.
2011
2012         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
2013
2014         * metadata-internals.h: Fix the signatures.
2015
2016 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
2017
2018         This patch is the second of a series to remove explicit reference of MonoImage::mempool
2019         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
2020         and similar to work using MonoImage.
2021
2022         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
2023         MonoMemPool.
2024
2025         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
2026
2027         * class.c (mono_metadata_signature_deep_dup): Same.
2028
2029         * class.c (inflate_generic_type): Same.
2030
2031         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
2032
2033         * metadata.c (mono_metadata_signature_dup_full): Same.
2034
2035         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
2036         mono_metadata_signature_dup_full.
2037
2038         * metadata.c (mono_metadata_type_dup): Same.
2039
2040         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
2041
2042         * reflection.c: Same.
2043
2044         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
2045
2046         * metadata-internals.h: Fix the signatures.
2047
2048         * class-internals.h: Same.
2049
2050 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2051
2052         This patch is the first of a series to remove explicit reference of MonoImage::mempool
2053         and use mono_image_alloc set of functions instead. 
2054
2055         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
2056         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
2057         of a MonoMemPool.
2058
2059         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
2060
2061         * class.c (g_list_prepend_mempool): Removed.
2062
2063         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
2064
2065         * image.c: Add g_list_prepend_image.
2066
2067         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
2068
2069         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
2070
2071
2072 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2073
2074         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
2075         mono_image_unlock.
2076
2077         * image.c (mono_image_init): Init the lock field.
2078  
2079         * image.c (mono_image_init): Cleanup the lock field.
2080
2081         * image.c: Add mono_image_(un)lock functions.
2082
2083 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2084
2085         * class.c, class-internals.h: mono_method_get_context_general()
2086         combines the functionality of mono_method_get_context() and
2087         mini_method_get_context().
2088
2089         * generic-sharing.c, domain-internals.h:
2090         mono_method_construct_object_context() and
2091         mono_domain_lookup_shared_generic() moved from mini.
2092
2093         * icall.c (ves_icall_InternalInvoke): Handle the case where the
2094         method doesn't have the correct instantiation because it's shared
2095         generic code.  Fixes #473999.
2096
2097 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
2100
2101         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
2102         
2103 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
2104
2105         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
2106
2107         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
2108
2109         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
2110         and recheck the cache for dups after it.
2111
2112         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
2113
2114         Fixes one of the deadlocks found in #473150.
2115
2116 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
2117
2118         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
2119           For Win32, add additional break conditions for accept.
2120
2121         Code is contributed under MIT/X11 license.
2122
2123 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2124
2125         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
2126         lazily initialize the native wrapper cache.
2127         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
2128         cache, since they are different from the normal wrappers.
2129
2130         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
2131
2132         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
2133         AOT compiled native wrappers.
2134
2135 2009-02-09  Geoff Norton  <gnorton@novell.com>
2136
2137         * appdomain.h:
2138         * security-core-clr.c: Allow enabling core-clr from the embedding
2139         API.
2140
2141 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2142
2143         * socket-io.c: when requesting all the local ips, if there are no
2144         interfaces up and running, MS returns 127.0.0.1.
2145
2146 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2147
2148         * mono-perfcounters-def.h: processor time is an inverse time.
2149         Fixes bug #468625.
2150
2151 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
2152
2153         * socket-io.c: an empty host name returns the list of local IPs.
2154         Fixes bug #386637 part 1/2.
2155
2156 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * verify.c (mono_class_interface_implements_interface): Call
2159         mono_class_setup_interfaces ().
2160         (merge_stacks): Ditto.
2161
2162 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2163
2164         * class.c (mono_class_setup_interfaces): New function to lazily initalize
2165         klass->interfaces.
2166         (mono_generic_class_get_class): Don't initalize klass->interfaces.
2167         (mono_generic_class_get_class): Ditto.
2168
2169 2009-02-06  U-QUACK\miguel  <miguel@quack>
2170
2171         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
2172         they live in security.c
2173
2174         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
2175         another bit from Paolo's code.
2176
2177 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * object.c (build_imt_slots): Add a small optimization to avoid inflating
2180         methods which will be discarded by add_imt_builder_entry ().
2181
2182         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
2183         need to be boxed.
2184
2185         * loader.c: Add a statistics for the size of the memberref signature cache.
2186         
2187         * loader.c (find_cached_memberref_sig): New helper function.
2188         (cache_memberref_sig): Ditto.
2189
2190         * loader.c: Cache the result of parsing memberref signatures, since otherwise
2191         they will be parsed again for every generic instantiation, leading to unbounded
2192         memory growth.
2193
2194 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
2197         parameters of generic methods.
2198
2199         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
2200         after the original method is copied to the inflated method.
2201         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
2202
2203         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
2204         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
2205
2206         * class.c metadata.c: Update after the changes above.
2207
2208 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2209
2210         * metadata-verify.c: Simplified error handling and added
2211         section table validation.
2212
2213 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2214
2215         * class-internals.h (MonoClassExt): New structure containing rarely used
2216         fields of MonoClass.
2217         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
2218         through a new 'ext' field.
2219
2220         * class.c (mono_class_alloc_ext): New helper function to allocate 
2221         class->ext.
2222
2223         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
2224
2225 2009-02-05  Mark Probst  <mark.probst@gmail.com>
2226
2227         * object.c (mono_object_get_virtual_method): Properly inflate
2228         generic methods.  Fixes #472692.
2229
2230 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
2231
2232         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
2233         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
2234         for the parent type, the created type must be ready to be used on a generic
2235         instantiation.
2236         We fill this_arg/byval_arg if the parent is a generic instance to make sure
2237         we won't have duplicated entries in generic_inst_cache.
2238
2239         Fixes #469553.
2240
2241 2009-02-05  Miguel De Icaza  <miguel@novell.com>
2242
2243         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
2244         replace with plain BSD per the comments on the bug MONO77637.
2245
2246 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * class.c (mono_class_get_generic_class): New accessor function.
2249         (mono_class_get_generic_container): Ditto.
2250
2251         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
2252         fields, similar to the ones in MonoMethod.
2253
2254         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
2255         (mono_class_create_from_typedef): Set klass->is_generic if needed.
2256
2257         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
2258         
2259         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
2260         the same information as element_class->byval_arg.
2261
2262         * class.c reflection.c: Remove references to class->byval_arg.
2263
2264         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
2265         klass->enum_basetype directly.
2266
2267         * verify.c metadata.c object.c icall.c reflection.c: Use 
2268         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
2269         directly.
2270
2271 2009-02-04  Miguel de Icaza  <miguel@novell.com>
2272
2273         * icall-def.h: Remove internal calls for sockets when
2274         DISABLE_SOCKET is defined, file system writing features when the
2275         OS only support reading and not writing data and Policy support if
2276         the Policy is disabled.
2277         
2278         * image.c (do_mono_image_open): Apply Paolo's patches for using
2279         mono_file_map_ APIs here.
2280
2281         * assembly.c: Add support for platforms to avoid prefix
2282         auto-detection. 
2283
2284 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
2285
2286         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
2287         warning.
2288
2289         * class.c (mono_class_inflate_generic_class): New helper function.
2290
2291         * class.c: Use mono_class_inflate_generic_class in a few places. Add
2292         statistics for inflated methods/classes.
2293
2294         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
2295
2296         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
2297         the call is made from Delegate.CreateDelegate () for the invoke method of
2298         a delegate.
2299
2300         * loader.c: Add a statistics for the memory occupied by inflated signatures.
2301
2302         * metadata.c (mono_metadata_signature_size): New helper function.
2303
2304         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
2305         generic instances.
2306
2307         * metadata.c (inflated_method_in_image): Avoid calling 
2308         mono_method_signature () if the method does not already have a signature.
2309
2310 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2311
2312         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
2313         valuetype is compatible with target type, check by inheritance as a
2314         VT is not really compatible with System.ValueType, for example.
2315
2316         * verify.c (do_invoke_method): Improve error message.
2317
2318         * verify.c (do_box_value): If boxing a nullable, use the type argument
2319         on stack instead.
2320
2321         * verify.c (do_newobj): Improve error message.  
2322
2323         Fixes #469549.
2324
2325 2009-02-03  Miguel de Icaza  <miguel@novell.com>
2326
2327         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
2328
2329 2009-02-03  Mark Probst  <mark.probst@gmail.com>
2330
2331         * generic-sharing.c: Don't hold domain lock when calling
2332         instantiate_other_info().  Fixes #471958.
2333
2334         * domain-internals.h, loader.c: Describe locking policy of domain
2335         lock vs loader lock.
2336
2337 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2338
2339         * verify.c (mono_delegate_signature_equal): Make it possible to check
2340         first-arg-bound delegates to static method.
2341
2342         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
2343         static methods with the first arg bound.
2344
2345         Fixes #469529.
2346
2347 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2348
2349         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
2350         errors.
2351
2352         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
2353         under strict mode. Any type, when boxed can be seen as a reference type.
2354
2355         Fixes #469528.
2356
2357 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
2358
2359         * object.h: The lower bound of an array is a signed integer value.
2360         Introduce mono_array_lower_bound_t typedef. It should be used instead of
2361         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
2362
2363         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
2364         calculate the upper bound.
2365         
2366         Fixes #471252.
2367
2368 2009-02-02  Miguel de Icaza  <miguel@novell.com>
2369
2370         From Paolo's work, refactored, cleared up:
2371         
2372         * threadpool.c, icall.c: ifdef code that requires a working socket
2373         stack.
2374
2375         * metadata.c (mono_metadata_field_info): Do not attempt to return
2376         a value from a function declared as void.
2377
2378         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
2379         from the console stack.
2380
2381         * assembly.c: use strrchr instead of rindex.
2382
2383         * class.c, object.c, marshal.c, icall.c, reflection.c: include
2384         alloca.h on systems that have it.
2385
2386         * environment.c: Avoid code that uses stuff from
2387         HAVE_SYS_UTSNAME_H
2388         
2389         * appdomain.c: Include sys/time.h.
2390
2391         * console-io.c: include sys/ioctl.h if it is available.
2392
2393 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
2396
2397         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
2398         the method builder.
2399
2400         * marshal.c: Set mb->skip_visibility instead of setting it on the method
2401         after it was created and cached, as the later is not thread safe.
2402         
2403 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
2406         called while the debugging module is not initialized. Fixes #471669.
2407
2408 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
2411
2412         Fixes #471255.
2413
2414 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2415
2416         * generic-sharing.c (lookup_or_register_other_info): Make sure the
2417         loader lock is not taken while the templates lock is held.  Fixes
2418         #471089.
2419
2420 2009-02-02  Mark Probst  <mark.probst@gmail.com>
2421
2422         * metadata.c (type_in_image): Added a check to fix a monodis
2423         crash.
2424
2425 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
2428         nullable arguments.
2429
2430         * object.c (mono_runtime_invoke_array): Ditto.
2431         
2432         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
2433         freeing wrappers of dynamic methods.
2434
2435         * loader.c (mono_free_method): Call it. Fixes #463323.
2436         
2437         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
2438         methods taking vtype/byref arguments, to fix yet another bug caused by
2439         the sharing of runtime invoke wrappers. Partly fixes #471259.
2440
2441 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * debug-mono-symfile.c (check_line): Return NULL instead of returning
2444         <first file in file table>:1 when the IL offset does not have an associated
2445         line number.
2446
2447 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * mono-debug.c (mono_debug_lookup_locals): New function to return local
2450         variable info for a method.
2451
2452         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
2453         
2454 2009-01-30  Jb Evain  <jbevain@novell.com>
2455
2456         * pedump.c: reuse code from monodis to make sure pedump honors
2457         MONO_PATH, which is needed to verify net_2_1 assemblies.
2458
2459 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
2462         there is no line number info.
2463
2464 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
2465
2466         Avoid some MonoType allocations
2467         * reflection.c (mono_reflection_initialize_generic_parameter):
2468         Reuse MonoType from param->pklass rather than allocating one.
2469         (mono_dynamic_image_free): Update to changes.
2470
2471 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2472
2473         Rearrange some code to improve consistency
2474         * reflection.c (mono_reflection_setup_generic_class): Move body ...
2475         (mono_reflection_initialize_generic_parameter): ... here.
2476
2477 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
2480         with type constraints as an experiment.
2481
2482         * boehm-gc.c (on_gc_notification): Update mono_stats.
2483
2484 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
2485
2486         Avoid some allocations
2487         * class-internals.h (_MonoGenericInst::type_argv): Convert from
2488         pointer to tail array to avoid extra allocation.
2489         * metadata.c (free_generic_inst): Update to changes.
2490         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
2491         on-stack struct.
2492
2493 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
2496         return TRUE if the two type objects are the same.
2497
2498 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
2501         (mono_class_native_size): Use klass->marshal_info->min_align instead of
2502         klass->min_align, since klass->min_align contains the managed alignment,
2503         while the native alignment can be different, like for longs on x86.
2504         Fixes #469135.
2505
2506         * class-internals.h (MonoMarshalType): Add a min_align field.
2507
2508 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
2509
2510         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
2511         the 1.0 format.
2512
2513 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
2516         some comments about the usage of the used_regs field.
2517
2518         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
2519         Fixes #469217.
2520
2521 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
2522
2523         * appdomain.c: return NULL instead of throwing FileNotFoundException
2524         when LoadAssembly() fails.
2525
2526 2009-01-23  Mark Probst  <mark.probst@gmail.com>
2527
2528         * metadata.c (mono_metadata_generic_param_equal): Only compare the
2529         image if the owner is NULL.  Fixes the AOT failures.
2530
2531 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
2532
2533         * metadata.c (mono_metadata_load_generic_params): Initialize the 
2534         MonoGenericParam structure using memset so the image field is initialized
2535         as well.
2536
2537 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2538
2539         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
2540         a plain store.
2541
2542 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * class.c (mono_class_setup_vtable_general): In the generic instance
2545         optimization, set method->slot for abstract virtual methods. Fixes part of
2546         #467834.
2547
2548 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
2549
2550         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
2551         which signals that the unloading has started but all appdomain services must
2552         remain operational.
2553
2554         * appdomain.c (mono_domain_unload): The initial state for unloading now
2555         is unloading_start and we switch to unloading after the managed call to
2556         AppDomain::DomainUnload has finished.
2557
2558         The new unloading state has to be created because managed code in the
2559         DomainUnload event can depend on things like the threadpool still working.
2560         The domain must remain fully functional while the event executes.
2561
2562         This shown as an issue due to Process::WaitForExit, which waits for
2563         async reads of stdout and stderr to complete. Since those are processed
2564         in the threadpool the code deadlocks because the DomainUnload callback 
2565         waits for the async read finished event, which should have been set by a
2566         threadpool job but has been discarded due to the domain been in unload
2567         state.
2568
2569 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2570
2571         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
2572         image must match.
2573
2574 2009-01-21  Mark Probst  <mark.probst@gmail.com>
2575
2576         * reflection.c (resolve_object): For fields, inflate the class and
2577         then get the field in the inflated class.
2578
2579 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2580
2581         * object-internals.h (struct _MonoException): Added a comment
2582         explaining the new use of trace_ips.
2583
2584 2009-01-20  Mark Probst  <mark.probst@gmail.com>
2585
2586         * generic-sharing.c (inflate_other_data): Inflate array methods
2587         correctly.
2588
2589         * loader.c, class-internals.h: Rename search_in_array_class() to
2590         mono_method_search_in_array_class() and make it non-static.
2591
2592 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
2595         Hopefully fixes #458168.
2596
2597 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2598
2599         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
2600         as it is performed elsewhere.
2601
2602         Code is contributed under MIT/X11 license
2603
2604 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
2605
2606         * mono-perfcounters-def.h: Add counters for asp.net requests total and
2607         requests queued.
2608         * object.c (mono_raise_exception): Increment the exceptions total
2609         counter when an exception is thrown.
2610         * class-internals.h: Add a location for storing the total number of
2611         asp.net requests served.
2612         * mono-perfcounters.c: Implement update support for asp.net counters
2613         from the class libraries. Implement read support for asp.net counters
2614         and exceptions total counter.
2615
2616 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
2619         accessing klass->methods. Fixes #467385.
2620
2621 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
2624         for byval arguments without an [Out] attribute. Fixes #467212.
2625
2626         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
2627         Fix compilation under android.
2628         
2629         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
2630         processed, scan them directly after they are copied, to achieve better locality
2631         and cache usage.
2632
2633         * socket-io.c: Applied patch from Koushik Dutta
2634         (koush@koushikdutta.com). Disable IPV6 when running under android.
2635
2636 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * icall.c (ves_icall_InternalExecute): Add write barriers.
2639
2640         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
2641         the GC code.
2642
2643         * sgen-gc.c: Implement write barriers in IL code.
2644
2645 2009-01-17  Geoff Norton  <gnorton@novell.com>
2646
2647         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
2648
2649 2009-01-17  Geoff Norton  <gnorton@novell.com>
2650
2651         * image.c: When unloading the image->references table, there can be gaps
2652         in it.  Ensure that we iterate every entry to avoid leaking assembly references
2653         when unloading an appdomain.
2654
2655 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
2658         speed up ptr-in-nursery checks.
2659
2660         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
2661         threads_lock () to prevent deadlocks.
2662
2663         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
2664         does not need to be scanned during minor collections, since writes to it
2665         must use write barriers.
2666
2667 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
2668
2669         * metadata-verify.c: Add pe nt header verification.
2670         
2671 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * gc.c: Fix a few warnings when using SGEN.
2674
2675 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
2676
2677         * metadata-verify.c: Add pe optional header verification.
2678
2679 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * sgen-gc.c: Add support for user defined marker functions, used by
2682         MonoGHashTable to avoid registering a GC root for every hash node.
2683
2684 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
2687         non-pinned roots into separate hashes to avoid having to traverse them
2688         in functions which are only interested in one kind.
2689
2690 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2691
2692         * metadata-verify.c: Add pe header machine field verification.
2693         
2694 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
2695
2696         * metadata-verify.c: Add pe header size verification.
2697
2698 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
2699
2700         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
2701         using the GC, they don't contain references.
2702
2703         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
2704
2705 2009-01-13  Geoff Norton  <gnorton@novell.com>
2706
2707         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
2708         AppDomains created on the native side can be cleaned up on the native side.
2709
2710 2009-01-13  Geoff Norton  <gnorton@novell.com>
2711
2712         * appdomain.c: Ensure that we call mono_context_init for the embedding api
2713         as well as the managed api.
2714
2715 2009-01-13  Geoff Norton  <gnorton@novell.com>
2716
2717         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
2718         with a MonoAppDomain initialized against it.
2719
2720 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
2723         
2724         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
2725
2726         * marshal.c: Avoid setting the exception clauses after a method has been entered 
2727         into the wrapper caches. Fixes #465700.
2728
2729         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
2730         method builder.
2731         (mono_mb_create_method): Set the clauses from the method builder.
2732
2733 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
2734
2735         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
2736         Patch from Makoto Kishimoto.
2737
2738 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
2741         encoding them as ROOT_DESC_COMPLEX.
2742         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
2743
2744 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
2745
2746         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
2747         no longer point to the nursery.
2748
2749         * sgen-gc.c: Add a few comments/FIXMEs.
2750         
2751         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
2752
2753         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
2754         initialization of the various _method variables thread safe. Fixes
2755         #465377.
2756
2757 2009-01-12  Mark Probst  <mark.probst@gmail.com>
2758
2759         * domain.c, domain-internals.h: Remove the shared_generics_hash
2760         and its lookup functions.
2761
2762 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
2763
2764         * socket-io.c:  Fixing the MSVC build. 
2765
2766         Code is contributed under MIT/X11 license.
2767
2768 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
2769
2770         * metadata-verify.c: Add pe header watermark verification.
2771
2772 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2773
2774         * metadata-verify.c: Add lfanew verification.
2775
2776 2009-01-12  Jb Evain  <jbevain@novell.com>
2777
2778         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
2779         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
2780
2781 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * socket-io.c: Fix the build.
2784
2785         * environment.c: Fix an #ifdef.
2786
2787 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * threadpool.c (async_invoke_thread): Handle the wait function returning
2790         WAIT_IO_COMPLETION as well.
2791         (async_invoke_io_thread): Ditto.
2792
2793 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
2794
2795         * threads.c: Fixing the Windows build.
2796
2797         Code is contributed under MIT/X11 license.
2798
2799 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2800  
2801         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
2802         interrupt a wait.
2803         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
2804         the thread to wait again.
2805
2806 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2807
2808         * metadata-verify.c: Initial skeleton of the metadata verifier.
2809
2810         * pedump.c: Add support for the metadata verifier.
2811
2812         * verify-internal.h: Export the whole assembly metadata verifier function.
2813
2814 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
2815
2816         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
2817
2818 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * Makefile.am: Upgrade dtrace-prelink.sh location.
2821
2822 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2823
2824         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
2825         well. Otherwise the shutdown deadlock that happens on unix will can happen
2826         as well.
2827         If the main thread code finishes too fast it's possible that the finalizer
2828         thread won't have executed yet, won't record itself as the finalizer thread
2829         and the shutdown sequence will wait on it forever.
2830
2831 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
2832
2833         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
2834         with MSVC.
2835
2836 2009-01-08  Miguel de Icaza  <miguel@novell.com>
2837
2838         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
2839         Robert Jordan for pointing this out.
2840
2841 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
2842
2843         * icall.c
2844         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
2845         ves_icall_System_IO_DriveInfo_GetDriveType.
2846
2847 2009-01-07  Miguel de Icaza  <miguel@novell.com>
2848
2849         * icall.c: Wrap calls to mono_strtod in CriticalSection
2850         invocations when using eglib, to work around #464316.
2851
2852 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
2855         return value of GetCurrentDirectory to never access unitialized memory.
2856
2857 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
2858
2859         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
2860         return value of GetCurrentDirectory and expand the buffer if needed.
2861
2862         Fixes #459094.
2863
2864 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
2865
2866         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
2867           Adding a call to mono_init_com_types.
2868
2869         Code is contributed under MIT/X11 license.
2870
2871 2009-01-07  Geoff Norton  <gnorton@novell.com>
2872
2873         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
2874         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
2875         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
2876         be the value of the ip buffer.
2877
2878 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2879
2880         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
2881         interfaces_packed here.
2882
2883         Fixes part of #463294.
2884
2885 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2886
2887         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
2888
2889         Fixes part of #463294.
2890
2891 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2892
2893         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
2894         is a boxed complex as well.
2895
2896         Fixes part of #463294.
2897
2898 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
2899
2900         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
2901         control if a methodspec should be created for the generic method definition from external assemblies.
2902         Caching of methodspec is done using the handleref hash table.
2903
2904         Fixes #462592.
2905
2906 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
2907
2908         * loader.c (find_method): When searching the interfaces of a class
2909         check the transitive closure of implemented interfaces.
2910
2911         Fixes #463303.
2912
2913 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2914
2915         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
2916         
2917 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
2918
2919         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
2920         interfaces calculation to fill_valuetype_array_derived_types.
2921
2922         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
2923         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
2924         for example.
2925
2926         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
2927         interfaces for valuetypes if needed.    
2928
2929         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
2930         for their basetype as well. Types are array expanded if rank is > 0.
2931
2932         Fixes #400716.
2933
2934 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
2935
2936         * socket-io.h : Changing the signature of
2937           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
2938           the blocking state.
2939
2940         * icall-def.h :  Changing the signature of
2941           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
2942
2943         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2944           For Windows only.  Avoid blocking when calling accept by
2945           querying for a connection via select.  The loop also queries
2946           the thread state every 1000 micro seconds for the thread
2947           stop state.  This will avoid the process hanging on shutdown
2948           when using a TcpChannel that is never connected to.
2949
2950         Code is contributed under MIT/X11 license.
2951
2952 2008-12-30  Marek Safar  <marek.safar@gmail.com>
2953
2954         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
2955
2956 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2957
2958         * class.c (get_implicit_generic_array_interfaces): Extract common
2959         code to a helper function making it a lot easier on the eyes.
2960
2961 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
2962
2963         * class.c (get_implicit_generic_array_interfaces): If the internal
2964         enumerator is an interface inflate System.Object instead of itself.
2965
2966         Fixes #461261.
2967
2968 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
2969
2970         * object.c (mono_runtime_invoke_array): Don't assert with
2971         byref nullable types.
2972
2973         * marshal.c (mono_marshal_get_runtime_invoke): To handle
2974         byref nullables we unbox the object and store it on the
2975         stack. 
2976         We can't use the boxed object since it is the T of Nullable<T>
2977         and the boxed representation of a nullable it's underlying type
2978         or null.
2979         We could cheat and create a boxed nullable and use the same
2980         machinery of other byref VTs but this feels like a hack and
2981         using the stack has the bonus of reducing heap pressure.
2982
2983         Fixes #461941.
2984
2985 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
2986
2987         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
2988         return value.
2989
2990         Fixes #461867.
2991
2992 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
2993
2994         * icall-def.h : Adding an internal call definition for 
2995           System.Environment.internalBroadcastSettingChange.
2996
2997         * icall.c : Adding a Windows only implementation to broadcast a 
2998           WM_SETTINGCHANGE when an environment variable has changed.
2999
3000         Code is contributed under MIT/X11 license.
3001
3002 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3003
3004         * class.c, class-internals.h: Made
3005         mono_class_has_parent_and_ignore_generics() non-static.
3006
3007 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
3008
3009         * image.c: deal with the mmap failing when loading an image.
3010
3011 2008-12-17  Geoff Norton  <gnorton@novell.com>
3012
3013         * threadpool.c: Ensure that the io_queue_lock is initialized
3014         in all circumstances, as we always attempt to cleanup against it.
3015
3016 2008-12-17  Miguel de Icaza  <miguel@novell.com>
3017
3018         * icall.c (ves_icall_System_Environment_get_Platform): For
3019         compatibility reasons for existing client code we will keep
3020         returning 4 for a while.   
3021
3022         For how long will depend on the documentation being updated, and
3023         for us to give client code a chance to be updated.
3024
3025         This reverts the original decison on #433108 since we did not
3026         catch roughly 33 instances of the broken code in our own source
3027         code base, we did not catch failures on the buildbots, and QA did
3028         not bring this as a problem.
3029
3030         Only today I found some customer's code breaking due to our own
3031         class libraries not being fully updated and tracked it down to
3032         this change.  I am reverting it because if we could not even get
3033         our story straight in our own code base, how can we hope that our
3034         end user code be fixed?
3035
3036         As of this morning, our Wiki page that documents how to detect
3037         Unix had not been fixed.    
3038
3039 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
3042
3043         * class.c (mono_class_get_fields): Handle loading errors.
3044
3045 2008-12-12 Mark Mason <mmason@upwardaccess.com>
3046
3047         * 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.
3048         
3049 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3050
3051         * mono-perfcounters.c: avoid warning.
3052
3053 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3054
3055         * reflection.c (ensure_runtime_vtable): Work on generic instances and
3056         make sure all interfaces have MonoClass::interface_id set.
3057
3058         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
3059         method table is property set.
3060
3061 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3062
3063         * class.c: New function mono_class_setup_interface_id that setup
3064         MonoClass::interface_id if needed.
3065
3066         * class-internals.h: Export new function.
3067
3068 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
3069
3070         * class.c: Add code to sanity check the vtable after setup_vtable_general
3071         has done it's work.
3072
3073 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3074
3075         * icall.c: make Assembly.GetExecutingAssembly work properly when
3076         reflection is used to invoke the method.
3077         Bug #321781 fixed.
3078
3079 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3080
3081         * metadata/generic-sharing.c: Look for constraints in all type
3082         arguments, not just the first one.
3083
3084 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3085
3086         * appdomain.c: return the correct CodeBase for an Assembly instance
3087         that was loaded from the shadow-copy directories.
3088         Bug #458190 fixed.
3089
3090 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3091
3092         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
3093
3094         * sgen-gc.c (check_object): New debugging helper function.
3095
3096         * object.c: Fix calls to mono_value_copy_array ().
3097
3098 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100         * class.c (mono_class_setup_fields): If working on an inflated class
3101         first check if the generic definition did init with success.
3102
3103         Fixes #445361.
3104
3105 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3106
3107         pedump.c (main): Fix a warning.
3108
3109 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
3110
3111         * object-internals.h : Adding a definition for 
3112           MonoReflectionComVisibleAttribute.
3113
3114         * marshal.c (cominterop_com_visible) :  Method added to check the 
3115           ComVisible attribute of a class.
3116
3117         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
3118           cominterop_raise_hr_exception added to consolidate common code 
3119           to raise hr exceptions.
3120
3121         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
3122           if a managed class should support IDispatch.
3123
3124         * marshal.c 
3125           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
3126           Added additional checks for managed object when getting 
3127           an IDispatch interface.
3128
3129         Code is contributed under MIT/X11 license.
3130
3131 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
3132
3133         pedump.c (main): Handle mono_get_method () returning NULL. 
3134
3135 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3136
3137         * marshal.h: Fix a warning.
3138
3139 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
3140
3141         * marshal.c : Adding cominterop_release_all_rcws to release all
3142           runtime callable wrappers held by the runtime.
3143
3144         * marshal.h : Adding declaration for cominterop_release_all_rcws.
3145           
3146         Code is contributed under MIT/X11 license.
3147
3148 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * metadata.c (mono_image_alloc_lock): New helper function.
3151         (mono_image_alloc0_lock): Ditto.
3152
3153         * metadata.c: Use the alloc_lock () helper functions for allocating
3154         memory from the image mempool.
3155
3156 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
3157
3158         * class.c (mono_class_from_generic_parameter): Document it's
3159         locking behavior. Fix double checked locking here, we stored in
3160         param->pklass a partially initialized MonoClass and no membar was used.
3161
3162 2008-12-05  Marek Habersack  <mhabersack@novell.com>
3163
3164         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
3165         (3) functions are present in the C library use them to do the
3166         job. If they are absent, make sure that the sum of int_part and
3167         dec_part is rounded before returning. This is necessary due to the
3168         division of dec_part by the power of 10 before the final addition
3169         is performed - if the result is not rounded in some cases it will
3170         yield invalid results.
3171
3172 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
3173
3174         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
3175         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
3176         instruction instead of a pointer constant.
3177
3178 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
3179
3180         * loader.c (mono_method_get_header): Do most of the work outside the
3181         loader lock, to avoid assembly load hook deadlocks.
3182
3183         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
3184         (mono_metadata_parse_type_full): Ditto.
3185
3186 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
3187
3188         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
3189         Make the stack depth fixed. Ensure proper argument passing to the backtrace
3190         funtions. Finally, use a lock to produce well ordered output.
3191
3192         The lock looks silly, as all calls to the corlib mempool should be guarded
3193         with the loader lock, but for some reason this fact doesn't help. 
3194
3195         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
3196
3197 2008-12-02  Mark Probst  <mark.probst@gmail.com>
3198
3199         * socket-io.c: 64 bit big-endian fixes.
3200
3201 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
3204         targets that require strict compatibility between the types.
3205
3206         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
3207         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
3208         Kill the strict argument and create a new one valuetype_must_be_boxed.
3209
3210         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
3211         state that all valuetypes must be boxed.
3212
3213         Fixes #448560.
3214
3215 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
3216
3217         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
3218         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
3219
3220         Contributed under MIT/X11 license.
3221
3222 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
3223
3224         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
3225         the inflate_generic_type machinery should handle it.
3226
3227         This avoids a crash when the field's flags is zero and it's type is
3228         a primitive.
3229         What happens is that mono_metadata_parse_type_full will see that opt_attrs
3230         is zero and will return one of the cached built-in primitive types. Since
3231         those types live in read-only memory, the code that copies it crashes.  
3232
3233 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3234
3235         * object.c: Don't put function descriptors into generalized IMT
3236         thunks.
3237
3238 2008-11-28  Mark Probst  <mark.probst@gmail.com>
3239
3240         * class.c: Enable generic code sharing on PPC64.
3241
3242 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3243
3244         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
3245         from mini/mini.c.
3246
3247         * generic-sharing.c: Allocate the method template slists from the
3248         image mempool so it doesn't leak.
3249
3250 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
3251
3252         * class.c (generic_array_methods): Release the linked list.
3253
3254 2008-11-27  Mark Probst  <mark.probst@gmail.com>
3255
3256         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
3257         invocation to g_utf16_to_utf8().
3258
3259 2008-11-26  Mark Probst  <mark.probst@gmail.com>
3260
3261         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
3262         arguments on big endian archs.
3263
3264 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3265
3266         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
3267         the type name (test added in corlib).
3268
3269 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
3270
3271         * pedump.c: initialize perf. counters. Fixes a segv.
3272
3273 2008-11-25  Martin Baulig  <martin@ximian.com>
3274
3275         * mono-debug-debugger.c
3276         (mono_debugger_runtime_invoke): Return the exception object if an
3277         exception was thrown.  Visual Studio displays the exception object
3278         in the locals window.
3279
3280 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3281
3282         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
3283         ftnptr.
3284
3285 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3286
3287         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
3288         MONO_TYPE_U are sizeof (gpointer), too.
3289
3290 2008-11-24  Mark Probst  <mark.probst@gmail.com>
3291
3292         * marshal.c (mono_type_native_stack_size): Fixed size and
3293         alignment for reference types.
3294
3295 2008-11-23  Mark Probst  <mark.probst@gmail.com>
3296
3297         * class.c (mono_class_generic_sharing_enabled): Disable generic
3298         code sharing for PPC64.
3299
3300 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
3301
3302         * icall.c (mono_method_get_equivalent_method): Make sure
3303         method->klass->methods is inited before looping over it.
3304
3305 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
3306
3307         * object.c: when calling ExecuteAssembly in a newly created domain,
3308         the configuration file and application base are already set up.
3309         Bug #446353 take 2 fixed.
3310
3311 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
3312
3313         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
3314         Fixes #444715. Fix a warning.
3315
3316 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
3317
3318         * appdomain.c: write the full path of the assembly to the .ini file
3319         created when "shadow-copying"
3320         Bug #446353 fixed.
3321
3322 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
3323
3324         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
3325         if signature==FALSE.
3326
3327 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3328
3329         * marshal.h : Fix the cygwin build.
3330            marshal.c:12442: undefined reference to `_IID_IMarshal'
3331           
3332         Code is contributed under MIT/X11 license.
3333
3334 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
3335
3336         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
3337           free threaded marshaler when QueryInterface is called on a COM callable
3338           wrapper requesting the IMarshal interface.
3339           
3340         Code is contributed under MIT/X11 license.
3341
3342 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
3345
3346         * reflection.c (mono_type_get_object): Special case the very common
3347         void type.
3348
3349         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
3350         hold typeof(void).
3351
3352 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
3353
3354         * process.h : Adding method declaration for
3355           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3356           
3357         * process.c : Adding implementation for
3358           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3359           
3360         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
3361           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
3362
3363         Code is contributed under MIT/X11 license.
3364
3365 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
3366
3367         * appdomain.c (unload_thread_main): Clean up threadpool by
3368         calling mono_thread_pool_remove_domain_jobs.
3369
3370         * domain-internals.h (struct _MonoDomain): Add new fields to
3371         help coordinate the cleanup of the threadpool.
3372
3373         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
3374         that cleans up the threadpool of all jobs associated with an appdomain.
3375         It does that by cleaning up the queues and making sure all active
3376         threads are accounted.
3377
3378         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
3379         unloaded or in the process of. Take this is such way that there is
3380         no race condition between another thread starting the unload and the
3381         current thread acknowledging it.
3382
3383         * threadpool.c (async_invoke_thread): Same.
3384
3385         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
3386         firing the new thread.
3387
3388         * threadpool.c (start_tpthread): Same.
3389
3390         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
3391
3392         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
3393
3394 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
3395
3396         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3397         Add support for DuplicateHandle.
3398         
3399         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3400         Add support for DuplicateHandle.
3401         
3402         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
3403         Add support for DuplicateHandle.
3404
3405         Code is contributed under MIT/X11 license.
3406
3407 2008-11-06  Mark Probst  <mark.probst@gmail.com>
3408
3409         * class-internals.h: Make min_align into a whole byte.
3410
3411         * class.c: Set min_align for SIMD types to 16.
3412
3413 2008-11-05  Geoff Norton  <gnorton@novell.com>
3414
3415         * attach.c: Default the attacher to enabled for all cases including
3416         embedded.
3417
3418 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
3419
3420         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
3421         change r117650.
3422
3423 2008-11-04  Mark Probst  <mark.probst@gmail.com>
3424
3425         * monitor.c, monitor.h: New function for querying offsets of
3426         members of MonoThreadsSync.
3427
3428 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
3429
3430         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
3431         to speed up this function and to avoid the boundless memory growth caused by
3432         the signature_dup () calls.
3433
3434 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
3437         wrapper.
3438
3439         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
3440         by 1 bit.
3441
3442         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
3443
3444 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3445
3446         * appdomain.c:
3447         * domain-internals.h: made mono_set_private_bin_path_from_config()
3448         "internal".
3449         * object.c: call the above function after setting the configuration
3450         file path for the root domain.
3451         Fixes bug #314478.
3452
3453 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3454
3455         * assembly.c: when the assembly is loaded from an absolute path, end
3456         basedir with a directory separator.
3457         Bug #440781 fixed.
3458
3459 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3460
3461         * monitor.c (mono_monitor_get_fast_enter_method): If
3462         CompareExchange is not available, don't create the fastpath
3463         instead of asserting.  (The method is missing in the 1.1 profile.)
3464
3465 2008-10-30  Mark Probst  <mark.probst@gmail.com>
3466
3467         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
3468
3469         * monitor.c, monitor.h: Code for generating Monitor.Enter and
3470         Monitor.Exit IL fastpaths.
3471
3472 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3473
3474         * class.c (mono_class_create_from_typedef): Added Vector2ul.
3475
3476 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
3477
3478         * class.c (mono_class_create_from_typedef): Added Vector2l.
3479
3480 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
3481
3482         * class.c (mono_class_create_from_typedef): Added Vector2d.
3483
3484 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3485
3486         * appdomain.c: translate \ into / for cache_path.
3487         * domain-internals.h: new mono_is_shadow_copy_enabled().
3488         * icall.c: (fill_reflection_assembly_name) do the same path
3489         manipulations that get_code_base does.
3490         (get_code_base) use mono_is_shadow_copy_enabled.
3491
3492 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
3493
3494         * appdomain.c: shadow-copied assemblies go to CachePath +
3495         ApplicationName when both are set. DynamicBase has nothing to do with
3496         shadow copies.
3497         Bug #406877 fixed.
3498
3499 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
3500
3501         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
3502         STANDALONESIG table.
3503
3504         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
3505         standalone signatures.
3506
3507         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
3508         comparison code: instead of comparing the signatures using a custom
3509         equals function, transform them to a common signature and compare that. This
3510         works better with AOT.
3511
3512 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
3515
3516         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
3517         call for generic instances.
3518         (mono_class_setup_properties): Call setup_properties () before accessing
3519         gklass->properties.
3520
3521         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3522         over the virtual methods of a class using metadata if possible, avoiding the
3523         creation of MonoMethod's for non-virtual methods.
3524         
3525         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3526         get_virtual_methods () to iterate over the virtual methods of classes.
3527
3528 2008-10-25  Martin Baulig  <martin@ximian.com>
3529
3530         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
3531
3532 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3533
3534         * class.c (mono_class_create_from_typedef): Added Vector4i.
3535
3536 2008-10-24  Mark Probst  <mark.probst@gmail.com>
3537
3538         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
3539         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
3540         special-casing applies to eliminate the call completely.
3541
3542 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
3543
3544         * class.c (mono_class_create_from_typedef): Added Vector8s.
3545
3546 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
3547
3548         * class.c (mono_class_create_from_typedef): Added Vector16sb.
3549
3550 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3551
3552         * icall.c: get rid of annoying warning.
3553
3554 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3555
3556         * threadpool.c: in 1.x, if you change the background status of the
3557         threadpool thread, it's not reset.
3558         Remove unnecessary calls to SetState.
3559
3560 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3561
3562         * threadpool.c: asynchronously create a set of idle threads upon first
3563         use of the threadpool. SetMinThreads will now start the appropriate
3564         number of idle threads if they are not already running. The default is
3565         1 threadpool thread per CPU. Increased the maximum number of threads
3566         per CPU to 10.
3567
3568 2008-10-22  Martin Baulig  <martin@ximian.com>
3569
3570         Revert r116521 from Zoltan, it breaks the debugger:
3571
3572         * class.c (mono_class_get_virtual_methods): New helper function to iterate
3573         over the virtual methods of a class using metadata if possible, avoiding the
3574         creation of MonoMethod's for non-virtual methods.
3575         
3576         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
3577         get_virtual_methods () to iterate over the virtual methods of classes.
3578
3579 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3580
3581         * threads.c: when creating a threadpool thread, set its state to
3582         'background'.
3583         * threadpool.c: reset the background state of a threadpool thread
3584         after finishing each work item
3585         Bug #437888 fixed.
3586
3587 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
3590         
3591         * class.c (mono_class_setup_vtable_general): Add an optimized version for
3592         generic instances which works by inflating the methods in the container
3593         class's vtable.
3594
3595         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
3596         variant which doesn't make a copy if no inflation was done.
3597         (mono_class_setup_fields): Use it.
3598
3599         * metadata.c (mono_metadata_get_shared_type): New helper function to
3600         return a shared instance of a given MonoType.
3601
3602         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
3603         a copy of most non-generic types.
3604
3605 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
3606
3607         * threadpool.c: remove one more GetSystemInfo () call.
3608
3609 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
3610
3611         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
3612         use the code in mono-proclib.h to get processor information.
3613
3614 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
3615
3616         * appdomain.c: fixed the logic that determines whether assemblies in a
3617         directory are "shadow-copied" or not. Bug #433483 fixed.
3618
3619 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
3620
3621         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
3622         warning.
3623
3624 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3625
3626         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
3627         returning a vtype.
3628
3629         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
3630         reflection.c: Use mono_field_get_name () for accessing a field's name.
3631
3632         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
3633         class.c
3634
3635         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
3636         field.
3637
3638         * loader.c (find_method_in_class): Reenable the metadata optimization by
3639         not using it for generic instances.
3640
3641         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
3642         data/def_type fields from MonoClassField into a separate structure.
3643         (struct MonoClassField): Remove data/def_type fields.
3644         (struct _MonoClass): Add a 'field_def_values' array to store the default
3645         values/RVA for fields.
3646
3647         * class.c reflection.c: Update after the changes.
3648         
3649         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
3650         for accessing field->data.
3651
3652         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
3653
3654         * loader.c (find_method_in_class): Revert the last change for now as
3655         it breaks Mono.C5 unit tests.
3656
3657         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
3658         'field_generic_types' and 'field_objects' which contain the information
3659         previously stored in MonoInflatedField.
3660         (MonoInflatedField): Delete.
3661         (struct _MonoClassField): Delete 'generic_info' field.
3662
3663         * reflection.c: Store the information which was previously in 
3664         field->generic_info in MonoDynamicGenericClass instead.
3665
3666         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
3667         MonoClassField changes.
3668
3669 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
3670
3671         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
3672         store the value inside the data array of the MonoMethodWrapper.
3673         This saves memory, is faster and fixes the lifetime issues (methods
3674         were never removed from the hash previously). May also fix bug#436996.
3675
3676 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
3679         generic instances, compute the type from the generic definition instead of
3680         looking in field->generic_info.
3681
3682         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
3683         for inflated fields, the only user was get_fieldref_token () which no
3684         longer needs it.
3685
3686         * class.c (mono_class_init): Revert the last change as it seems to cause
3687         crashes.
3688
3689         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
3690         bytes on 64 bit platforms.
3691
3692         * object.c (mono_class_create_runtime_vtable): Fix a warning.
3693         
3694         * object.c (mono_class_create_runtime_vtable): Don't initalize
3695         field->data/field->def_type here, it is done lazily by 
3696         mono_class_get_field_default_value ().
3697
3698         * icall.c (ves_icall_get_enum_info): Call 
3699         mono_class_get_field_default_value () instead of directly accessing
3700         field->data and field->def_type.
3701
3702         * object.c (get_default_field_value): Ditto.
3703
3704         * class.c (mono_field_get_data): Ditto.
3705         
3706         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
3707         call for generic instances.
3708
3709         * loader.c (find_method_in_class): If klass != from_class, then inflate
3710         the method with the context of from_class, since the caller assumes this.
3711
3712 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
3715         for accessing method->slot.
3716
3717 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
3718
3719         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
3720
3721 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * class.c (mono_method_get_vtable_index): Use
3724         mono_method_get_vtable_slot () for accessing method->slot.
3725
3726         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
3727         accessing klass->methods.
3728
3729         * class.c (mono_method_get_vtable_slot): New helper function.
3730         (mono_class_get_vtable_entry): Ditto.
3731         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
3732         accessing method->slot.
3733
3734         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
3735         method to get_inflated_method ().
3736
3737         * class.c (mono_class_get_inflated_method): New helper method to obtain
3738         a method of an inflated class without calling setup_methods ().
3739         (mono_class_get_cctor): Use get_inflated_method.
3740
3741         * generic-sharing.c (mono_class_get_method_generic): Ditto.
3742         
3743         * marshal.c image.c: Lazily create all the marshal caches.
3744
3745         * image.c (mono_image_init): Move initialization of runtime_invoke
3746         caches to marshal.c.
3747
3748         * marshal.c (get_cache): New helper function to lazily initialize a 
3749         wrapper cache.
3750         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
3751
3752         * debug-helpers.c (mono_method_full_name): Include generic arguments.
3753
3754 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
3755
3756         * loader.c: fixed check for interface type.
3757
3758 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
3759
3760         * appdomain.c: check for NULL setup before it's referenced.
3761
3762 p
3763 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
3764
3765         * class.c: remove the unused old vtable setup code.
3766
3767 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
3768
3769         * class.c: don't depend on interface order in
3770         setup_interface_offsets (bug #435777).
3771         * reflection.c: sort the InterfaceImpl table (patch from
3772         Jb Evain  <jbevain@novell.com>).
3773
3774 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
3777         the low level assemblies lock.
3778
3779 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
3780
3781         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
3782         object.c, reflection.c, socket-io.c, threads.c: introduced
3783         mono_framework_version () to return the major framewrok version,
3784         changed the code that was using more complex patterns to use it.
3785         Return the correct value for PlatformID for OSX.
3786
3787 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
3788
3789         * icall-def.h, process.h, process.c: added an icall to get info about
3790         processes using mono-proclib.
3791
3792 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
3793
3794         * mono-perfcounters.c: use the mono-proclib functions to
3795         access process information.
3796
3797 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
3798
3799         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
3800         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
3801         reflection.c: remove rawbuffer usage: mmap support is more sanely
3802         provided by utils/mono-mmap.
3803
3804 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
3805
3806         * gc.c: use posix semaphores when possible so that
3807         mono_gc_finalize_notify() is signal safe.
3808
3809 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
3810
3811         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
3812         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
3813         be #ifdef-ed out, the linker will remove the rest.
3814
3815         * marshal.c: Implement DISABLE_COM.
3816
3817         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
3818
3819 2008-10-11  Miguel de Icaza  <miguel@novell.com>
3820
3821         * locales.c (string_invariant_compare_char): Optimization: do not
3822         call g_unichar_type unless we actually need the information.
3823
3824 2008-10-10  Mark Probst  <mark.probst@gmail.com>
3825
3826         * object.c, class-internals.h: Also create remoting trampolines
3827         for generic methods.  Pass the domain to the remoting trampoline
3828         creation function, too.
3829
3830 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
3831
3832         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
3833
3834 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3835
3836         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
3837         Vector4ui.
3838
3839 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3840
3841         * assembly.c:
3842         * locales.c: remove the use of g_strdown. Fixes bug #322313.
3843
3844 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3845
3846         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
3847         for the least possible amount of time (extending the fix in r113458).
3848
3849 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
3850
3851         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
3852
3853 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
3854
3855         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
3856         as possible simd intrinsic types.
3857         Optimized the test to check for the common prefix first.
3858
3859 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
3860
3861         * class.c: back out part of a broken optimization committed on
3862         May 23th (bug #433908).
3863
3864 2008-10-09  Mark Probst  <mark.probst@gmail.com>
3865
3866         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
3867         Win32.  Should fix #432388 for most cases until we have the new
3868         profiler on Win32.
3869
3870 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
3871
3872         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
3873         instead of using inst->id so the hash is stable for AOT.
3874
3875 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
3876
3877         * appdomain.c:
3878         * icall.c: create a .ini file for shadow-copied assemblies that
3879         contains the location of the original assembly. Use this to return the
3880         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
3881         Also fix the number of '/' for windows when returning the CodeBase.
3882         Fixes bug #430920.
3883
3884 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3885
3886         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
3887
3888         Code is contributed under MIT/X11 license.
3889
3890 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3891
3892         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
3893           if if the class vtable needs initialized.
3894
3895         Code is contributed under MIT/X11 license.
3896
3897 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
3898
3899         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
3900           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
3901           STRING->BSTR, and CLASS->INTERFACE.
3902
3903         Code is contributed under MIT/X11 license.
3904
3905 2008-10-07  Marek Habersack  <mhabersack@novell.com>
3906
3907         * sysmath.h: changed the declaration of the
3908         ves_icall_System_Math_Round2 icall by adding an extra
3909         away_from_zero parameter.
3910
3911         * sysmath.c (ves_icall_System_Math_Round2): added support for
3912         away from zero rounding. The icall now takes an extra boolean
3913         parameter to signal that away from zero operation is requested.
3914
3915 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
3918         the delegate klass so it can work with full-aot.
3919         (mono_marshal_get_delegate_end_invoke): Ditto.
3920         (mono_marshal_get_delegate_invoke): Ditto.
3921
3922 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
3923
3924         * gc.c, attach.h, attach.c: remove a bad pattern:
3925         add_finalizer_callback () is not implemented correctly, it can't
3926         without adding more overhead to the finalizer loop and it's not
3927         even needed, since we know exactly what we need to call, so there is
3928         no need to do so through an expensive function pointer.
3929
3930 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
3931
3932         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
3933         for the no-gc case.
3934         * attach.c (mono_attach_init): Remove the #ifdef.
3935
3936 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
3937
3938         * attach.c (mono_attach_init): Don't use
3939         mono_gc_add_finalizer_thread_callback when compiling without GC.
3940         Fixes #432306.
3941         
3942         Code is contributed under MIT/X11 license.
3943
3944 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
3945
3946         * class.c (mono_class_create_from_typedef): Remove the 
3947         #ifndef DISABLE_SIMD stuff.
3948
3949 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         * class-internals.h (MonoClass): Added simd_type bit field.
3952
3953         * class.c (mono_class_create_from_typedef): Check if type is a simd
3954         intrinsic.
3955
3956 2008-10-03  Mark Probst  <mark.probst@gmail.com>
3957
3958         * object.c (mono_method_add_generic_virtual_invocation): Only add
3959         instantiations to the thunk whose count is at least as large as
3960         the threshold.
3961
3962 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3963
3964         * icall.c: changed the Type of the exception thrown when trying to
3965         invoke a constructor on an abstract class. Part of the fix for bug
3966         #324185.
3967
3968 2008-10-02  Mark Probst  <mark.probst@gmail.com>
3969
3970         * class.c, class-internals.h (mono_method_get_vtable_index): New
3971         function which returns the index into the vtable and properly
3972         handles inflated virtual generic methods.
3973
3974 2008-10-01  Mark Probst  <mark.probst@gmail.com>
3975
3976         * object.c, domain.c, object-internals.h, domain-internals.h:
3977         Generalize IMT thunk machinery to also handle thunks for virtual
3978         generic method invokes.  When a virtual generic method is invoked
3979         more than a number of times we insert it into the thunk so that it
3980         can be called without lookup in unmanaged code.
3981
3982         * generic-sharing.c, class-internals.h: Fetching a
3983         MonoGenericInst* for a method from an (M)RGCTX.
3984
3985 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
3986
3987         * marshal.c (emit_marshal_string): Applied a variant of a patch by
3988         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
3989         marshalling. Fixes #431304.
3990
3991 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
3992
3993         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
3994           handle when ref is specified without In or Out.
3995
3996         Code is contributed under MIT/X11 license.
3997
3998 2008-09-30  Mark Probst  <mark.probst@gmail.com>
3999
4000         * loader.c (mono_get_method_constrained): Don't expand method with
4001         the class's context, because it's already a method of that class.
4002
4003 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
4004
4005         * attach.c : should be correct build fix.
4006
4007 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * attach.c: Fix the previous change.
4010
4011 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
4012
4013         * attach.c : quick w32 build fix.
4014
4015 2008-09-27  Miguel de Icaza  <miguel@novell.com>
4016
4017         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
4018         crashes MonoDevelop: #430455.
4019
4020 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
4021
4022         * domain-internals.h (struct _MonoDomain): Move most fields used only by
4023         the JIT do MonoJitDomainInfo in ../mini/mini.h.
4024
4025         * domain.c: Remove initialization/cleanup of the removed fields.
4026
4027 2008-09-27  Mark Probst  <mark.probst@gmail.com>
4028
4029         * class.c (mono_class_generic_sharing_enabled): Enable generic
4030         code sharing for PPC.
4031
4032 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
4033
4034         * attach.c : Fixing the Windows builds.
4035
4036         Code is contributed under MIT/X11 license.
4037
4038 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
4041         the default generic sharing mode to 'all'.
4042
4043 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4044
4045         * generic-sharing.c, class-internals.h: New function for checking
4046         whether a method needs a static RGCTX invoke wrapper.  A few
4047         funtions moved from mini/generic-sharing.c.
4048
4049         * icall.c: New function used.
4050
4051 2008-09-25  Mark Probst  <mark.probst@gmail.com>
4052
4053         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
4054         Static RGCTX invoke wrapping applies to value type methods, too.
4055
4056         * class.c (mono_class_setup_vtable_general): In generic-shared
4057         value types, wrap methods with a static RGCTX invoke wrapper.
4058
4059 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
4060
4061         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
4062         osx build.
4063
4064 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
4067         register a callback which is called when the finalizer thread is woken
4068         up.
4069         (finalizer_thread): Call the callback if it exists.
4070
4071         * attach.h attach.c: New files, implementing the attach mechanism.
4072
4073         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
4074         
4075         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
4076         by the previous change.
4077
4078 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4079
4080         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
4081         loader.c, marshal.c, metadata-internals.h, metadata.c,
4082         method-builder.c, object.c, reflection.c: introduced specific functions
4083         to allocate from the domain and image mempools and cleaned up most of
4084         the code to use them (still missing a few in reflection.c).
4085         Keep the loader bytes counter updated.
4086
4087 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
4088
4089         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
4090         loader-related counters.
4091
4092 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
4093
4094         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
4095         added more MS-compatible counters.
4096
4097 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
4098
4099         * class.c (mono_class_setup_fields): Call setup_fields before accessing
4100         class->blittable. Fixes #428217.
4101
4102 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
4103
4104         * reflection.c (mono_image_get_field_on_inst_token): Call 
4105         field_encode_signature () since that handles custom modifiers too.
4106         Fixes #424663.
4107
4108 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * reflection.c (add_custom_modifiers): New helper function to merge custom
4111         modifiers stored in objects to a MonoType.
4112         (fieldref_encode_signature): Encode custom modifiers.
4113         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
4114         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
4115
4116 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
4117
4118         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
4119         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
4120         64-bit IL only images because imports are not resolved for IL only images.
4121         Special thanks to Bill Holmes for finding this bug and testing the patch.
4122         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
4123
4124         Contributed under MIT/X11 license.
4125
4126 2008-09-19  Miguel de Icaza  <miguel@novell.com>
4127
4128         * mono-config.c (dllmap_start): Add support for the bits keyword
4129         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
4130
4131 2008-09-19  Mark Probst  <mark.probst@gmail.com>
4132
4133         * reflection.c (inflate_mono_method): When the class the method is
4134         to be inflated for is itself not inflated, just return the method.
4135
4136 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
4137
4138         * mono-perfcounters.c: use more user friendly process instance names.
4139
4140 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
4141
4142         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
4143           handle "[in] ref" and "[in][out] ref" cases.
4144
4145         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
4146           to mono_mb_create_method.  This was causing problems calling native to
4147           managed passing Variants by value.
4148
4149         Code is contributed under MIT/X11 license.
4150
4151 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
4152
4153         * class.c (can_access_internals): Call mono_assembly_load_friends ()
4154         before accessing the friend_assembly_names field.
4155
4156         * assembly.c (mono_assembly_load_friends): Make this callable multiple
4157         times.
4158         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
4159         called lazily when it is needed.
4160
4161         * metadata-internals.h (struct _MonoAssembly): Add 
4162         'friend_assembly_names_inited' flag.
4163
4164 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
4165
4166         * mono-perfcounters-def.h: fix the types of a few counters.
4167         * mono-perfcounters.c: implemented the instance names getter
4168         and a few bugfixes.
4169
4170 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
4171
4172         * culture-info-table.h : regenerated.
4173
4174 2008-09-17  Robert Jordan  <robertj@gmx.net>
4175
4176         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
4177         context bound objects. Fixes #415577.
4178
4179         Code is contributed under MIT/X11 license.
4180
4181 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
4182
4183         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
4184         implementation (bug #423582).
4185
4186 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * object.c (mono_object_get_virtual_method): Handle the case method->slot
4189         is not set. Fixes #426309.
4190
4191 2008-09-16  Jb Evain  <jbevain@novell.com>
4192
4193         * class.c (mono_class_from_name): fix the exported type look up
4194         when the type is defined in a referenced assembly.
4195
4196 2008-09-16  Jb Evain  <jbevain@novell.com>
4197
4198         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
4199         increment the next index counter on each iteration to make that work
4200         for more than one type forwarder. Unmanaged part to fix #422929.
4201
4202 2008-09-15  Mark Probst  <mark.probst@gmail.com>
4203
4204         * object-internals.h: enum ComInterfaceType in
4205         MonoInterfaceTypeAttribute is guint32, not guint16.
4206
4207 2008-09-12  Mark Probst  <mark.probst@gmail.com>
4208
4209         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
4210         writing code.
4211
4212 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4213
4214         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
4215         not gboolean.
4216
4217 2008-09-11  Mark Probst  <mark.probst@gmail.com>
4218
4219         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
4220         Endianness fixes for MonoSymbolFileOffsetTable.
4221
4222 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4223
4224         * process.c (complete_path) : Removing quotes from the 
4225           input path.  The glib file routines do not handle file paths
4226           that have quotes around them.
4227
4228         Code is contributed under MIT/X11 license.
4229
4230 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
4231
4232         * socket-io.h : Adding a comment to provide locations where 
4233           changes to MonoSocketAsyncResult need to be synced.
4234
4235         Code is contributed under MIT/X11 license.
4236
4237 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
4240         parameters as well. Fixes #425001.
4241
4242 2008-09-08  Miguel de Icaza  <miguel@novell.com>
4243
4244         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
4245         windows build.
4246
4247 2008-09-07  Miguel de Icaza  <miguel@novell.com>
4248
4249         * console-io.c: Add support for tracking the window size if it
4250         changes.
4251
4252         The setup is very simple: the TtySetup function will now return a
4253         pointer to a location in memory that tracks the current console
4254         size.  The managed code checks its current value every time its
4255         queried against the last value set, and updates accordingly.
4256
4257         With this setup we can work with multiple consoles, and we do not
4258         require to poke into managed code from a signal handler.
4259
4260         Additionally, the environment for COLUMNS and LINES is now handled
4261         in unmanaged code.
4262
4263         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
4264
4265 2008-09-07  Mark Probst  <mark.probst@gmail.com>
4266
4267         * marshal.c (mono_type_native_stack_size): Treat
4268         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
4269
4270 2008-09-04  Jb Evain  <jbevain@novell.com>
4271
4272         * class.c (mono_class_is_assignable_from): fix assignability of nullables
4273         to nullables.
4274
4275 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
4276
4277         * verify.c (verify_type_compatibility_full): Revert change
4278         to allow converting a native int to unmanaged pointer be verifiable
4279         under non-strict mode.
4280         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
4281
4282         * verify.c: Added some TODOs.
4283
4284 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
4285
4286         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
4287           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
4288           Changed to use GlobalAlloc for the memory returned on Windows platforms.
4289
4290         Code is contributed under MIT/X11 license.
4291
4292 2008-09-02  Jb Evain  <jbevain@novell.com>
4293
4294         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
4295
4296 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
4297
4298         reflection.c (typebuilder_setup_fields): Handle classes with
4299         explicit size.
4300
4301 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
4302
4303         class.c (mono_class_setup_events): Add memory barrier due to
4304         double checked locking.
4305         
4306         class.c (mono_class_setup_properties): Same.
4307
4308 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * class.c (mono_class_is_assignable_from): Fix the build.
4311         
4312         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
4313         before accessing klass->interface_bitmap. Fixes #421744.
4314
4315 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
4318         the runtime into no-exec mode, useful when running the AOT compiler.
4319
4320         * appdomain.c gc.c object.c: Avoid executing managed code when running
4321         in no-exec mode.
4322         
4323         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
4324
4325         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
4326         special case when the mono_assembly_loaded () returns NULL because the 
4327         search hook is not installed.
4328
4329 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
4330
4331         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
4332         crashes in bstr marshalling on linux.
4333
4334 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
4337         with more than one parameter.
4338
4339 2008-08-24  Miguel de Icaza  <miguel@novell.com>
4340
4341         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
4342         start/stop flow control as well when turning off ICANON (allows
4343         C-s and C-q to be read by Console.ReadKey).
4344
4345 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * class.c (mono_class_init): Move the initialization of nested classes
4348         into mono_class_get_nested_types (). Fixes #418433.
4349
4350         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
4351         flag.
4352
4353         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
4354         iterating tough the nested classes of a class.
4355
4356 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
4357
4358         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
4359         on arm.
4360
4361 2008-08-22  Miguel de Icaza  <miguel@novell.com>
4362
4363         * console-io.c (sigcont_handler): Support signal chaining for
4364         SIGCONT.
4365
4366         (console_set_signal_handlers): Use best practices with sigaction,
4367         clear the structure before using it. 
4368
4369 2008-08-22  Robert Jordan  <robertj@gmx.net>
4370
4371         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
4372         Fix the Windows build.
4373
4374 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * class.c (mono_class_generic_sharing_enabled): Make the default
4377         sharing mode 'corlib'.
4378
4379 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * console-io.c (console_set_signal_handlers): Fix a warning.
4382
4383         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
4384         method normally, the JIT will take care of avoiding recursion.
4385
4386 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
4387
4388         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
4389
4390         Code is contributed under MIT/X11 license.
4391
4392 2008-08-20  Miguel de Icaza  <miguel@novell.com>
4393
4394         * console-io.c (sigcont_handler): We need to restore the entire
4395         termios state, not only the original settings, as things like echo
4396         can be controlled after this (Booish exposes this issue with its
4397         own ReadLine implementation).
4398
4399         Additionally, we need to set the terminal back into keypad_xmit
4400         mode.
4401         
4402         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
4403         string as a paramter as well.   Otherwise we get different
4404         keyboard sequences.
4405
4406 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
4407
4408         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
4409         delegates with byref out parameter passing. Fixes #351520.
4410
4411         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
4412         a generic context.
4413         (mono_type_get_desc): Add the type arguments for GENERICINST.
4414         (mono_method_full_name): Stringify the class name using mono_type_full_name
4415         so it picks up generic arguments.
4416
4417 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
4418
4419         * console-io.c: Removed debug output.
4420
4421 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
4422
4423         reflection.c (mono_reflection_create_runtime_class): Alloc
4424         the nested classes linked list using the dynamic image mempool.
4425         Fixes leak in corlib compilation.
4426
4427 2008-08-19  Miguel de Icaza  <miguel@novell.com>
4428
4429         * console-io.c: Fix incredibly annoying behavior on the console
4430         after resuming execution after control-z.   This affected every
4431         console application.
4432
4433 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
4434
4435         * mempool-internals.h: Header for mono private mempool functions. The first
4436         two function are for allocating glib linked lists using pools.
4437
4438         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
4439
4440         * Makefile.am: Added mempool-internals.h.
4441
4442 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
4445         (mono_domain_free): Ditto.
4446
4447         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
4448         be used by the JIT to store its domain-specific information, instead of putting
4449         it directly into MonoDomain.
4450
4451         * domain.c (mono_install_create_domain_hook): New helper function to install
4452         a hook which initializes domain->runtime_info.
4453
4454         * domain.c (mono_install_free_domain_hook): Ditto.
4455         
4456 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
4457
4458         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
4459         asserting if the ares parameter is null.
4460
4461         * mono-perfcounters.c: Fix warnings.
4462
4463         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
4464         is not needed, don't check for interruptions either.
4465         (mono_marshal_get_delegate_end_invoke): Ditto.
4466
4467 2008-08-15  Marek Habersack  <mhabersack@novell.com>
4468
4469         * mono-perfcounters.c (predef_readonly_counter): added support for
4470         reading the ASP.NET Requests Queued counter from another process.
4471
4472 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
4475         MonoImage to simplify the AOT code.
4476
4477 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
4478
4479         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
4480         marshalling. Fixes #416078.
4481
4482 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4483         
4484         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
4485         it is set, looking up the icall address is deferred to the JIT, since 
4486         in embedded scenarios, the icall might not be registered in the runtime
4487         doing the AOT compilation. Backported from the 2.0 branch.
4488
4489 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
4492         Fixes #415621.
4493
4494 2008-08-05  Marek Habersack  <mhabersack@novell.com>
4495
4496         * Makefile.am: added support for cross-compilation.
4497
4498 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
4501
4502 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
4503
4504         * mono-perfcounters.c: jitted methods and jitted bytes counters.
4505
4506 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
4507
4508         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
4509         mono-perfcounters.c: performance counters implementation.
4510
4511 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
4514         to gpointer, letting the AOT code decide what to store in it.
4515
4516 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
4517
4518         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
4519           mono_class_setup_methods if the methods are not initialized.
4520
4521         Code is contributed under MIT/X11 license.
4522
4523 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4524
4525         * verify.c: Remove some debug code I commited by accident.
4526
4527         * verify.c (mono_method_is_valid_in_context): Change the return value
4528         to make possible to distinguish between invalid and unverifiable.
4529
4530         * verify.c (verifier_load_method): Don't return NULL for unverifiable
4531         methods.
4532
4533 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4534
4535         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
4536         constraints. Fixes regression in gtest-253.
4537
4538 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
4539
4540         * verify.c (mono_verifier_verify_class): Don't allow generic types
4541         with explicit layout.
4542
4543         * verify.c (mono_method_verify): Check locals and argument types.
4544
4545 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
4546
4547         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
4548         wait if the thread is in StopRequested state.
4549
4550         * class.c (mono_class_from_name): Refactor the module searching code into
4551         a separate function so it can be reused in the AOT case too.
4552
4553 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
4554
4555         * verify.c (mono_type_is_valid_in_context): Improve the error message.
4556         Check both the type and it's generic type definition for loader errors.
4557         
4558         * verify.c (mono_method_is_valid_in_context): Don't generate another
4559         error when a type errors occur, this leads to the wrong exception been
4560         thrown.
4561
4562 2008-07-28  Dick Porter  <dick@ximian.com>
4563
4564         * icall-def.h
4565         * process.c
4566         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
4567         New internal calls to duplicate and close a process handle.
4568
4569 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
4570
4571         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
4572
4573 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
4576
4577 2008-07-27  Robert Jordan  <robertj@gmx.net>
4578
4579         * class.c (mono_class_init): Don't compute class.has_finalize for
4580         valuetypes. Fixes #412477.
4581
4582 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
4583
4584         * verify.c: Implement constraint equivalence checking.
4585         This is required when a generic parameter is used as
4586         argument to a constrained one.
4587
4588         Fixes #410637.
4589
4590 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
4591
4592         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4593
4594         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
4595
4596         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
4597         synch with managed object layout.
4598
4599 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4600
4601         * verify.c (do_branch_op): Handle valuetypes and generic
4602         arguments properly.
4603
4604         * verify.c (do_cmp_op): Same.
4605
4606         Fixes #410383.
4607
4608 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4609
4610         * generic-sharing.c: Fix memory leaks.
4611
4612         * class.c, class-internals.h: Make
4613         mono_class_inflate_generic_type_with_mempool() non-static.
4614
4615 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
4616
4617         * pedump.c (dump_verify_info): Dump full class name.
4618
4619 2008-07-24  Mark Probst  <mark.probst@gmail.com>
4620
4621         * generic-sharing.c: Removed some old code that didn't do anything.
4622
4623 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
4624         * profiler.c: Added runtime_initialized_event,
4625         mono_profiler_install_runtime_initialized and
4626         mono_profiler_runtime_initialized. This new hook tells the profiler
4627         when the runtime is sufficiently initialized to be able to call
4628         mono_thread_attach on the root appdomain.
4629         * profiler.h, profiler-private.h: Likewise.
4630
4631 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4632
4633         * verify.c (do_cast): Do boxing for generic arguments as well.
4634
4635         * class.c (is_nesting_type): Drop generic instantiations before
4636         checking for nesting.
4637
4638         * class.c (can_access_instantiation): Allow access to generic
4639         arguments.
4640
4641 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
4642
4643         * verify.c (verify_class_for_overlapping_reference_fields):
4644         On some cases, the field size might be zero, guard against that.
4645         Fix the explicit layout check to work as expected.
4646
4647 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
4650         mono_thread_resume () during shutdown, since the thread we want to abort
4651         might be suspended.
4652
4653 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
4656         warning.
4657
4658         * debug-mono-symfile.c: Fix a warning.
4659
4660         * mono-perfcounters.c (get_cpu_times): Fix a warning.
4661
4662         * object.c (mono_class_vtable): Check if exception_type is set, and return
4663         NULL as defined by the function comments.
4664
4665 2008-07-22  Mark Probst  <mark.probst@gmail.com>
4666
4667         * mempool.c: Use malloc for every single mempool allocation if the
4668         configure option is set.  This makes it easier to track mempool
4669         allocations with tools like Valgrind.
4670
4671 2008-07-22  Jb Evain  <jbevain@novell.com>
4672
4673         * reflection.c (create_dynamic_mono_image): emit the same
4674         metadata version that SL2 does when creating a SL2 image.
4675
4676 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * icall-def.h:
4679         * icall.c: New icall System.Enum:get_hashcode. This function
4680         avoids the overhead of boxing the enum to the underlying type.
4681
4682 2008-07-21  Mark Probst  <mark.probst@gmail.com>
4683
4684         * reflection.c (mono_method_get_object): Don't let static RGCTX
4685         invoke wrappers get into MonoReflectionMethods.
4686
4687 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
4688
4689         * object-internals.h:
4690         * object.c: New mono_runtime_class_init_full function
4691         that makes throwing the exception optinal.
4692
4693         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
4694         for the case where the exception object is supplied.
4695
4696 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
4697
4698         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
4699         old ld versions.
4700
4701         Contributed under MIT/X11 license.
4702
4703 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4704
4705         * string-icalls.c (ves_icall_System_String_InternalSplit):
4706         Optimize array allocation by caching the MonoClass of the
4707         array type.
4708
4709         * icall.c (ves_icall_Type_GetMethodsByName): Same.
4710
4711         * reflection.c (mono_param_get_objects): Same.
4712
4713 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
4714
4715         * icall-def.h:
4716         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
4717         It inflates the given type using the class context.
4718
4719 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4720
4721         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
4722         the vtable if it already exists.
4723
4724         * object-internals.h: Add mono_class_try_get_vtable as part of the
4725         internal API.
4726
4727         * reflection.c (mono_type_get_object): Use the MonoObject from the
4728         vtable when possible. Reduces locking contention on reflection heavy
4729         code.
4730
4731 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
4734         g_bit_nth_msf () since that macro is not implemented in eglib.
4735
4736 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
4737
4738         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
4739         on platforms which do not support it.
4740
4741 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
4742
4743         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
4744
4745 2008-07-11  Martin Baulig  <martin@ximian.com>
4746
4747         * mono-debug-debugger.h
4748         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
4749
4750         * mono-debug-debugger.c
4751         (_mono_debugger_interruption_request): New global volatile variable.
4752         (mono_debugger_check_interruption): New public function.
4753
4754         * threads.c
4755         (mono_thread_current_check_pending_interrupt): Call
4756         mono_debugger_check_interruption().
4757         (mono_thread_interruption_checkpoint_request): Likewise.
4758
4759 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4760
4761         * verify.c: Add more type checks for loaded types. Verify the result
4762         handle from ldtoken.
4763
4764 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * loader.c (field_from_memberref): Don't crash if the field
4767         wasn't found.
4768
4769 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4770
4771         * verify.c: Verify if type and method instantiations
4772         don't have invalid VAR or MVAR arguments.
4773
4774 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4775
4776         * verify.c: Fix double free of function pointer list.
4777
4778 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
4779
4780         * object.c (mono_string_to_utf8): Comment the new code as it
4781         breaks under eglib.
4782
4783 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
4784
4785         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
4786
4787 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
4788
4789         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
4790           is not throw too many times.
4791
4792         Code is contributed under MIT/X11 license.
4793
4794 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
4795
4796         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
4797         debugging is turned off.
4798
4799 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
4802
4803 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4804
4805         * class-internals.h, class.c: Added new generic sharing option:
4806         Share only stuff in System.Collections.Generic, which is now the
4807         default.
4808
4809 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4810
4811         * generic-sharing.c, class-internals.h: New function for getting a
4812         generic method in a generic class given the corresponding method
4813         for a different instantiation of the class.  Partly refactored
4814         from mini-trampolines.c.
4815
4816         * class.c: Make sure generic methods have a class_inst if they are
4817         part of a generic class.
4818
4819         * metadata.c (mono_type_stack_size_internal): Handle type
4820         variables.
4821
4822 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4823
4824         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
4825         Signifies whether information on the this/vtable/mrgctx variable
4826         is available.
4827
4828 2008-07-04  Mark Probst  <mark.probst@gmail.com>
4829
4830         * object.c, object-internals.h, icall.c: New function
4831         mono_delegate_ctor_with_method(), which does the same as
4832         mono_delegate_ctor(), but takes an explicit method argument
4833         instead of taking the method from the jit info.
4834
4835         * marshal.c: When creating a delegate with an inflated method take
4836         the "this" argument as the target class for the castclass.
4837
4838 2008-07-03  Mark Probst  <mark.probst@gmail.com>
4839
4840         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
4841         mono_jit_info_table_find() to perform very badly in some cases.
4842
4843 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * icall.c (type_from_typename): Handle 'string'.
4846
4847         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
4848         wrappers into the wrapper_hash, since the key is not a MonoMethod.
4849
4850 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
4851
4852         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
4853
4854         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
4855         number of available managed allocator types.
4856
4857         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
4858         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
4859
4860 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
4861
4862         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
4863         which is a low level lock protecting just the 'jit_code_hash' hash table.
4864
4865         * domain.c: Initialize+cleanup jit_code_hash_lock.
4866         
4867 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4868
4869         * coree.c (mono_load_coree): Set coree_module_handle global variable only
4870         after initialization.
4871
4872         * coree.h: Make MonoFixupExe internal.
4873
4874         Contributed under MIT/X11 license.
4875
4876 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
4877
4878         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
4879         because that is platform independent. Check NumberOfRvaAndSizes in PE32
4880         as well.
4881         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
4882         image being loaded is a CLI image and _CorValidateImage gets called.
4883
4884         * coree.h: Add MonoLoadImage.
4885
4886         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
4887         instead of LoadLibrary.
4888
4889         Contributed under MIT/X11 license.
4890
4891 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
4894         for any primitive type.
4895
4896 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
4897
4898         * object.c (mono_array_new_specific): Optimize this and the other allocation
4899         functions a bit.
4900         
4901         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
4902         domains too if mono_dont_free_domains is set.
4903
4904         * domain-internals.h (mono_dont_free_domains): New internal option controlling
4905         whenever to free appdomain data after it has been unloaded.
4906
4907         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
4908         
4909 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
4910
4911         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
4912         (mono_method_get_equivalent_method): Fix a warning.
4913
4914         * object.c (mono_message_init): Avoid looking up array types for each call.
4915
4916 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
4917
4918         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
4919         call.
4920
4921         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
4922         even more.
4923
4924         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
4925         each iteration.
4926
4927         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
4928         fields of an enum.
4929
4930 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
4931
4932         * object.c (mono_value_box): Fix boxing of nullables.
4933
4934 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
4935
4936         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
4937         mono_module_handle that is defined by the linker; no initialization required.
4938         * coree.h: Remove mono_module_handle, add __ImageBase, update
4939         mono_image_open_from_module_handle.
4940         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
4941         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
4942         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
4943         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
4944         to 4 GB away from image base address. IA64 version is not tested but was very
4945         easy to implement and should work if we ever need it.
4946         * domain.c (mono_init_internal): Avoid system error message boxes.
4947         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
4948         with has_entry_point. Handle do_mono_image_load fauilre correctly.
4949         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
4950         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
4951         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
4952
4953         Contributed under MIT/X11 license.
4954
4955 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4956
4957         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
4958         as part of the private mono API.
4959         
4960         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
4961         Do proper argument checking for methods that belong to generic classes.
4962         Do proper type resolution for GMFH/2.
4963         Fixes #377324.
4964         
4965 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4966
4967         * verify.c (do_switch): Fix a memory corruption bug with
4968         the jump index is out of bound.
4969
4970 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4971
4972         * verify.c: Disable debug code.
4973
4974 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * reflection.c (mono_image_get_methodbuilder_token): Use
4977         mono_image_get_methodspec_token_for_generic_method_definition
4978         instead of mono_image_get_memberref_token. We cache more memberef
4979         entries now.
4980
4981 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4982
4983         * verify.c: Inflate exception clause types.
4984         Fixes #402606.
4985         
4986 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4987
4988         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
4989         name.
4990
4991         * reflection.c (mono_image_get_ctorbuilder_token): Same.
4992
4993         * reflection.c (mono_image_create_method_token): Same.
4994
4995 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
4996
4997         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
4998         It does the same as mono_image_get_methodref_token but works on
4999         MethodBuilder.
5000
5001         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
5002         and always generate a methodspec. This follows the old behavior and fixes
5003         the regressions in System.Core. 
5004
5005 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
5008         don't event mono_class_get () succeeds. Fixes #402182.
5009
5010 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5011
5012         * metadata-internals.h: Added MonoDynamicImage::methodspec
5013         hashtable to store methodspec tokens created for MethodBuilders.
5014
5015         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
5016         MethodBuilders as open instantiations if a methodspec was requested.
5017
5018         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
5019
5020         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
5021
5022         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
5023
5024         Fixes bug #349190.
5025
5026 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
5027
5028         * loader.c (method_from_methodspec): Avoid crashing if the
5029         method lookup fails.
5030
5031 2008-06-20  Dick Porter  <dick@ximian.com>
5032
5033         * socket-io.c (get_socket_assembly): Cope with Moonlight network
5034         classes being in a different assembly.  Fixes bug 399184.
5035
5036 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * loader.c (mono_loader_init): Make this callable multiple times.
5039         (mono_dllmap_insert): Call mono_loader_init () so this works even before
5040         the runtime is initialized. Fixes #401755.
5041
5042 2008-06-19  Dick Porter  <dick@ximian.com>
5043
5044         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
5045         Fixes bug 349688.
5046
5047 2008-06-19  Dick Porter  <dick@ximian.com>
5048
5049         * socket-io.c:
5050         * icall-def.h: Implement Socket generic Send() and Receive()
5051         methods.  Fixes bug 395168.
5052
5053 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
5054
5055         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
5056
5057         Contributed under MIT/X11 license.
5058
5059 2008-06-18  Martin Baulig  <martin@ximian.com>
5060
5061         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
5062         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
5063         set to 80.0.  The debugger <-> runtime interface is now frozen as
5064         well.   
5065
5066         * mono-debug.c
5067         (mono_debug_debugger_version): Bump to 4.
5068
5069 2008-06-18  Martin Baulig  <martin@ximian.com>
5070
5071         * debug-mono-symfile.c
5072         (load_symfile): Don't check the minor version.
5073
5074         * debug-mono-symfile.h: Bump the version number to 50.0.
5075
5076 2008-06-18  Martin Baulig  <martin@ximian.com>
5077
5078         * debug-mono-symfile.c
5079         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
5080         minimum required version.
5081
5082 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5083
5084         * reflection.c (mono_custom_attrs_from_property): Fix support for
5085         retriveving cattrs of dynamic inflated generic types.
5086
5087         * reflection.c (mono_custom_attrs_from_event): Same.
5088
5089         * reflection.c (mono_custom_attrs_from_field): Same;
5090
5091         * reflection.c (typebuilder_setup_events): Same cattrs of events.
5092
5093         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
5094         Moved to metadata.c.
5095
5096         * metadata.c: New functions to retrive the equivalent field, event
5097         of property from the generic type definition.
5098
5099         * metadata-internals.h: Added new functions from metadata.c.
5100
5101 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
5102
5103         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
5104         to cached in a mempool is used.
5105
5106         * metadata.c (free_generic_class): In some situations field generic_info type
5107         is not properly dup'ed and leads to double free'ing.
5108
5109         Fixes #400643.
5110
5111 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5112
5113         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
5114         this arguments (will be needed later for generic methods).
5115         Collect stats.
5116
5117 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5118
5119         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
5120         Create a static RGCTX invoke wrapper for methods which require it.
5121
5122 2008-06-17  Mark Probst  <mark.probst@gmail.com>
5123
5124         * object.c, class-internals.h: New function for checking whether
5125         an individual field is special static.
5126
5127 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
5128
5129         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
5130         linear search since the table is sorted.
5131
5132         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
5133         Fixes #324180.
5134
5135 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
5138         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
5139
5140         * gc.c (mono_domain_finalize): Allow an infinite timeout.
5141
5142         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
5143         
5144         * threads.c (mono_thread_request_interruption): Get rid of locking, use
5145         InterlockedCompareExchange to query and modify 
5146         thread->interruption_requested.
5147
5148         * object-internals.h (struct _MonoThread): Change interruption_requested
5149         to a gint32 so it can be modified by atomic operations. Add 
5150         'critical_region_level' from the managed side, change small_id to a guint32,
5151         add new set of 'unused' fields.
5152
5153         * appdomain.c: Bump corlib version.
5154
5155 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
5156
5157         * class.c (mono_class_from_name): Search modules as well. Fixes
5158         #322332.
5159
5160 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5161
5162         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
5163         templates.  Templates are generalized with an additional type_argc
5164         argument.  RGCTX templates have type_argc==0, MRGCTX templates
5165         have type_argc>0.
5166
5167         * domain-internals.h, domain.c: New hash table for looking up
5168         MRGCTXs.
5169
5170         * metadata.c, metadata-internals.h: Rename hash and equal
5171         functions for MonoGenericInst's and make them public.
5172
5173         * class-internals.h: New data structures for the MRGCTX.  Macros
5174         for distinguishing slots in the RGCTX and the MRGCTX.
5175
5176 2008-06-13  Mark Probst  <mark.probst@gmail.com>
5177
5178         * object.c (mono_method_get_imt_slot): Put the same methods of
5179         different instantiations of the same generic interface in the same
5180         IMT slots, to make generic sharing simpler.
5181
5182 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5183
5184         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
5185
5186         * metadata.c (mono_metadata_field_info_with_mempool): Added.
5187         This function works just like mono_metadata_field_info, but
5188         accept a mempool as argument to be used allocating memory.
5189
5190         * marshal.c (mono_marshal_load_type_info): Use new function
5191         to load marshal data into image mempool.
5192
5193 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5194
5195         * class.c (mono_class_inflate_generic_type_with_mempool):
5196         This function allows to inflate a generic type using
5197         a mempool.
5198
5199         * class.c (inflate_generic_type): Take a mempool as argument
5200         and use it to do type dup'ing.
5201
5202         * class.c (mono_class_setup_fields): Field type for generic
5203         generic classes are allocated from the image mempool.
5204
5205         * metadata.c (free_generic_class): Inflated field type is
5206         now allocated in the image mempool.
5207
5208 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
5209
5210         * threads.c (thread_cleanup): Free MonoThread::name.
5211
5212 2008-06-12  Marek Habersack  <mhabersack@novell.com>
5213
5214         * appdomain.c (ensure_directory_exists): avoid unnecessary
5215         mkdir(2) calls when the shadow directory already exists.
5216         (mono_make_shadow_copy): copy also satellite assemblies from the
5217         private bin directories.
5218
5219 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
5222         
5223         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
5224         a page boundary. Fixes #396219.
5225
5226 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5227
5228         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
5229         due to double-checked locking.
5230
5231 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5232
5233         * assembly.c (build_assembly_name): Release memory on failure.
5234
5235         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
5236
5237 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5238
5239         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
5240         memory on failure.
5241
5242 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5243
5244         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
5245         memory on failure.
5246
5247 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * loader.c (field_from_memberref): Check if field signature type is equal
5250         to the non-inflated type of the field. Fixes #398980.
5251
5252 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * assembly.c (mono_assembly_load_from_full): Call 
5255         mono_assembly_load_friends () outside the assemblies lock, since it can
5256         acquire the loader lock. Fixes #323696.
5257
5258         * reflection.c (resolve_object): Inflate the inst with the context for
5259         FieldOnTypeBuilderInst. Fixes #399010.
5260
5261 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5262
5263         * reflection.c (mono_image_get_field_on_inst_token): Don't
5264         inflate the field to encode it's signature. If it's a
5265         VAR or MVAR it should stay that way in the signature.
5266         Fixes #399047.
5267
5268 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * reflection.c (resolve_object): Release memory of inflated types.
5271
5272 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5273
5274         * loader.c (mono_method_get_signature_full): Remove assert about
5275         loading a methodspec to a generic method. We have such methods, such as
5276         System.Threading.Interlocked::CompareExchange<T>.
5277         This assert was removed since it crashes the verifier when it checks
5278         methods calling CompareExchange<T>.
5279
5280 2008-06-10  Marek Safar  <marek.safar@gmail.com>
5281
5282         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
5283         of Type array and not MonoType.
5284
5285 2008-06-10  Marek Habersack  <mhabersack@novell.com>
5286
5287         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
5288         <lupus@ximian.com>
5289
5290 2008-06-10  Martin Baulig  <martin@ximian.com>
5291
5292         * debug-mono-symfile.h
5293         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
5294         changes to the file format, but we were generating incorrect
5295         source file indices in the line number table due to a bug, which
5296         made backtraces report an incorrect source file.
5297
5298 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
5299
5300         * mono-debug.c: Moved mono_debug_free_method_jit_info from
5301         mini/debug-mini.c to here.
5302
5303         * mono-debug.c (il_offset_from_address): Free memory from find_method.
5304
5305         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
5306         use it to release structs returned by mono_debug_find_method.
5307
5308 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
5311         since it needs to set method->slot for all interface methods.
5312
5313 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5314
5315         * class-internals.h: Forgot to add.
5316
5317 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5318
5319         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
5320
5321         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
5322         Lookup the custom attributes from property_hash.
5323
5324         * reflection.c (mono_save_custom_attrs): Save the custom attributes
5325         in property_hash. Allocate all data using the image mempool.
5326
5327         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
5328         for dynamic_custom_attrs to checks if the image is dynamic.
5329
5330 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5331
5332         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
5333         assemblies array.
5334         
5335         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
5336         runtime functions while holding the domain assemblies lock.
5337
5338 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * verify.c: Reapplied the last bit of the reverted changes.
5341
5342 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
5343
5344         * verify.c: Reapplied more of the reverted changes.
5345
5346 2008-06-09  Martin Baulig  <martin@ximian.com>
5347
5348         * debug-mono-symfile.c (load_symfile): Check the major version
5349         first; if it's wrong, don't print the minor version in the error message.
5350
5351 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
5352
5353         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
5354         lock instead of the domain lock to avoid deadlocks, since the thread might
5355         already hold the loader lock.
5356
5357         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
5358         (mono_thread_attach): Ditto.
5359
5360         * monitor.c: Use a TLS variable for holding the current thread id instead
5361         of calling pthread_self ().
5362         (mono_monitor_init_tls): New internal function to initialize the TLS
5363         variable.
5364         (mono_monitor_try_enter_internal): Put the owner == id check after the
5365         owner == 0 check.
5366
5367         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
5368         missed optimizations when using gcc-4.3.
5369
5370 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
5371
5372         * reflection.c (mono_dynamic_image_free): Free the memory
5373         used by MonoGenericParam in MonoDynamicImage::gen_param.
5374
5375         * reflection.c (mono_reflection_setup_generic_class): Allocate
5376         container from mempool.
5377
5378         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
5379         container from mempool.
5380
5381 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * threads.c (mono_set_pending_exception): New internal function to set the
5384         pending exception of the current thread.
5385         (mono_thread_get_and_clear_pending_exception): Check for 
5386         thread->pending_exception as well.
5387
5388         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
5389
5390         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
5391         it can trigger a collection.
5392
5393 2008-06-06  Martin Baulig  <martin@ximian.com>
5394
5395         Merged the `debugger-kahalo' branch.
5396
5397         * mono-debug.h
5398         (MONO_DEBUGGER_VERSION): Bumped to 72.
5399
5400         * debug-mono-symfile.h
5401         (MonoSymbolFileMethodIndexEntry): Removed.
5402         (MonoSymbolFileMethodEntry): New public typedef.
5403         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
5404         (MonoSymbolFileSourceEntry): Remove everything except `index' and
5405         `data_offset'.
5406         (MonoSymbolFileMethodEntry): Removed.
5407         (MonoSymbolFileLexicalBlockEntry): Removed.
5408         (MonoSymbolFileLineNumberEntry): Removed.
5409         (MonoDebugLexicalBlockEntry): Removed.
5410         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
5411         removed `num_il_offsets' and `il_offsets'.
5412         (MonoSymbolFile): Replace `version' with `major_version' and
5413         `minor_version'.
5414         (MONO_SYMBOL_FILE_VERSION): Replace with
5415         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
5416         `MONO_SYMBOL_FILE_MINOR_VERSION'.
5417
5418         * debug-mono-symfile.c
5419         (mono_debug_symfile_lookup_location): Add support for the new line
5420         number table format.
5421
5422 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5423
5424         * metadata.c (free_generic_class): Release the inflated
5425         MonoClass of dynamic generic classes if it's not a generic
5426         type definition.
5427
5428 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5429
5430         * verify.c: Reapplied more of the reverted changes.
5431
5432 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5433
5434         * reflection.c (lookup_custom_attr): Clean the cached flag or
5435         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
5436         for SRE types.
5437
5438 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
5439
5440         * verify.c: Reapplied a small part of the reverted changes.
5441
5442 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
5445
5446         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
5447         previously in managed code.
5448         (mono_monitor_exit): Ditto.
5449         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
5450
5451         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
5452         the managed definition.
5453
5454 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5455
5456         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
5457
5458 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
5461         
5462         * monitor.c: Add some micro optimizations.
5463
5464         * icall.c (type_from_typename): Handle 'bool'.
5465
5466 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
5467
5468         * verify.c: Implement constructor verification per P III 1.8.1.4.
5469         Fixes #396716.
5470
5471 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
5474         holding the assemblies lock here too.
5475
5476 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5477
5478         * verify.c: Kill stack_top function.
5479
5480 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5481
5482         * verify.c: Kill stack_get function.
5483
5484 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5485
5486         * verify.c (mono_method_verify): Last change broke the build. Fixed.
5487
5488 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
5489
5490         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
5491         more reliable.
5492
5493         * verify.c (mono_method_verify): Inflate params and locals to avoid
5494         mismatch when checking for compatibility.
5495
5496 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
5497
5498         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
5499         Length prefix should be size in bytes. Fix bug #339530.
5500         
5501         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
5502         Length prefix should be size in bytes. Fix bug #339530.
5503
5504         Code is contributed under MIT/X11 license.
5505
5506 2008-06-05  Bill Holmes <billholmes54@gmail.com>
5507
5508         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
5509
5510         Contributed under MIT/X11 license.
5511
5512 2008-06-05  Martin Baulig  <martin@ximian.com>
5513
5514         * mono-debug-debugger.c
5515         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
5516
5517 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
5520         while holding the assemblies lock to prevent deadlocks. Handle the case
5521         where the search hook returns NULL but the assembly was still loaded.
5522         Fixes #323696.
5523
5524         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
5525         modify domain state.
5526
5527 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
5528
5529         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
5530         * Makefile.am (pedump_LDADD): Post-process object files and
5531         add dtrace-generated object file, if necessary.
5532
5533         Code is contributed under MIT/X11 license.
5534
5535 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5536
5537         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
5538
5539 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
5542
5543 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5544
5545         * threads.c: Try to free everything from the delayed free table
5546         when shutting down threads, and set the variable to NULL after the
5547         table is freed so that calling
5548         mono_thread_hazardous_try_free_all() when shutting down the root
5549         domain doesn't crash.
5550
5551 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
5552
5553         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
5554         the caller if resulting type was inflated.
5555
5556         * class.c (mono_class_create_from_typespec): Free the MonoType if it
5557         was inflated.
5558
5559         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
5560
5561
5562 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
5565         class library tests.
5566
5567         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
5568         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
5569         #396989.
5570
5571 2008-06-04  Mark Probst  <mark.probst@gmail.com>
5572
5573         * domain.c, domain-internals.h: The JIT infos are now freed by the
5574         JIT info table code.  They are freed immediately if there only a
5575         single JIT info table in circulation.  If there is more, the free
5576         is delayed via a queue.
5577
5578         * threads.c, threads-types.h: New hazard pointer function for
5579         freeing all freeable delayed items in one sitting.
5580
5581 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5582
5583         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
5584
5585         * reflection.c (typebuilder_setup_properties): Same.
5586
5587         * reflection.c (typebuilder_setup_events): Same.
5588
5589 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
5592         and use it for allocating memory.
5593
5594         * reflection.c (mono_marshal_spec_from_builder): Same.
5595
5596         * reflection.c: Change code to use new signatures.
5597
5598         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
5599
5600 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5601
5602         * decimal.c (rescale128): Put back one line which was accidently commented
5603         out.
5604         
5605         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
5606         to cause crashes.
5607
5608 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5609
5610         * reflection.c (mono_reflection_generic_class_initialize): Name must
5611         be always malloc'ed so we can free it later on. Do this for field, property
5612         and event.
5613
5614         * metadata.c (free_generic_class): Free field, property and event names.
5615
5616 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5617
5618         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
5619         instead of g_memdup.
5620
5621         * reflection.c (typebuilder_setup_fields): Same.
5622
5623 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5624
5625         * decimal.c (rescale128): Optimize this function a bit more.
5626
5627 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5628
5629         * metadata.c (free_generic_class): Release some memory from
5630         SRE generic classes.
5631
5632 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
5633
5634         * reflection.c (mono_image_get_generic_field_token): No reference
5635         to name is kept, free it.
5636
5637         * reflection.c (mono_reflection_generic_class_initialize): Free
5638         more memory of the inflated field.
5639
5640 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
5643         code.
5644
5645 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5646
5647         * reflection.c (mono_dynamic_image_free): Release memory used by
5648         MonoDynamicImage::array_methods elements.
5649
5650         * reflection.c (assembly_add_win32_resources): Release memory after
5651         encoding.
5652
5653 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * decimal.c (log2_32): Use an optimized version for this function too.
5656         
5657         * decimal.c (log2_64): Fix this on 32 bit machines.
5658
5659 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
5660
5661         * class.c (mono_dup_array_type): Implement allocation using a mempool.
5662
5663         * class.c (mono_metadata_signature_deep_dup): Same.
5664
5665         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
5666         a mempool.
5667
5668         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
5669
5670         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
5671
5672         * metadata-internals.h: Added mono_metadata_signature_dup_full.
5673
5674         * class-internals.h: Update signatures to take a MonoMemPool.
5675
5676 2008-06-02  Dick Porter  <dick@ximian.com>
5677
5678         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
5679         * icall-def.h: Add
5680         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
5681         FormatMessage API to get the error text.  Fixes bug 321827.
5682
5683 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * decimal.c: Add some micro optimizations to make decimal operations faster.
5686
5687 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * reflection.c (method_encode_clauses): Take a mempool
5690         as parameter and use it to allocate the clause array.
5691
5692         * reflection.c (mono_image_get_field_on_inst_token): Free
5693         the inflated type after encoding it.
5694
5695         * reflection.c (mono_dynamic_image_free): Free each element
5696         of MonoDynamicImage::gen_params.
5697
5698         * reflection.c (reflection_methodbuilder_to_mono_method):
5699         Allocate the generic param array from the mempool.
5700         Allocate signature params from the mempool.
5701
5702         * reflection.c (mono_reflection_generic_class_initialize):
5703         Free inflated fields after been used.
5704
5705 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5706
5707         * icall.c: Reapply the memory leak fixes as they no
5708         longer make mono crash.
5709
5710 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
5711
5712         * reflection.c (mono_type_get_object): Don't store the suplied
5713         MonoType with type_hash. A caller which pass a type that
5714         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
5715         might end with a pointer to freed memory.
5716         The solution is to use byval_arg or this_arg from the associated
5717         MonoClass of the supplied type.
5718
5719 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
5720
5721         * icall.c: Revert the rest of the last change as it breaks the build too.
5722
5723 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5724
5725         * icall.c: Revert a leak fix as it's breaking the build.
5726
5727 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5728
5729         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
5730
5731 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
5734
5735 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * icall.c: Fix some memory leaks.
5738
5739 2008-05-29  Dick Porter  <dick@ximian.com>
5740
5741         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
5742         async socket operations from the pending list when a socket
5743         closes.  Leaving it until the threadpool services the event
5744         exposes a race condition when a socket descriptor is reused.
5745         Fixes bug 377589.
5746
5747 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5748
5749         * object.c: Fix negative index check for array alocation.
5750
5751 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5752
5753         * icall.c, marshal.c: Delegate wrappers should skip visibility.
5754         This check is performed by the verifier for IL created delegates
5755         and by Delegate::CreateDelegate for programatically created ones.
5756         Fixes #372406.
5757
5758 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5759
5760         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
5761         Fix code to use mono_array_size_t instead of int.
5762
5763         Based on patch by Luis F. Ortiz.
5764         Contributed under X11 license.
5765         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5766
5767 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * icall.c: Added ves_icall_System_Array_GetLongLength and
5770         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
5771         arrays.
5772
5773         * icall.h: Export both new functions.
5774
5775         Based on patch by Luis F. Ortiz.
5776         Contributed under X11 license.
5777         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5778
5779 2008-05-28  Martin Baulig  <martin@ximian.com>
5780
5781         The debugger now requires exactly r103463.
5782
5783         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
5784         This version is not supported by the debugger, wait for 72.
5785
5786 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5787
5788         * object.h: Changed array related functions to use
5789         mono_array_size_t instead of guint32. Forgot to commit this file.
5790
5791         Patch by Luis F. Ortiz.
5792         Contributed under X11 license.
5793         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5794
5795
5796 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
5797
5798         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
5799         don't define it. Use the number literal instead.
5800
5801 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * icall.c: Changed array related functions to use
5804         mono_array_size_t instead of guint32.
5805
5806         * icall.c (ves_icall_System_Array_GetLength): Check for length
5807         overflow under MONO_BIG_ARRAYS.
5808
5809         Based on patch by Luis F. Ortiz.
5810         Contributed under X11 license.
5811         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5812
5813 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5814
5815         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
5816
5817         Based on patch by Luis F. Ortiz.
5818         Contributed under X11 license.
5819         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5820
5821 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5822
5823         * object.c, object.h: Changed array related functions to use
5824         mono_array_size_t instead of guint32.
5825
5826         Patch by Luis F. Ortiz.
5827         Contributed under X11 license.
5828         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5829
5830 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
5831
5832         * object.h: Introduced mono_array_size_t typedef. This must be used
5833         in all places an array length is expected. This is 64bits wide if
5834         MONO_BIG_ARRAYS is enabled.
5835
5836         Patch by Luis F. Ortiz.
5837         Contributed under X11 license.
5838         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
5839
5840 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * security-manager.c class.c: Set the class exception info by calling
5843         mono_class_set_failure ().
5844
5845         * class.c (mono_class_get_exception_data): New accessor function.
5846         (mono_class_set_failure): Store exception_data in the property hash.
5847
5848         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
5849         the struct as a property.
5850
5851         * loader.c (mono_get_method_full): Store the lookup result for method
5852         tokens in method_cache, the others in methodref_cache to decrease the memory
5853         usage of hash tables.
5854
5855         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
5856         (mono_image_init): method_cache is lazy inited now.
5857
5858         * metadata-internals.h (struct _MonoImage): Change method_cache to
5859         a MonoValueHashTable, add a separate methodref_cache.
5860
5861 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
5862
5863         * number-formatter.h: Fix tables to avoid arithemtic overflow in
5864           Double.ToString as exposed by Bug #383531.
5865
5866 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
5867
5868         * number-formatter.h: Make some tables static.
5869
5870         * class.c (mono_method_set_generic_container): New accessor function.
5871         (mono_method_get_generic_container): Ditto.
5872
5873         * class-internals.h (struct _MonoMethod): Remove rarely used 
5874         'generic_container' field, store it in the property hash instead. Add 
5875         'is_generic' boolean field instead.
5876
5877         * image.c (mono_image_init): Initialize property_hash.
5878         (mono_image_close): Destroy property_hash.
5879
5880         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
5881         hold rarely used fields of runtime structures belonging to this image.
5882
5883         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
5884         to get/set method->generic_container.
5885
5886         * loader.c (mono_get_method_from_token): Avoid loading the method header for
5887         generic methods.
5888
5889 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
5890
5891         * class.c (mono_class_inflate_generic_method_full): Don't increase
5892         mono_stats.inflated_method_count for methods found in the cache.
5893
5894         * threads.c (mono_thread_request_interruption): Add a comment about 
5895         QueueUserAPC ().
5896
5897 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
5900         interface_offsets_packed table.
5901         
5902         * class.c (mono_class_init): Remove some dead code.
5903
5904         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
5905         mono_class_setup_vtable () when CAS is active to detect security problems.
5906
5907 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
5908
5909         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
5910
5911         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
5912         parameters as it's irrelevant for delegate checking.
5913
5914 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
5917
5918         * class.c (mono_class_init): Control the creation of a generic vtable using
5919         a global which is true by default, but set to false by the runtime startup code.
5920         
5921         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
5922         Disabled for now since it breaks the embedding API.
5923         Move the setup of class->methods for arrays to mono_class_setup_methods ().
5924         (mono_class_setup_methods): Add a memory barrier.
5925
5926         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
5927         when mono_class_init () doesn't compute the generic vtable.
5928         
5929 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
5930         * profiler.c: Added mono_profiler_install_statistical_call_chain,
5931         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
5932         to support call chains (backtrace) in the stat profiler.
5933         * profiler.c, profiler-private.h: Likewise.
5934
5935 2008-05-22  Mark Probst  <mark.probst@gmail.com>
5936
5937         * generic-sharing.c: Init generic class when a method of it is
5938         requested via a runtime generic context.
5939
5940 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
5941
5942         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
5943
5944         * reflection.c (mono_type_get_object): Add a FIXME.
5945
5946         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
5947
5948         * class.c (mono_class_get_method_by_index): New helper function, returning an
5949         entry in the class->methods array.
5950
5951 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * class.c (mono_class_init): Only do the array optimization for szarrays. 
5954         Avoid creating a generic vtable for generic instances as well.
5955         (mono_class_get_method_from_name_flags): Don't search in the metadata for
5956         generic instances.
5957
5958 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
5959
5960         * loader.c (mono_get_method_constrained): Inflate the signature
5961         with class context. Fix #325283.
5962
5963 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
5964
5965         * object.c (mono_class_create_runtime_vtable): Add a comment.
5966
5967         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
5968         where needed.
5969         (setup_interface_offsets): Handle the case when this is called twice for arrays.
5970         (mono_class_setup_vtable_general): Add an assert.
5971         (mono_class_init): Avoid creating a generic vtable for arrays.
5972
5973         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
5974         here, let mono_class_init () do that.
5975
5976         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
5977         interfaces in mscorlib.
5978
5979         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
5980         interfaces. Add some comments.
5981         (mono_class_init): Call mono_class_setup_methods () here since it is no
5982         longer called by mono_class_setup_vtable ().
5983
5984         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
5985         not set in class->vtable.
5986         (mono_class_create_runtime_vtable): Reenable the disabled code.
5987
5988         * object.c (mono_class_create_runtime_vtable): Disable the last change for
5989         now as it causes some test failures.
5990
5991         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
5992         if using the vtable trampoline. Also remove some strange code which put the
5993         generic methods themselves into the vtable slots. Remove the AOT init_vtable
5994         stuff as it is no longer needed.
5995
5996 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
5997
5998         * pedump.c: Give make --verify all option check code as well.
5999         Using --verify code won't check for metadata now.
6000
6001 2008-05-19  Martin Baulig  <martin@ximian.com>
6002
6003         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
6004
6005         * mono-debug.c
6006         (_mono_debug_using_mono_debugger): New global variable; it's set
6007         directly by the debugger, so mono_debug_using_mono_debugger() also
6008         works after attaching.
6009
6010 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
6011
6012         * object.c (mono_class_create_runtime_vtable): Use memory barriers
6013         as we do double checked locking on MonoClass::runtime_info and
6014         MonoClassRuntimeInfo::domain_vtables.
6015
6016 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
6017
6018         * debug-helpers.c (print_field_value): Fix a warning.
6019
6020 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
6023         set in the AOT case.
6024
6025 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6026
6027         * class.c (mono_class_setup_vtable_general): Use memory barriers
6028         as we do double checked locking on MonoClass::vtable.
6029
6030 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
6031
6032         * reflection.c (resolve_object): Inflate only if the generic context
6033         is not null. Fixes #389886.
6034
6035 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
6036
6037         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
6038         instead of g_free.
6039
6040         Code is contributed under MIT/X11 license.
6041
6042 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6043
6044         * class.c: Revert unrelated change.
6045
6046 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
6049         a generic instantiation, use mono_class_from_mono_type instead of playing
6050         with MonoType directly.
6051
6052 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
6053
6054         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
6055         checks must ignore generic instantiations, so mono_class_has_parent is not
6056         suitable. Fixes #390128.
6057
6058 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
6059
6060         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
6061         it to avoid registering tokens during metadata generation. Fixes #390023.
6062
6063 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6064
6065         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
6066         consistent.
6067
6068         Contributed under MIT/X11 license.
6069
6070 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
6071
6072         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
6073         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
6074         to fixup the EXE image.
6075         (mono_cleanup): Use mono_close_exe_image.
6076         (mono_close_exe_image): New function.
6077         * image.c: Include "marshal.h".
6078         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
6079         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
6080         counting when the image is loaded outside of mono_image_open_full. Set status
6081         based on GetLastError.
6082         * coree.c: Include required headers. Add init_from_coree.
6083         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
6084         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
6085         (_CorExeMain): Set init_from_coree.
6086         (CorExitProcess): Only call ExitProcess for now.
6087         (CorBindToRuntimeEx): New stub implementation.
6088         (CorBindToRuntime): New function.
6089         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
6090         (MonoFixupExe): ILONLY executables require no fixups.
6091         (mono_set_act_ctx): New function to set activation context.
6092         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
6093         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
6094         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
6095         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
6096         as MONO_INTERNAL.
6097         * domain-internals.h: Add mono_close_exe_image.
6098
6099         Contributed under MIT/X11 license.
6100
6101 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
6102
6103         * metadata.c (mono_metadata_compute_size): Correctly calculate field
6104         size for generic param and event tables. Fixes #388977.
6105
6106 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
6107
6108         * loader.c (mono_method_signature): Use memory barriers because of the double
6109         checked locking pattern.
6110
6111         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
6112         aborting or aborted as well. Fixes #376391.
6113         
6114         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
6115         existing runtime state in the Suspend handler during shutdown.
6116
6117 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
6118
6119         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
6120
6121         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
6122         which are starting up or shutting down.
6123
6124         * threads.c (mono_threads_set_shutting_down): Don't return a value since
6125         this function never returns if the runtime is already shutting down.
6126
6127         * icall.c (ves_icall_System_Environment_Exit): Update after 
6128         mono_threads_set_shutting_down () signature change.
6129         
6130 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
6131
6132         * class.c: Added can_access_instantiation to verify if the instantiation
6133         is visible. Fix access check for nested types as they returned TRUE
6134         before doing type and generic instantiation visibility checks.
6135
6136 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6137
6138         * reflection.c (mono_reflection_create_generic_class): The created type
6139         must have a different container from its TypeBuilder. Otherwise they
6140         will end sharing generic arguments, which is wrong.
6141
6142         Due to the sharing, making a generic instance of the created type using
6143         the TypeBuider generic arguments resulted in the generic type definition
6144         been returned, which is wrong as well.
6145
6146         As a bonus the code was leaking the type_params array. This memory should
6147         be allocated from the image mempool.
6148
6149         This fixes bug #354047.
6150
6151 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
6152
6153         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
6154         to here         as they are now used in assembly.c new code.
6155         Added a skipverification flag to MonoAssembly.
6156         New internal function mono_assembly_has_skip_verification.
6157
6158         * assembly.c: New function mono_assembly_has_skip_verification. It checks
6159         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
6160         part of #387274.
6161
6162 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6163
6164         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
6165         needed. Fixes #387034.
6166
6167         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
6168
6169 2008-05-06  Miguel de Icaza  <miguel@novell.com>
6170
6171         * assembly.c (mono_assembly_load_reference): Prevent crash while
6172         disassembling Silverlight 2.0 executables while we still do not
6173         have GACed libraries.
6174
6175 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * reflection.c: Special case generic type definitions as well. Fixes #383444.
6178
6179 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
6180
6181         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
6182         of the dynamic case. Fixes #387404.
6183
6184 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         *verify.c (mono_verifier_is_class_full_trust): If under
6187         verify_all and the verifier mode was not set, only
6188         gac and corlib types are fulltrust. This makes --verify-all
6189         usable to detect unverifiable code, which is the expected
6190         use case.
6191
6192 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6193
6194         * verify.h: Ops, commited the header with debug
6195         enabled.
6196
6197 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
6198
6199         * verify.c (merge_stack): Use the new value on unverifiable
6200         stack merges.
6201
6202         * verify.c (verify_type_compatibility_full): Comparison
6203         of nullable types can't use mono_class_is_assignable_from.
6204
6205         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
6206         that makes all verification errors be reported.
6207
6208         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
6209         mono_method_verify.
6210
6211 2008-05-05  Robert Jordan  <robertj@gmx.net>
6212
6213         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
6214         support for value types. See #386415.
6215
6216         * object.c: comments.
6217
6218         Code is contributed under MIT/X11 license.
6219
6220 2008-05-05  Martin Baulig  <martin@ximian.com>
6221
6222         * debug-mono-symfile.h
6223         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
6224         for old pre-terrania symbol files.
6225
6226 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6227
6228         * mono-config.c: Add ppc64 architecture.
6229
6230         Code is contributed under MIT/X11 license.
6231
6232 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
6233
6234         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
6235           PPC64 uses function descriptors as well.
6236
6237         Code is contributed under MIT/X11 license.
6238
6239 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
6240
6241         * object.c (compute_class_bitmap): Ignore literal static fields.
6242
6243         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
6244         var has an invalid format.
6245         (describe_ptr): Add some sanity checks for the vtable.
6246         (add_nursery_frag): Clear unused nursery fragments.
6247         (major_collection): Clear all remaining nursery fragments.
6248
6249 2008-05-03  Robert Jordan  <robertj@gmx.net>
6250
6251         * image.c, metadata-internals.h: add thunk_invoke_cache.
6252
6253         * marshal.c, marshal.h: implement
6254         mono_marshal_get_thunk_invoke_wrapper ().
6255
6256         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
6257
6258         Code is contributed under MIT/X11 license.
6259
6260 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * verify.c (do_leave): Empty the stack.
6263
6264 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
6265
6266         * class.c (mono_class_is_assignable_from): Variance
6267         doesn't work between reference and value types. For example,
6268         given type C<T+>, C<int32> is not assignable to C<object>.
6269         Break the argument checking loop on first error. 
6270
6271 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
6272
6273         * icall.c : base64_to_byte_array() needs some more strict
6274           check for sequence of '=' characters. Patch by Santa
6275           Marta (http://deee.g.hatena.ne.jp/santamarta).
6276
6277           Contributed under MIT/X11 license.
6278           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
6279
6280 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
6281
6282         * domain.c: Disable LoadLibrary support to fix Win32 build.
6283
6284         Code is contributed under MIT/X11 license.
6285
6286 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
6287
6288         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
6289         to help with cache behaviour.
6290
6291 2008-05-01  Miguel de Icaza  <miguel@novell.com>
6292
6293         * appdomain.c (mono_domain_from_appdomain): Add new accessor
6294         method. 
6295
6296 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
6297
6298         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
6299
6300 2008-05-01  Dick Porter  <dick@ximian.com>
6301
6302         * process.c (process_get_fileversion): Only pass 16 bits of
6303         language ID to VerLanguageName.  Fixes bug 381204.
6304
6305 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6306
6307         * verify.c (mono_method_verify): Fix the comparison
6308         operator for code bounds check.
6309
6310 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * verify.c (mono_method_verify): Check the bounds of
6313         all access of the code array.
6314
6315 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
6316
6317         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
6318
6319 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * image.c (mono_image_strong_name_position): Fix return value when the rva is
6322         not valid.
6323
6324 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
6325
6326         * loader.c (mono_get_method_from_token, mono_method_signature): Add
6327         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
6328         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
6329         fixup main EXE images when using mono.exe for mixed-mode assembly support.
6330         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
6331         mono_runtime_load.
6332         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
6333         runtime initialization from metadata.
6334         * assembly.c: Remove obsolete ceGetModuleFileNameA.
6335         (mono_set_rootdir): Use mono_get_module_file_name.
6336         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
6337         handles.
6338         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
6339         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
6340         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
6341         MonoCLIImageInfo. Add support for module handles.
6342         (load_cli_header): Update mono_cli_rva_image_map signature.
6343         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
6344         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
6345         (mono_image_rva_map): Add support for module handles.
6346         (mono_image_ensure_section_idx): Add support for module handles.
6347         (mono_image_close): Add support for module handles.
6348         (do_load_header): Add support for module handles.
6349         (mono_image_open_from_module_handle): New function for internal use.
6350         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
6351         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
6352         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
6353         handles.
6354         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
6355         * image.h: Add mono_image_fixup_vtable.
6356         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
6357         support.
6358         * coree.h: New file.
6359         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
6360         unsupported native code.
6361         (mono_marshal_set_callconv_from_modopt): New function splitted from
6362         mono_marshal_get_managed_wrapper.
6363         (mono_marshal_get_managed_wrapper): Use
6364         mono_marshal_set_callconv_from_modopt.
6365         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
6366         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
6367         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
6368         that results in a deadlock when the runtime is loaded in _CorDllMain.
6369         * Makefile.am: Add coree.c and coree.h.
6370
6371         Contributed under MIT/X11 license.
6372
6373 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6374
6375         * generic-sharing.c: Search for type arguments in array element
6376         types as well.
6377
6378 2008-04-28  Mark Probst  <mark.probst@gmail.com>
6379
6380         * class-internals.h, generic-sharing.c: New, small runtime generic context.
6381
6382         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
6383
6384         * object.c: Don't setup the RGCTX when the vtable is created,
6385         because we're setting it up lazily now.
6386
6387 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
6390         64 bit support.
6391
6392 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * verify.c (verify_class_for_overlapping_reference_fields): 
6395         If class is under fulltrust allow reference types to overllap
6396         if they have the same RVA.
6397
6398 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
6399
6400         * pedump.c: Added new flag valid-only, that makes the verifier
6401         behaves just like --security=validil. It won't fail type load
6402         due to unverifiable restrictions.
6403
6404 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * class-internals.h (struct MonoMethod): Added a verification_success
6407         field to cache verifier executions. Reduced MonoMethod:slot size by
6408         one bit.
6409
6410 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
6411
6412         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
6413         instead of a 'vt' argument to save an indirection and to allow these to be used
6414         for valuetypes.
6415         (scan_vtype): New helper function to scan an area using a gc descriptor.
6416         (mono_gc_wbarrier_value_copy): Implement this.
6417         (handle_remset): Add support for REMSET_VTYPE.
6418         (find_in_remset_loc): Ditto.
6419         (mono_gc_base_init): Allow some debugging options to be controlled through the
6420         use of the MONO_GC_DEBUG env variable.
6421         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
6422         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
6423
6424 2008-04-23  Martin Baulig  <martin@ximian.com>
6425
6426         * domain.c (mono_domain_create): Move the call to
6427         mono_debug_domain_create() down, after allocating the domain id.
6428
6429 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         verify.c (verify_class_for_overlapping_reference_fields): Skip
6432         static fields while verifying for overlapping fields as they
6433         don't matter at all.
6434
6435 2008-04-23  Marek Habersack  <mhabersack@novell.com>
6436
6437         * domain-internals.h: added a declaration of
6438         mono_make_shadow_copy.
6439
6440         * assembly.c (mono_assembly_open_full): shadow copying of
6441         assemblies moved to here, so that all the assemblies within the
6442         application domain's private binary directories can be
6443         processed. Fixes bug #380546
6444
6445         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
6446         mono_make_shadow_copy and made non-static. The decision whether
6447         to shadow-copy an assembly is made based on its location - it's
6448         copied if it's in one of the private application domain binary
6449         directories and its different to the target file in the shadow
6450         directory. Fixes bug #380546
6451
6452 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
6453
6454         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
6455
6456         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
6457         types.
6458
6459         * reflection.c (mono_image_create_token): Handle 
6460         Method/ConstructorOnTypeBuilderInst.
6461         (resolve_object): Ditto.
6462         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
6463         so it can be called from resolve_object. Also handle the case when the inflated
6464         class already has its methods setup.
6465
6466 2008-04-21  Martin Baulig  <martin@ximian.com>
6467
6468         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
6469
6470 2008-04-20  Geoff Norton  <gnorton@novell.com>
6471
6472         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
6473         pointer dereference.
6474
6475 2008-04-15  Marek Habersack  <mhabersack@novell.com>
6476
6477         * appdomain.c (try_load_from): if IOMAP is in effect, call the
6478         portability API to look up the assembly file. Fixes behavior in
6479         situations when the application has a bin/ directory, but the
6480         assembly search patch refers to Bin/ (and thus the requested file
6481         name is Bin/SomeLibrary.dll). Fixes bug #379888
6482
6483 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
6484
6485         verify.c (mono_type_is_generic_argument): Extracted this check
6486         from a dozen places to here.
6487
6488         verify.c: Fixed all issues related to boxing generic arguments
6489         and their constraints.
6490
6491 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
6492
6493         verify.c (mono_class_interface_implements_interface): Fix win32 build.
6494
6495 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
6496
6497         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
6498         isn't finished yet. Fixes #363447.
6499
6500 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
6503         Fixes #346419.
6504
6505 2008-04-13  Jb Evain  <jbevain@novell.com>
6506
6507         * domain.c: update the 2.1 profile versions.
6508         Merged from the Moonlight 2 branch.
6509
6510 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
6511
6512         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
6513         mscorlibs for the non-refonly case as well.
6514
6515         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
6516         in mono_assembly_load_from_full (). Fixes #378924.
6517
6518 2008-04-11  Geoff Norton  <gnorton@novell.com>
6519
6520         * icall.c: The global extern environ doesn't exist on Mac.  We
6521         need to call NSGetEnviron instead.
6522
6523 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         verify.c: Add generic method constraint verification.
6526
6527 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6528
6529         class.c (mono_class_inflate_generic_method_full): Add a long
6530         explanation to the is_mb_open hack. Remove the FIXME.
6531
6532 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6533
6534         * verify.c (mono_method_verify): Mark all unknown opcodes
6535         as invalid. Mark jmp as unverifiable.
6536
6537 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6538
6539         * verify.c: Add code to do type constraint verification on class instances.
6540
6541         * verify.c (mono_verifier_verify_class): Use the type constraint 
6542         verification code.
6543
6544 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * class.c (mono_class_get_field_default_value): Don't pass cindex
6547         as hint to mono_metadata_get_constant_index. The local is not initialized
6548         and should contain garbage most of the time. This could only work
6549         with a lot of luck.
6550
6551 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6552
6553         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
6554
6555 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
6556
6557         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
6558
6559         * class.c (mono_class_from_generic_parameter): Save the token of the
6560         generic param in MonoClass::sizes.generic_param_token.
6561
6562         * reflection.c (mono_custom_attrs_from_class): If the class type is
6563         VAR or MVAR retrieve the attributes of the generic param.
6564
6565 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6566
6567         * class.c (mono_class_init): Do class verification if the verifier
6568         is enabled.
6569
6570 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6571
6572         * verify-internal.h: Added mono_verifier_verify_class.
6573
6574         * verify.c: Added mono_verifier_verify_class. It checks for
6575         classes with explicit layout that have overlapping reference fields.
6576
6577         * pedump.c: Init the verifier state prior to verification. Fixed
6578         command line arguments.
6579
6580 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         * Makefile.am: Added verify-internals.h, hopefully fix the build.
6583
6584 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
6585
6586         * verify-internals.h: Fix a warning.
6587
6588 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6589
6590         * verify-internals.h: New header with the verifier configuration
6591         extracted from mini.c.
6592
6593         * verify.c: Implemented the new functions exported by verify-internals.h.
6594
6595 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
6596
6597         * verify.c: Add proper verification of ckfinite.
6598
6599 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6600
6601         * verify.c (do_conversion): Improved error message to something
6602         more meanfull.
6603
6604         * verify.c (check_is_valid_type_for_field_ops): Fix to work
6605         with primitive types.
6606
6607 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6608
6609         * verify.c: Added tail prefix checking. Marked icall
6610         as unverifible.
6611
6612 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
6613
6614         * verify.c: Fix the detection of branches to the middle
6615         of an instruction.
6616
6617 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
6618
6619         * verify.c: Implemented verification of volatile. and
6620         unaligned. prefix. Check if a type is valid after retrieving it.
6621
6622 2008-04-01  Dick Porter  <dick@ximian.com>
6623
6624         * process.c (process_get_fileversion): If there's no string block,
6625         set the file language to en_US.  Fixes the other new part of bug
6626         374600.
6627
6628 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
6629
6630         * class.c: New functions mono_method_can_access_field_full and
6631         mono_method_can_access_method_full. They perform type visibility
6632         and type site check.
6633
6634         * class-internal.h: Added exported functions.
6635
6636         * verify.c: Use new functions to implement proper visibility checks.
6637
6638 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
6639
6640         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
6641
6642 2008-03-28  Dick Porter  <dick@ximian.com>
6643
6644         * process.c (process_get_fileversion): Use the first language ID
6645         we see, rather than insisting on an invariant language.  Fixes bug
6646         374600.
6647
6648 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
6649
6650         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
6651         the streams to fix reading of invalid memory later.
6652
6653         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
6654         to ease debugging.
6655
6656 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
6659         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
6660
6661 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
6662         * threads.h: Added MonoThreadManageCallback type and
6663         mono_thread_set_manage_callback prototype
6664         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
6665         (used to store the mono_thread_manage callback).
6666         * threads.c: Added mono_thread_set_manage_callback, and handle
6667         "MonoThread->manage_callback" in build_wait_tids.
6668
6669 2008-03-26  Dick Porter  <dick@ximian.com>
6670
6671         * process.c (process_get_fileversion): Set FileVersionInfo strings
6672         to Empty when the resource doesn't have the particular info.
6673         Fixes bug 355717.
6674
6675 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
6676
6677         * verify.c (mono_method_verify): Proper prefix validation.
6678
6679 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
6680
6681         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
6682         itself in a separate argument instead of throwing them. Fixes #373448.
6683
6684         * appdomain.c: Bump corlib version.
6685
6686 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
6689
6690 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
6691
6692         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
6693         version macros.
6694
6695 2008-03-20  Mark Probst  <mark.probst@gmail.com>
6696
6697         * generic-sharing.c, class-internals.h: Code for putting
6698         reflection types into the runtime generic context.
6699
6700 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
6701
6702         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
6703         Fixes #340662. 
6704
6705
6706 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
6707
6708         * verify.c (VerifyContext): Added instruction prefix data to the struct.
6709
6710         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
6711
6712         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
6713
6714         * verify.c (do_cast): Let the result value keep the boxed status.
6715
6716         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
6717
6718 2008-03-17  Jb Evain  <jbevain@novell.com>
6719
6720         * reflection.c: when running on a 2.0 runtime, emit
6721         unconditionally the #~ header version as 2.0, and the
6722         CLI header version as 2.5, for symmetry's sake with csc.
6723
6724 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * class.c: Remove the unused cache_interface_offsets stuff.
6727
6728         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
6729         profiler.c: Fix warnings.
6730
6731 2008-03-16  Mark Probst  <mark.probst@gmail.com>
6732
6733         * generic-sharing.c, class-internals.h: Support for putting
6734         methods into the runtime generic context.
6735
6736 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
6737
6738         * class.c (mono_class_setup_fields): Ignore calls made to this function for
6739         classes which are generic instances of not-yet finished typebuilders. Fixes
6740         #351172.
6741
6742         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
6743
6744 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
6745
6746         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
6747
6748         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
6749         field, replace it with a hash table in MonoDynamicImage.
6750
6751         * reflection.c (inflate_mono_method): Access the generic definition object from
6752         image->generic_def_objects instead of imethod->reflection_info.
6753
6754         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
6755
6756         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
6757         
6758         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
6759         function in reflection.c so it is easier to keep in sync with the dynamic image
6760         creation code.
6761
6762         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
6763         mono_image_close ().
6764
6765 2008-03-15  Mark Probst  <mark.probst@gmail.com>
6766
6767         * class.c (mono_class_generic_sharing_enabled): Disable generic
6768         sharing for all architectures except AMD64 and x86 to fix build.
6769
6770 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6771
6772         * verify.c: Use the generic definition MonoGenericContext when available.
6773         Remove code for checking generics instance compatibility in favor of
6774         mono_class_is_assignable_from.
6775
6776 2008-03-14  Mark Probst  <mark.probst@gmail.com>
6777
6778         * marshal.c, marshal.h, metadata-internals.h, image.c,
6779         wrapper-types.h: New wrapper for invoking a shared static method
6780         without having to pass the runtime generic context argument.
6781
6782 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
6783
6784         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
6785
6786 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
6787
6788         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
6789         
6790         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
6791         create a token from a FieldOnTypeBuilderInst.
6792         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
6793         (resolve_object): Ditto.
6794
6795         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
6796         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
6797
6798 2008-03-14  Martin Baulig  <martin@ximian.com>
6799
6800         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
6801
6802         * debug-mono-symfile.h
6803         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
6804         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
6805
6806 2008-03-10  Martin Baulig  <martin@ximian.com>
6807
6808         * debug-mono-symfile.h
6809         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
6810         `lexical_block_table_offset'.
6811         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
6812         `lexical_blocks'.
6813         (MonoSymbolFile): Added `version'.
6814
6815         * mono-debug.h
6816         (MonoDebugLexicalBlockEntry): Removed.
6817         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
6818         `lexical_blocks'.
6819
6820         * mono-debug.c (mono_debug_add_method): Don't compute lexical
6821         blocks here; the debugger now does this internally.
6822
6823 2008-02-27  Martin Baulig  <martin@ximian.com>
6824
6825         * object.c (mono_runtime_exec_main): Call
6826         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
6827         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
6828
6829 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6830
6831         * verify.c (verify_type_compatibility_full): Allow native int to be converted
6832         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
6833
6834 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
6835
6836         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
6837         ldftn with a virtual method.
6838
6839 2008-03-13  Geoff Norton  <gnorton@novell.com>
6840
6841         * decimal.c:  Only include memory.h if the platform has it.
6842
6843 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
6844
6845         * assembly.c, class.c, metadata-internals.h: make sure public key
6846         tokesns are compared in a case-insensitive way. Also, all
6847         the lookups in the GAC use a lowercase public key token
6848         (gaacutil already does the lowercasing on install). Fixes
6849         bug #369541.
6850
6851 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
6852
6853         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
6854         and return value.
6855
6856 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
6857
6858         * image.c: when someone loads a mscorlib from a file, return the
6859         currently loaded mscorlib (fixes bug #369253).
6860
6861 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
6862
6863         * class.c: handle types with no parents by forcing them to have
6864         System.Object as a parent and marking them as broken (this currently
6865         allows the first part of bug #369173 to work as well, likely because
6866         we don't check for typeload exceptions everywhere yet).
6867
6868 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
6869
6870         * class.c: more complete check that types belong to corlib
6871         (fixes second part of bug #369173).
6872
6873 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
6874
6875         * generic-sharing.c:  Including glib.h for the MSVC builds to define
6876           "inline" to "__inline" before including mono-membar.h.
6877           
6878         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
6879           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
6880           MSVC builds.
6881
6882         Contributed under MIT/X11 license.
6883
6884 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6885
6886         * verify.c (do_invoke_method): Remove return type validation.
6887
6888         * verify.c (do_ret): Do return type validation at return site instead of
6889         call site.
6890
6891 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
6892
6893         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
6894
6895         * verify.c: Some todos cleaned and improved a few error messages.
6896
6897 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
6900
6901 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
6904         system types correctly.
6905
6906         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
6907         function.
6908
6909 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * assembly.c (build_assembly_name): Fix a warning.
6912
6913 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6914
6915         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
6916         the called function takes an object type argument. Fixes storing or
6917         valuetypes across remoting as well as reducing memory usage.
6918         * image.c, metadata-internals.h: remove now unused ldfld_remote and
6919         stfld_remote wrapper caches.
6920
6921 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
6922
6923         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
6924         is not found.
6925
6926         * reflection.c (mono_image_register_token): New helper function to save
6927         a token->object mapping.        
6928
6929         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
6930         managed code.
6931
6932         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
6933         one dimension arrays. Fixes #367670.
6934         (mono_reflection_get_type_internal): Ditto.
6935
6936 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
6937
6938         * marshal.c: mono_load_remote_field_new() always returns object.
6939         so use the proper signature (fixes bug #366445).
6940
6941 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6942         
6943         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
6944         add an 'inline_failure' flag instead.
6945
6946 2008-03-04  Mark Probst  <mark.probst@gmail.com>
6947
6948         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
6949         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
6950         contains the location of "this", used for exception handling.
6951
6952 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
6953
6954         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
6955         their size on all platforms for perf reasons.
6956
6957 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6958
6959         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
6960         object-internal.h
6961
6962         * object-internal.h: Same.
6963
6964 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6965
6966         * reflection.h: Fix the build I just broke.
6967
6968 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6969
6970         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
6971         Test if a token is valid, this remove explicit usage of 
6972         MonoDynamicImage::tokens from the verifier code.
6973
6974         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
6975
6976         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
6977         instead of direct access to MonoDynamicImage::tokens.
6978
6979 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6980
6981         * verify.c (token_bounds_check): Fix the build I just broke.
6982
6983 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
6984
6985         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
6986
6987         * verify.c (verifier_load_method): Fixed the errors message.
6988
6989         * verify.c (mono_method_verify): Fixed a debug message.
6990
6991 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
6992
6993         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
6994         mono-perfcounters.h, class-internals.h: support for predefined
6995         writable counters, query of categories and counters, bugfixes.
6996
6997 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
6998
6999         * verify.c (do_refanytype): Verify the refanytype opcode.
7000
7001         * verify.c (mono_method_verify): Use do_refanytype.
7002
7003 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
7004
7005         * verify.c (do_mkrefany): Verify the mkrefany opcode.
7006
7007         * verify.c (mono_method_verify): Use do_mkrefany.
7008
7009 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
7010
7011         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
7012         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
7013         implementation.
7014
7015 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
7018         the type load exception.
7019
7020 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
7021
7022         * verify.c: Added a few FIXME for method signatures
7023
7024         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
7025         of mono_method_get_signature and get vararg call working. Removed unused
7026         checks for return value.
7027
7028         * verify.c (do_refanyval): Verify the refanyval opcode.
7029
7030         * verify.c (mono_method_verify): Implemented verification of arglist and
7031         use do_refanyval.
7032
7033 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
7036         vtypes to marshal.c.
7037
7038         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
7039         it works for AOT as well.
7040
7041 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
7042
7043         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
7044         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
7045         the system time is adjusted.
7046
7047 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
7048
7049         * icall.c, icall-def.h: use the new time functions (fixes the
7050         non-monotonic behaviour of TickCount).
7051
7052 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
7053
7054         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
7055         it breaks the build.
7056         
7057         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
7058         cattr is not finished yet.
7059
7060 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7061
7062         * verify.c: Proper token validation for field, method and type.
7063
7064 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
7065
7066         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
7067
7068         * loader.c (method_from_memberref): Generate type load error instead of method missing
7069         if the type is not found.
7070
7071 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
7074         some of the conversions caused the generation of a marshal directive exception.
7075
7076 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7077
7078         verify.c: Report which exception should be thrown by the JIT.
7079         Added a lot of FIXME notes.
7080
7081 2008-02-22  Mark Probst  <mark.probst@gmail.com>
7082
7083         * generic-sharing.c: Runtime generic context slots are not
7084         instantiated on init anymore.  Instead, provide function to do the
7085         instantiating on demand.
7086
7087         * class-internals.h: Added vtable to runtime generic context.
7088         Macros for encoding direct and indirect slot offsets in one
7089         guint32.
7090
7091 2008-02-21  Mark Probst  <mark.probst@gmail.com>
7092
7093         * object.c, generic-sharing.c: Moved some generic sharing code
7094         from object.c to generic-sharing.c.
7095
7096         * generic-sharing.c: Added support for extensible runtime generic
7097         context.
7098
7099         * metadata-internals.h: Two new hash tables in MonoImage for
7100         extensible runtime generic context support.
7101
7102         * domain.c: Unregister generic vtables upon domain unloading.
7103
7104         * image.c: Destroy new hash tables upon image unloading.
7105
7106         * metadata.c: Unregister generic subclasses upon image unloading.
7107
7108         * class-internals.h: New data structure for runtime generic
7109         context template.  New fields in the runtime generic context for
7110         extensible part.
7111
7112         * Makefile.am: Added generic-sharing.c.
7113
7114 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
7117         there is a pending loader exception, raise it.
7118
7119         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
7120         same.
7121
7122         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
7123         same.
7124
7125         Fixes #363450.
7126
7127 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
7128
7129         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
7130
7131         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
7132         
7133         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
7134         ref-only requests for compatibility with MS.
7135
7136 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7137
7138         * reflection.c (mono_custom_attrs_from_method): Don't silently
7139         return an empty list for generic method instances.
7140         (mono_custom_attrs_from_param): Likewise.
7141
7142 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
7143             Raja R Harinath  <harinath@hurrynot.org>
7144
7145         Fix #354757
7146         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
7147         * class.c (mono_class_inflate_generic_method_full): Initialize it
7148         when a fully-open method is instantiated.
7149         * metadata.c (inflated_method_equal, inflated_method_hash): Update
7150         to new field.
7151         * reflection.c (inflate_mono_method): Don't create a temporary context.
7152
7153 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
7154
7155         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
7156         Compute correct value, to prepare for imethod->reflection_info going away.
7157
7158 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
7159
7160         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
7161
7162 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7163
7164         * verify.c: Implement skip visibility flag.
7165
7166 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
7167
7168         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
7169         which contains an extra field to tell the kind of exception that should be thrown.
7170
7171         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
7172
7173 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
7174
7175         * loader.c (mono_method_get_param_names): Initialize 'klass' after
7176         'method' is updated.
7177
7178 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
7179
7180         * class.c (mono_class_layout_fields): Set class->min_align for classes using
7181         explicit layout as well. Fixes #360375.
7182
7183 2008-02-11  Geoff Norton  <gnorton@novell.com>
7184
7185         * loader.c: Guard and dereference against inflated generic methods
7186
7187 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
7188
7189         * class.c: Include Retargetable spec in assembly name.
7190         * assembly.c: Always include PublicKeyToken spec in assembly name
7191         (with value "null" if assembly is not signed), and include
7192         Retargetable spec.
7193         * icall-def.h: Added icall for Assembly.get_fullname.
7194         * icall.c: Added icall returning the fullname of an assembly.
7195
7196 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
7197
7198         * class.c (mono_class_setup_vtable_general): Add a missing call to
7199         mono_class_setup_methods () which is needed in the AOT case.
7200
7201 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
7202
7203         * verify.c (mono_type_get_stack_name): Added. Return the name for the
7204         stack type of the given MonoType.
7205
7206         * verify.c (verify_type_compatibility_full): Handle the void type.
7207
7208         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
7209         way stack merging works.
7210
7211         * verify.c (store_local): Improved verification message.
7212
7213         * verify.c (do_branch_op): If the merging is invalid, the method
7214         is unverifiable and not invalid. Improved error message.
7215
7216         * verify.c (merge_stacks): Properly merge a boxed valuetype and
7217         a reference type diferent than System.Object. Improved error
7218         message.
7219
7220 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
7221
7222         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
7223
7224         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
7225         type of an enum even if the argument is byref.
7226
7227         * verify.c: Replace all explicit uses of enumtype and enum_basetype
7228         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
7229
7230         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
7231
7232         *verify.c (verify_type_compatibility_full): Make enum types
7233         compatible with their base types.
7234
7235         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
7236         types are compatible for the special case of a boxed valuetype and
7237         System.Object.
7238
7239         * verify.c (verify_stack_type_compatibility): The function
7240         is_compatible_boxed_valuetype was extracted from here.
7241
7242         * verify.c (push_arg): Only set ctx->has_this_store if the method
7243         is not static.
7244
7245         * verify.c (do_ldelem): Fixed a typo in an error message and added
7246         strict check for mixing int32 and native int as the array type
7247         and ldelem type.
7248
7249         * verify.c (merge_stacks): Consider boxed valuetypes in the
7250         compatibility checks.
7251
7252 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
7253         * profiler.h: (MonoGCEvent): Added start-stop the world events.
7254
7255 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7256         *class.c: use_new_interface_vtable_code: renamed the env var to have
7257         a "MONO_" prefix, and fix the logic to enable it by default.
7258
7259 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
7260         *class.c:
7261         mono_class_setup_vtable_general: rewrote the way in which interface
7262         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
7263         makes the code more maintainable.
7264         For now the old code is still there, and can be activated setting
7265         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
7266
7267 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
7268
7269         * verify.c: guarded some debug functions around and #ifdef.
7270
7271         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
7272
7273 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
7276         changes for now since they seem to break too many things.
7277
7278 2008-02-05  Mark Probst  <mark.probst@gmail.com>
7279
7280         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
7281         mono_marshal_find_nonzero_bit_offset): Added macro and function
7282         for finding the byte- and bit-offset of a bitfield within a
7283         struct.
7284
7285 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
7288         (mono_marshal_get_struct_to_ptr): Ditto.
7289
7290         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
7291         cctor_signature.
7292
7293 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
7296         between methods for non-corlib types.
7297
7298 2008-02-02  Geoff Norton  <gnorton@novell.com>
7299
7300         * loader.c (mono_method_get_param_names): Populate the parameter name for 
7301         generic parameters as well. (Fixes #342536)
7302
7303 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
7304
7305         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
7306
7307         * verify.c (do_invoke_method): Fix for calling with byref structs.
7308
7309         * verify.c (do_cast): push a boxed value type based on the type token and not
7310         the type of stack.
7311
7312 2008-01-31  William Holmes  <billholmes54@gmail.com>
7313
7314         * process.c (process_module_string_read): Check the size returned form 
7315           VerQueryValue to avoid out of memory exception. 
7316
7317 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
7320         Handle properly modules which are not in the moduleref table. Fixes
7321         #356938.
7322
7323 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
7326         the dynamic case which is now in managed code.
7327         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
7328
7329         * marshal.c (mono_string_to_bstr): Fix a warning.
7330         (init_com_provider_ms): Ditto.
7331
7332         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
7333
7334         * exception.c (mono_get_exception_out_of_memory): New helper function.
7335
7336 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
7337
7338         * marshal.c: Add support for BSTR marshalling
7339         using other COM systems.
7340
7341         Code is contributed under MIT/X11 license.
7342
7343 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7344
7345         * object.c (mono_runtime_invoke_array): reverted previous
7346         commit as it breaks the build.
7347
7348 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7349
7350         * object.c (mono_runtime_invoke_array): Verify arguments for
7351         invalid types. Fixes #348522.
7352
7353 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
7354
7355         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
7356         non-final virtual calls using call. 
7357
7358         * verify.c (do_invoke): fixed some TODOs.
7359
7360         * verify.c (push_arg): set has_this_store for "ldarga 0".
7361
7362 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
7363
7364         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
7365         which belong to an inflated class. Fixes #356531.
7366
7367 2008-01-26  Robert Jordan  <robertj@gmx.net>
7368
7369         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
7370         which resort to FindFirstFile when a certain error condition
7371         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
7372         Code is contributed under MIT/X11 license.
7373
7374 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
7375
7376         * marshal.c (emit_marshal_string): Fix out string marshalling
7377         to use specified encoding. Fixes #323900.
7378
7379         Code is contributed under MIT/X11 license.
7380
7381 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
7382
7383         * class.c (mono_class_inflate_generic_method_full): Don't modify
7384         iresult->context after cache check.
7385
7386 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
7387
7388         * class.c (mono_class_inflate_generic_method_full): Change the
7389         struct assignments to memcpy for better visibility and add some comments.
7390
7391 2008-01-23  Dick Porter  <dick@ximian.com>
7392
7393         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
7394         procedure, and make it work on windows.
7395
7396 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
7399         a MonoReflectionTypeBuilder since it is always of that type.
7400
7401         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
7402
7403         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
7404
7405         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
7406         
7407         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
7408
7409         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
7410
7411         * reflection.c (mono_reflection_create_runtime_class): Remove already created
7412         instantiations from the type cache.
7413
7414 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7415
7416         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
7417
7418         * verify.c (do_unbox_value): push a controled mutability managed pointer.
7419
7420 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7421
7422         * verify.c (do_ldstr): added, verifies if the #US token is valid.
7423
7424         * verify.c (mono_method_verify): removed old TODO
7425
7426 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7427
7428         * verify.c (do_newobj): add visibility check.
7429
7430 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * verify.c (do_load_function_ptr): add visibility check.
7433
7434 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
7435         *class.c:
7436         mono_generic_class_get_class: hook profiler events.
7437         mono_field_get_offset: added to support heap-shot in the new profiler.
7438         *class.h: exported mono_field_get_offset.
7439         * reflection.c:
7440         mono_reflection_setup_internal_class: hook profiler events.
7441
7442 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
7443
7444         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
7445         argument here too and use it to avoid checking for pending exceptions if 
7446         possible.
7447
7448 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
7449
7450         * assembly.c (build_assembly_name): add arg for passing the assembly
7451         flags. Do not consider a PublicKey with value "null" valid.
7452         (mono_assembly_name_parse_full): added boolean argument that will be
7453         set if the assembly name contains a PublicKeyToken spec. Added support
7454         for the Retargetable spec for which only Yes or No are allowed as valid
7455         value. Consider assembly name invalid if Retargetable spec is set, but
7456         either version, culture or public key (token) are not specified.
7457         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
7458         with implementation in assembly.c.
7459         * icall.c (fill_reflection_assembly_name): also copy assembly flags
7460         from MonoAssemblyName.
7461         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
7462         introduced argument for mono_assembly_name_parse_full to know if the
7463         assembly name has a PublicKeyToken spec, and if it has instruct
7464         fill_reflection_assembly_name to use default value for keyToken (if
7465         PublicKeyToken is null).
7466
7467 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7468
7469         * verify.c (mono_method_verify): fixed ovf ops with
7470         float values. They are unverifiable now.
7471
7472 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7473
7474         * class.c (set_failure_from_loader_error): add BadImageException to the
7475         list of exceptions that can cause a type to fail to load.
7476
7477         * class.c (mono_class_get_exception_for_failure): same.
7478
7479 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7480
7481         * verify.c (in_any_exception_block): added, check if offset
7482         is part of any exception handling clause.
7483
7484         * verify.c (get_stack_type): added VAR and MVAR types.
7485
7486         * verify.c (do_stobj): better error messages.
7487
7488         * verify.c (do_cpobj): added, check cpobj.
7489
7490         * verify.c (do_initobj): added, check initobj.
7491
7492         * verify.c (do_sizeof): added, check sizeof.
7493
7494         * verify.c (do_localloc): added, check localloc.
7495
7496         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
7497
7498 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
7499
7500         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
7501         save_lmf/restore_lmf opcodes.
7502
7503         * threads.c (mono_threads_install_notify_pending_exc): New function to
7504         install a callback notifying the JIT there is a pending exception on a thread.
7505         (mono_thread_request_interruption): Call the new callback.
7506         (mono_thread_get_and_clear_pending_exception): New function to return the
7507         exception pending on a thread.
7508
7509         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
7510         to turn off checking for pending exceptions.
7511         (mono_marshal_get_native_wrapper): Ditto.
7512
7513 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * threads-types.h: Get rid of the unnecessary extern declarations.
7516
7517 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
7518
7519         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
7520         return field from parent class if not private.
7521         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
7522         returns fields from parent class if they are not private.
7523         (method_nonpublic): added function to determine if a given method
7524         should be considered non-public. Returns false for private methods
7525         on parent class, and internal methods from parent on the 1.0 profile.
7526         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
7527         use method_nonpublic function to determine whether method should be
7528         returned.
7529         (property_accessor_public): use newly introduced method_nonpublic
7530         function to determine whether accessor is non-public. 
7531         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
7532         event from parent class if not private. Only return static event if
7533         Static flag is set, and only return static event from parent class if
7534         FlattenHierarchy flag is set.
7535         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
7536         include non-private events from parent class.
7537
7538 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
7539
7540         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
7541         warning.
7542
7543 2008-01-16  Wade Berrier <wberrier@novell.com>
7544
7545         * security.c: Add assembly.h header to appease some warnings
7546
7547 2008-01-16  Dick Porter  <dick@ximian.com>
7548
7549         * process.c (process_module_string_read): Remove trailing null
7550         when saving string.
7551
7552 2008-01-16  Mark Probst  <mark.probst@gmail.com>
7553
7554         * class-internals.h: A new data structure describing the layout of
7555         a runtime generic context (MonoRuntimeGenericContextTemplate).
7556
7557         * metadata-internals.h: Added a hash table to MonoDomain that maps
7558         from open generic classes to their runtime generic context
7559         templates.
7560
7561         * object.c: Building of the runtime generic context, including
7562         proper handling of generic type arguments of superclasses.
7563         Building of the runtime generic context according to the template.
7564
7565 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
7566
7567         * class.c (mono_class_setup_fields): Set field.count for generic instances.
7568         Fixes #350856.
7569
7570         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
7571         mono_portability_find_file (). Fixes #325466.
7572         (mono_image_get_public_key): Fix a warning.
7573
7574 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
7575
7576         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
7577         Fixes #353550.
7578         (mono_class_from_name_case): Ditto.
7579
7580 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
7581
7582         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
7583           common storage for the tables used in the System/NumberFormatter class.
7584
7585 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
7586
7587         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
7588
7589 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
7590
7591         * verify.c (get_boxable_mono_type): check if the token is valid.
7592
7593         * verify.c (set_stack_value): changed to add an error if an
7594         invalid type is set on stack. Changed all callers due to signature change.
7595
7596         * verify.c (do_stobj): implement stobj validation.
7597
7598 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
7601         set container->is_method, it was set earlier.
7602
7603         * metadata.c (type_in_image): Handle MVARs which belong to not finished
7604         generic methods.
7605
7606         * reflection.c (mono_reflection_initialize_generic_parameter): Set
7607         is_method of the generic container to TRUE for methods.
7608
7609 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * metadata.c (type_in_image): Handle type parameters properly.
7612
7613         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
7614         memory ownership of this structure.
7615
7616 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
7617
7618         * verify.c (get_boxable_mono_type): make typedref types been just
7619         unverifiable. check for void type.
7620
7621         * verify.c (do_unbox_any): added, verify opcode unbox.any.
7622
7623         * verify.c (do_load_function_ptr): accept method spec tokens.
7624
7625 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
7626
7627         * marshal.c (mono_class_native_size): Always set *align even if this is called
7628         recursively.
7629
7630 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
7633         out-of-date.
7634
7635 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
7636
7637         * verify.c: removed some old unused tables. A huge bunch of small fixes
7638         to things found while testing the verifier with mono basic.
7639
7640         * verify.c (dump_stack_value): dump null literal flag to.
7641
7642         * verify.c (verify_type_compatibility_full): fix comparison
7643         for types that have a generic super type.
7644
7645         * verify.c (verify_stack_type_compatibility): fix compatibility
7646         between null literals and reference types. fix compatibility between
7647         boxed valuetypes and object. fix corner case test for enums.
7648
7649         * verify.c (do_cmp_op): proper verification of cgt.un in case
7650         of reference types.
7651
7652         * verify.c (do_invoke_method): fix error message.
7653
7654         * verify.c (do_store_indirect
7655
7656         * verify.c (check_is_valid_type_for_field_ops): proper verification
7657         of managed pointers to valuetypes and boxed valuetypes. proper verification
7658         of null literals.
7659
7660         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
7661         allow token to be a reference type.
7662
7663         * verify.c (do_cast): proper handling of boxes valuetypes.
7664
7665         * verify.c (do_stelem): proper handling of storing a boxed valuetype
7666         in object[].
7667
7668         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
7669         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
7670         fixed the decoding of unbox_any
7671
7672 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
7673
7674         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
7675
7676 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
7677
7678         * verify.c (do_newobj): do delegate verification.
7679
7680         * verify.c (verify_delegate_compatibility): perform delegate
7681         verification.
7682
7683         * verify.c (verify_ldftn_delegate): perform tests related to
7684         ldftn delegates.
7685
7686         * verify.c (mono_delegate_signature_equal): perform the
7687         slightly diferent signature comparison required by delegates.
7688
7689         * metadata.c (mono_metadata_type_equal_full): added and exported
7690         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
7691         allows signature only comparison.
7692
7693         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
7694         as MONO_INTERNAL.
7695
7696 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7697
7698         * verify.c: added a bunch of stack_slot_* functions to
7699         make access to stack slot type easier. This is required to
7700         allow optional flags, like null literal, boxed value and
7701         this pointer.
7702         All access paths to IlStackDesc::stype have been changed 
7703         to use these new funcions.
7704         Removed a bunch of unused functions and cleared all warnings.
7705         This patch introduces the usage of the this pointer and 
7706         boxed value flags.
7707
7708 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
7711
7712 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
7713
7714         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
7715         match managed version.
7716
7717         * appdomain.c: Bump corlib version.
7718         
7719         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
7720         argument.
7721
7722 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
7723
7724         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
7725         Set public key token to zero-length byte array if assembly is not
7726         strongnamed.
7727
7728 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7729
7730         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
7731         writing a vtype array elem.
7732
7733 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
7734
7735         * assembly.c (build_assembly_name): return FALSE if length of token is
7736         not 16 (if not "null").
7737         (mono_assembly_name_parse_full): return FALSE if value of version,
7738         culture, token or key is 0.
7739         * icall.c (fill_reflection_assembly_name): add boolean arguments to
7740         specify whether public key and public key token must be set to default
7741         value (zero-length byte array) if not available. Set versioncompat to
7742         SameMachine. If public key is available or the default is set, then
7743         set PublicKey flag.
7744         (ves_icall_System_Reflection_Assembly_FillName): if no public key
7745         is available, use empty byte array as default value. On the 2.0
7746         profile, use default value for public key token if not set.
7747         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
7748         profile, use default value for public key if not set. On the 2.0
7749         profile, use default value for public key token if not set.
7750         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
7751         default values for public key and public key token.
7752
7753 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
7754
7755         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
7756         field to keep it in synch with the managed object.
7757
7758         * marshal.c (emit_marshal_object): Add support for byref marshalling of
7759         delegates. Fixes #351520.
7760
7761         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
7762         contains defined memory.
7763         
7764         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
7765
7766         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
7767         
7768         * sgen-gc.c (check_consistency): New helper function to do a consistency check
7769         of the GC data structures.
7770
7771         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
7772
7773         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
7774         
7775         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
7776         barrier.
7777         (mono_array_clone_in_domain): Ditto.
7778         (mono_array_clone_in_domain): Ditto.
7779
7780         * threads.c (start_wrapper): Register the thread start argument as a GC root.
7781         (cache_culture): Use a write barrier.
7782
7783         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
7784         (ves_icall_get_property_info): Ditto.
7785
7786         * object.h (MONO_STRUCT_SETREF): New macro.
7787
7788         * class-internals.h (MonoStats): Add some GC statistics.
7789
7790         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
7791
7792 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
7793
7794         * exception.c (mono_exception_from_name_two_strings):
7795         Break from loop after method is found.
7796
7797 2008-01-04  Dick Porter  <dick@ximian.com>
7798
7799         * process.c (process_module_string_read): Rename variable to
7800         reflect correct usage, after fixing bug 345972.
7801
7802 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
7803
7804         * verify.c (mono_type_create_fnptr_from_mono_method): 
7805         created a MonoType function pointer instance to be used during
7806         verification. The verifier releases this memory at end.
7807
7808         * verify.c (mono_method_is_constructor): extracted repeated
7809         checks for constructor into a single class.
7810
7811         * verify.c (do_push_field): use new extracted method
7812         for constructor check.
7813
7814         * verify.c (do_newobj): same.
7815
7816         * verify.c (do_ldftn): renamed to do_load_function_ptr
7817         and make it verify ldvirtftn too.
7818
7819         * verify.c (mono_method_verify: proper verification
7820         of ldvirtftn. release created MonoMethod instances.
7821
7822 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7823
7824         * verify.c (token_bounds_check): added.
7825
7826         * verify.c (do_ldftn): added.
7827
7828         * verify.c (mono_method_verify): proper verificartion of ldftn.
7829
7830 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
7831
7832         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
7833         than the table row count. It's the resposibility of the caller to
7834         make the bounds check and raise the correct error.
7835
7836         * metadata.c (mono_metadata_decode_row_col): Same.
7837
7838         * loader.c (mono_get_method_from_token): perform bounds check
7839         on token for methoddef table.
7840
7841 2007-12-29  Miguel de Icaza  <miguel@novell.com>
7842
7843         * icall.c
7844         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
7845         assert into a negative result, the managed code already coped with
7846         that.
7847
7848         Some folks on Windows reported this error. 
7849
7850 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
7851
7852         * appdomain.c: Bump corlib version.
7853         * icall.c:
7854         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
7855         CultureInfo.CreateCulture to create CultureInfo for name.
7856         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
7857         create CultureInfo for name. Fixes bug #347174.
7858
7859 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7860
7861         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
7862         flags.
7863
7864         * verify.c (is_valid_branch_instruction): allow branching to the
7865         first instruction of the protected block.
7866
7867         * verify.c (is_valid_cmp_branch_instruction): same.
7868
7869         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
7870         avoid double initialization.
7871
7872         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
7873         detect which cases the eval stack should just be copied.
7874
7875         * verify.c (mono_method_verify): check if the eval stack
7876         is empty when entering a protected block.
7877
7878 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
7879
7880         * verify.c: added is_clause_in_range, is_clause_inside_range,
7881         is_clause_nested and verify_clause_relationship. They perform
7882         the verifications stated in P1 12.4.2.7.
7883
7884         * verify.c (mono_method_verify): remove some unused variables,
7885         add the new exception clause checks, add instruction border
7886         checks for protected block start/end, improved some error 
7887         messages and fixed a bug in the way invalid instruction access
7888         is detected.
7889
7890 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
7891
7892         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
7893         from GC 7.0 if available.
7894
7895         * object.c: Remove an unused define.
7896         
7897         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
7898
7899         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
7900
7901         * null-gc.c (mono_gc_make_descr_for_array): Implement.
7902
7903         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
7904
7905         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
7906         to take the same arguments as the other make_descr functions.
7907
7908         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
7909
7910         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
7911         directly.
7912
7913         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
7914         mini.c.
7915
7916         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
7917         call to boehm-gc.c.
7918
7919         * boehm-gc.c (mono_gc_register_root): Fix a warning.
7920
7921         * null-gc.c (mono_gc_register_root): Fix a warning.
7922
7923         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
7924
7925         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
7926         (mono_gc_base_init): Call GC_init ().
7927
7928         * null-gc.c: Define mono_gc_register_root () as a no-op.
7929
7930         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
7931
7932 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
7933
7934         * verify.c: add prototype for merge_stacks at top
7935
7936         * verify.c (do_switch): added.
7937
7938         * verify.c (merge_stacks): on some cases the stack merging
7939         was not happening properly. Unequal stack sizes at merge
7940         points should be invalid.
7941
7942         * verify.c (mono_method_verify): added more debug info on stack state.
7943         verify switch properly.
7944
7945 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * method-builder.h: New file, moved the mono_mb_ declarations here from 
7948         marshal.h.
7949
7950         * boehm-gc.c marshal.c: Include method-builder.h.
7951
7952         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
7953
7954         * marshal.c: Remove some code which is now in method-builder.c.
7955
7956 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
7957
7958         * method-builder.c: New file, extraction of the method builder functionality 
7959         from marshal.c.
7960
7961         * marshal.c: Move the mb functions into method-builder.c.
7962
7963         * marshal.h marshal.c: Export some mono_mb_... functions.
7964
7965         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
7966
7967         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
7968         the caller.
7969
7970         * class.c (mono_class_get_full): Check the token type in the dynamic case.
7971
7972         * loader.c (mono_field_from_token): Ditto.      
7973
7974         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
7975         type as well.
7976         
7977         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
7978         Fixes #342565.
7979
7980         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
7981         a helper function for setting it.
7982
7983         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
7984
7985         
7986         * assembly.c: Significally simplify code now that referenced assemblies are 
7987         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
7988
7989         * threads.h: Don't include  the internal threads-types.h header file. Fixes
7990         #349952.
7991
7992 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
7993
7994         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
7995         instructions that were target of branches or are at protected block boundaries.
7996
7997         * verify.c (in_same_block): handle filter clauses.
7998
7999         * verify.c (is_valid_branch_instruction): added. checks the target of
8000         instructions br or brtrue/false.
8001
8002         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
8003         binary branch instructions such as beq and bge.
8004
8005         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
8006         and made it pin the instruction as been part of the exception block.
8007
8008         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
8009         of in_same_block.
8010
8011         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
8012         of in_same_block.
8013
8014         * verify.c (do_ret): ret from a protected block is unverifiable and
8015         not invalid.
8016
8017         * verify.c (do_static_branch): verify br and br.s instructions.
8018
8019         * verify.c (merge_stacks): add extra param to support detection
8020         of branches in the middle of instructions.
8021         
8022         * verify.c (mono_method_verify): verify branches and exception blocks
8023         that target the middle of instructions. Proper verification of br and br.s.
8024
8025 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
8028         skip_visibility field.
8029         (reflection_methodbuilder_from_dynamic_method): Ditto.
8030
8031         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
8032         registrations. Fixes #348193.
8033
8034         * threads.h: Move the internal mono_thread_get_pending_exception () to
8035         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
8036
8037 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
8038
8039         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
8040         icall registration. Fixes #348193.
8041
8042         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
8043         for corlib classes into object. Fixes #349621.
8044
8045 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
8046
8047         * icall.c (property_accessor_nonpublic): new function to determine
8048         whether an accessor allows a property to be considered non-public.
8049         Returns false for private accessor(s) from parent class, and internal
8050         accessor(s) from parent on 2.0 profile (and higher).
8051         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
8052         to determine whether property should be included if NonPublic flag
8053         is set. Fixes bug #349078.
8054
8055 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
8056
8057         * verify.c (init_stack_with_value): added.
8058
8059         * verify.c (mono_method_verify): extracted common
8060         code for exception initialization into init_stack_with_value.
8061
8062         * verify.c (mono_method_verify): initialize the exception
8063         for handler clauses as well.
8064
8065         * verify.c (mono_method_verify): fix the exception clause
8066         ordering rules, it should use handler end offset and not
8067         start offset.
8068
8069 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
8070
8071         * rawbuffer.c: remove useless warning.
8072
8073 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
8074
8075         * threads.h, threads-types.h: move functions to the correct header
8076         (fixes bug#349952).
8077
8078 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8079
8080         * verify.c (mono_method_verify): proper verification
8081         of exception handling clauses ranges and fallthru in
8082         and out of protected blocks.
8083
8084 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8085
8086         * verify.c (mono_method_verify): fixed compilation issue.
8087
8088 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
8089
8090         * verify.c (mono_method_verify): a printf slipped in, changed
8091         to use verifier debug macro.
8092
8093 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
8094
8095         * verify.c (is_correct_leave): check for filter clauses.
8096
8097         * verify.c (do_filter): added.
8098
8099         * verify.c (mono_method_verify): property verification of leave.
8100
8101
8102 2007-12-18  Mark Probst  <mark.probst@gmail.com>
8103
8104         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
8105         Win32 build, until we figure out how to do the proper thing on
8106         Win32.
8107
8108 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
8111         by the previous patch.
8112         
8113         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
8114         the assembly resolve handler for refonly assemblies.
8115
8116 2007-12-17  Mark Probst  <mark.probst@gmail.com>
8117
8118         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
8119         Make sure only one thread is allowed to commence shutdown, and
8120         don't allow new threads to be started once shutdown is in
8121         progress.
8122
8123 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         * verify.c (is_correct_endfilter): added.
8126
8127         * verify.c (is_unverifiable_endfilter): added.
8128
8129         * verify.c (do_endfilter): added.
8130
8131         * verify.c (mono_method_verify): property verification of endfilter
8132         and fixed a corner case or endfinally.
8133
8134 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
8135
8136         * verify.h: new flags to support fail fast of unverifiable code and
8137         do non-strict verification. Non-strict verification is required to
8138         have MS runtime compatibility. There are a huge amount of unverifiable
8139         code that it accepts as verifiable. The strict mode verifies the code
8140         as the specs says.
8141         Non-strict mode will be required in cases where code needs to be
8142         accepted as verifiable but fails under strict mode.
8143
8144         * pedump.c: added support to fail fast and non-strict verification.
8145
8146         * verify.c: added support for both fail fast and non-strict verification.
8147
8148 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
8149
8150         * verify.c (is_correct_endfinally): added.
8151
8152         * verify.c (mono_method_verify): property verification of endfinally.
8153
8154 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8155
8156         * verify.c (in_any_block): check for filter clauses.
8157
8158         * verify.c (is_correct_rethrow): added.
8159
8160         * verify.c (mono_method_verify): property verification of rethrow.
8161
8162         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
8163
8164 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
8165
8166         * verify.c (do_throw): added.
8167
8168         * verify.c (mono_method_verify): property verification of throw
8169
8170 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
8171
8172         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
8173         assemblies. Fixes #346425.
8174
8175 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
8176
8177         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
8178         FieldBuilders.
8179
8180         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
8181
8182         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
8183         prevent asserts when this is called with a token which might not be valid.
8184
8185         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
8186         lookup_dynamic_token_class with valid_token == FALSE.
8187
8188         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
8189
8190         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
8191
8192         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
8193         
8194 2007-12-10  Mark Probst  <mark.probst@gmail.com>
8195
8196         * gc.c: Don't delay threadpool thread finalization unless Mono is
8197         shutting down.
8198
8199 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
8200
8201         * threads.c: turn an assert into a non-fatal warning.
8202
8203 2007-12-09  Robert Jordan  <robertj@gmx.net>
8204
8205         * icall.c (GetVirtualMethod): Add missing argument validation.
8206
8207 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8208
8209         * verify.c (do_cast): added.
8210
8211         * verify.c (mono_method_verify): property verification of castclass and isinst.
8212
8213
8214 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8215
8216         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
8217
8218         * verify.c (do_stelem): added.
8219
8220         * verify.c (mono_method_verify): property verification of stelem.X.
8221
8222 2007-12-07  Mark Probst  <mark.probst@gmail.com>
8223
8224         * class.c, class-internals.h: Introduce an environment variable
8225         (MONO_GENERIC_SHARING) through which the extent of generic code
8226         sharing can be controlled (share all classes, share only corlib
8227         classes, or share nothing).
8228
8229         * object.c: Only create runtime generic context for classes for
8230         which sharing is enabled.
8231
8232 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8233
8234         * verify.c (do_ldelem): refactor it to work with ldelem.any.
8235
8236         * verify.c (mono_method_verify): property verification of ldelem.any.
8237
8238 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
8239
8240         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
8241         added ldelem.X opcodes.
8242
8243         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
8244
8245         * verify.c: proper verification of ldelem.X 
8246
8247 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
8250
8251 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8252
8253         * verify.c (mono_method_verify): null literal requires special handling,
8254         the value pushed on stack need to be flagged as so.
8255
8256         * verify.c (do_ldelema): Verify ldelema properly.
8257
8258 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
8259
8260         * verify.c: Verify ldlen properly.
8261
8262 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
8263
8264         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
8265         to the target object's type. Fixes #346160.
8266
8267 2007-12-05  Dick Porter  <dick@ximian.com>
8268
8269         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
8270         Solaris needs the same workaround as BSD-derived systems.  Fixes
8271         bug 323524, patch by Burkhard Linke
8272         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
8273
8274 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
8275
8276         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
8277         handle to use when error dialog is shown; otherwise, update mask
8278         to show no error dialog when an error occurs.
8279
8280 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
8283
8284         * class.c (mono_class_get_field_default_value): New helper function to initialize
8285         field->def_type and field->data.
8286
8287 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
8288
8289         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
8290         the general one.
8291
8292         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
8293
8294         * marshal.c: Avoid depending on delegate->method_info being set.
8295
8296         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
8297         
8298         * object.c (mono_delegate_ctor): Set delegate->method.
8299
8300         * object-internals.h (struct _MonoDelegate): Add 'method' field.
8301
8302         * appdomain.c: Bump corlib version.
8303
8304 2007-11-27  Raja R Harinath  <harinath@gmail.com>
8305
8306         * metadata.c (mono_generic_inst_equal_full): Short-circuit
8307         equality check if we're comparing canonicalized MonoGenericInsts.
8308
8309 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
8310
8311         * class.c (generic_array_methods): Call mono_class_setup_methods () before
8312         accessing class->methods.
8313
8314 2007-11-22  Dick Porter  <dick@ximian.com>
8315
8316         * threads.c: Ensure that the synch_cs is set before trying to use
8317         it.
8318
8319 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
8320
8321         * profiler.c: r89126 broke the statistial profiler, unbreak.
8322
8323 2007-11-22  Martin Baulig  <martin@ximian.com>
8324
8325         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
8326
8327         * mono-debug.c
8328         (mono_debug_debugger_version): Bump to 3.
8329         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
8330         -> mono_debugger_class_initialized().
8331
8332         * mono-debug-debugger.c
8333         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
8334
8335         * class.c
8336         (mono_debugger_start_class_init_func): Removed.
8337         (mono_debugger_class_loaded_methods_func): Added.
8338         (mono_class_setup_methods): Call it here.
8339
8340 2007-11-22  Martin Baulig  <martin@ximian.com>
8341
8342         * mono-debug.c
8343         (mono_debug_add_delegate_trampoline): New public method.
8344         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
8345
8346         * mono-debug.h
8347         (MonoSymbolTable): Added `global_data_table'.
8348         (MonoDebuggerTypeKind): Removed.
8349
8350 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
8351
8352         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
8353         these methods.
8354
8355         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8356         
8357 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
8358
8359         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
8360
8361 2007-11-20  Martin Baulig  <martin@ximian.com>
8362
8363         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
8364
8365         * mono-debug-debugger.c
8366         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
8367         (mono_debugger_remove_breakpoint): Likewise.
8368         (mono_debugger_check_breakpoints): Likewise.
8369         (mono_debugger_register_class_init_callback): New public method.
8370         (mono_debugger_remove_class_init_callback): Likewise.
8371         (mono_debugger_add_type): Likewise.
8372
8373         * mono-debug-debugger.h
8374         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
8375
8376 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
8377
8378         * class.c: more interface implementations needed for the
8379         array enumerator (fixes bug #341112).
8380
8381 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
8382
8383         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
8384         fix ParamName of ArgumentNullExceptions.
8385
8386 2007-11-17  Miguel de Icaza  <miguel@novell.com>
8387
8388         * reflection.c (mono_reflection_encode_sighelper): Generate the
8389         modopts and modreqs.   I have a useless test that crashes monodis,
8390         but that shows the code working.
8391
8392 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
8395         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
8396
8397 2007-11-15  Dick Porter  <dick@ximian.com>
8398
8399         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
8400         When joining a thread, it's the thread that's calling Join that
8401         gets WaitSleepJoin state not the target.  Fixes the standalone
8402         test case in bug 334740, and hopefully the whole bug too.
8403
8404 2007-11-15  Dick Porter  <dick@ximian.com>
8405
8406         * process.c: Read file version info from the files pointed at by
8407         process modules, not the current process.  Fixes bug 315969.
8408
8409         Use windows typedef names in some places to fix warnings on the
8410         windows build.
8411
8412 2007-11-15  Mark Probst  <mark.probst@gmail.com>
8413
8414         * image.c, metadata-internals.h: Added a generic_class_cache hash
8415         to MonoImage for looking up generic classes when sharing generics.
8416
8417 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
8418
8419         * sgen-gc.c: warning cleanups.
8420
8421 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
8422
8423         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
8424         inherited properties.
8425
8426 2007-11-14  Mark Probst  <mark.probst@gmail.com>
8427
8428         * object.c, class-internals.h: Added more information to the
8429         runtime generic context.
8430
8431 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
8434         instead of just the target method. Generalize the abstract method handling to
8435         handle any non-static method.
8436
8437         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8438         mono_marshal_get_delegate_invoke () signature change.
8439
8440 2007-11-13  Mark Probst  <mark.probst@gmail.com>
8441
8442         * class.c, class-internals.h: Made
8443         mono_type_get_basic_type_from_generic () public.  Fixed member
8444         access check for shared generics.
8445
8446         * loader.c: Don't insert field into field cache if it's part of a
8447         non-inflated generic class.
8448
8449         * domain.c, domain-internals.h: The generic sharing context is now
8450         part of the jit info data structure.  Added two accessor
8451         functions.
8452
8453 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
8456         the array Get/Set/Address methods, since the JIT inlines them.
8457
8458         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
8459
8460         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
8461         (mono_image_init): Initialize runtime_invoke_direct_cache.      
8462
8463         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
8464         mono_marshal_get_delegate_invoke signature change.
8465
8466         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
8467         an additional argument. Add support for invoking abstract methods.
8468
8469         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
8470
8471         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
8472
8473 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8474
8475         * class.c: Do field layout for open generic classes as well.
8476
8477 2007-11-09  Mark Probst  <mark.probst@gmail.com>
8478
8479         * gc.c, gc-internal.h: Don't finalize threadpool threads with
8480         other objects, because the threadpool is still around.  Put them
8481         in a list instead and after finalizing all other objects in the
8482         root domain shut down the thread pool and then finalize the
8483         threads.  Fixes bug #337383.
8484
8485         * threads.c, thread-types.h: New mono_thread_create_internal()
8486         function for marking a thread with the threadpool flag before it
8487         started.  Set synch_cs to NULL after freeing it.
8488
8489         * threadpool.c: Mark threadpool threads before they start.
8490
8491 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
8492
8493         * reflection.h, reflection.c: don't export random functions
8494         and lazy load dbnull and missing objects.
8495
8496 2007-11-07  Jonathan Chambers <joncham@gmail.com>
8497
8498         * class.c: Initialize COM types if COM interfaces
8499         are present (not just COM classes).
8500         
8501         Code is contributed under MIT/X11 license.
8502
8503 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8504         * reflection.c:
8505         create_dynamic_mono_image: hook module profiler events (dynamic case).
8506         mono_image_basic_init: hook assembly profiler events (dynamic case).
8507
8508 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
8509         * profiler.c:
8510         simple_appdomain_unload: completely terminate the profiler
8511         instead of only processing the statistical samples.
8512         simple_shutdown: make sure this is really called exactly once,
8513         even in multithreaded applications, and always listen to
8514         appdomain events.
8515         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
8516         here, the "[un]load" functions will do it.
8517         Fixes bugs #333791 and #325261.
8518
8519 2007-11-07  Geoff Norton  <gnorton@novell.com>
8520
8521         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
8522         rather than depend on __APPLE__.
8523
8524 2007-11-07  Mark Probst  <mark.probst@gmail.com>
8525
8526         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
8527
8528 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
8529
8530         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
8531         UTF16 MonoString. Fix the crash from bug #335488
8532
8533 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
8534
8535         * marshal.c: Correct (for non-Win32 OS) length != size in 
8536         mono_string_from_bstr. Fix #339530.
8537
8538 2007-11-06  Geoff Norton  <gnorton@novell.com>
8539
8540         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
8541         to succeed
8542
8543 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
8544
8545         * process.c: Added run-time GetProcessId API detection for Windows.
8546
8547 2007-11-04  Miguel de Icaza  <miguel@novell.com>
8548
8549         * reflection.c  (mono_param_get_objects): If a parameter has the
8550         attribute [System.Runtime.InteropServices.Optional] we should
8551         set the DefaultValue of the ParameterInfo to be
8552         System.Reflection.Missing instead of DBNull.
8553
8554         See bug #339013.
8555
8556         (mono_get_reflection_missing_object): New method,
8557         returns the System.Reflection.Missing.Value singleton instance.
8558
8559 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8560
8561         * culture-info-table.h : regenerated.
8562
8563 2007-11-02  Jonathan Chambers <joncham@gmail.com>
8564
8565         * icall.c: Use GetEnvironmentStrings on windows
8566         so we are using the same environment block as 
8567         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
8568         #333740.
8569         
8570         Code is contributed under MIT/X11 license.
8571
8572 2007-10-31  Martin Baulig  <martin@ximian.com>
8573
8574         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
8575
8576         * mono-debug-debugger.h
8577         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
8578
8579 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
8580
8581         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
8582         classes.
8583
8584 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
8585
8586         * culture-info-table.h : regenerated.
8587
8588 2007-10-30  Robert Jordan  <robertj@gmx.net>
8589
8590         * icall-def.h, icall.c:
8591         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
8592
8593         Code is contributed under MIT/X11 license.
8594
8595 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8596
8597         * class.c (mono_class_setup_vtable): Find the inflated methods in the
8598         inflated class instead of inflating them again.
8599         
8600         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
8601         dynamic case.
8602
8603         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
8604         Call setup_supertypes () after klass->parent is set.
8605         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
8606
8607         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
8608         for inflated instances of not yet created dynamic generic classes.
8609         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
8610         times from inflated_method.
8611         (methodbuilder_to_mono_method): Ditto.
8612
8613 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
8614
8615         * gc.c: code cleanup and removed old untested option of not creating the
8616         finalizer thread.
8617
8618 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
8619
8620         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
8621         creating a jump trampoline for dynamic methods.
8622
8623 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
8624
8625         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
8626         generic TypeBuilders when called from another method of the same type (bug #335131).
8627
8628
8629 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
8630
8631         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
8632         doesn't seem to work perfectly.
8633         
8634         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
8635         called multiple times.
8636         (methodbuilder_to_mono_method): Ditto.
8637         (resolve_object): Inflate FieldBuilder's.
8638
8639 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
8640
8641         * string-icalls.c, string-icalls.h, appdomain.c: patch from
8642         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
8643         RemoveEmptyEntries in the string.Split implementation (bug #322375).
8644
8645 2007-10-26  Dick Porter  <dick@ximian.com>
8646
8647         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
8648         Thread initialisation changes
8649
8650 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
8651
8652         * verify.c: fix compatibility check between arrays and System.Array
8653
8654 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
8657         too. Fixes #336999.
8658
8659 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
8660
8661         * object.c (mono_value_box): Use typed allocation here.
8662
8663 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
8666         trampoline instead of compiling the method right away.
8667
8668         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
8669
8670 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
8671
8672         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
8673         related fields for dynamic classes. Fixes #334493.
8674
8675 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
8676
8677         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
8678         
8679         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
8680
8681         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
8682         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
8683
8684         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
8685
8686         * reflection.c (create_generic_typespec): Initialize klass->generic_container
8687         if needed.
8688         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
8689
8690 2007-10-18  Jonathan Chambers <joncham@gmail.com>
8691
8692         * marshal.c: Use correct key when removing item
8693         from ccw_hash.
8694         
8695         Code is contributed under MIT/X11 license.
8696
8697 2007-10-17  William Holmes  <billholmes54@gmail.com>
8698
8699         *marshal.c: Adding a case to marshal booleans to U1
8700
8701         Code is contributed under MIT/X11 license.
8702
8703 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
8704
8705         * class.c (mono_class_from_name): Search the modules compromising dynamic
8706         assemblies. Fixes #331601.
8707
8708 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
8711         exception if the type name contains an assembly component. Fixes #334203.
8712
8713         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
8714         modules inside dynamic assemblies. Fixes #334200.
8715         
8716         * reflection.c: Set image->public_key and image->public_key_length;
8717
8718         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
8719         fields.
8720
8721         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
8722         
8723 2007-10-16  Mark Probst  <mark.probst@gmail.com>
8724
8725         * metadata.c: Implemented correct comparing of generic classes.
8726         An inflated generic class can be equal to a non-inflated one if it
8727         is inflated with generic type variables as type arguments.  Fixes
8728         bug #333798.
8729
8730 2007-10-15  Dick Porter  <dick@ximian.com>
8731
8732         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
8733         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
8734         81646.
8735
8736         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
8737         instead of a monitor lock.  This means that monitor_try_enter and
8738         co can set the thread state safely.
8739         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
8740         thread_interrupt_requested, so interrupt actually works.
8741
8742         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
8743         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
8744         state accessor function
8745
8746 2007-10-15  Martin Baulig  <martin@ximian.com>
8747
8748         * mono-debug.h
8749         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
8750         the debugger with the current runtime.
8751
8752 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
8753
8754         * object.c, object-internals.h: added the ability to set a single
8755         trampoline for all the slots in a vtable.
8756
8757 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8758
8759         * marshal.c: deal with a possible race condition during multicast
8760         delegate invocation.
8761
8762 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8763
8764         * class.c: ensure value type methods don't have the synchronized
8765         flag set.
8766
8767 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
8768
8769         * string-icalls.c, string-icalls.h: reverted unapproved patch that
8770         breaks the build.
8771
8772 2007-10-11  Joel Reed  <joelwreed@comcast.com>
8773
8774         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
8775         to take an options parameter so that empty entries can be removed during
8776         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
8777
8778 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8779
8780         * marshal.c: make sure we don't store the signature from a dynamic
8781         method into the runtime invoke cache (bug #327189).
8782
8783 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8784
8785         * marshal.c: make sure the wrapper methods are properly initialized.
8786
8787 2007-10-11  Mark Probst  <mark.probst@gmail.com>
8788
8789         * metadata.c, metadata-internals.h: Generalized
8790         mono_type_stack_size() to mono_type_stack_size_internal() which
8791         takes an additional argument specifying whether it allows open
8792         types.
8793
8794 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8795
8796         * verify.c (do_invoke_method): handle typedbyref params
8797         correctly and check for unverifiable return values.
8798
8799         * verify.c (do_newobj): fix a warning.
8800
8801 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8802
8803         * verify.c: don't tread typedbyref as allways unverifable,
8804         so uses, like (ld/st)loc.0 are valid. verify for the cases
8805         that it matters, like boxing related operations.
8806
8807 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8808
8809         * verify.c: add verification of the newobj opcode. verification
8810         of delegate instantation still missing due ldftn and virldftn not
8811         pushing the function type on stack
8812
8813 2007-10-08  Mark Probst  <mark.probst@gmail.com>
8814
8815         * class-internals.h: Runtime generic context data structure
8816         definition.
8817
8818         * object.c: Initialization of runtime generic context at runtime
8819         vtable creation time.
8820
8821 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
8822         * class.c (mono_class_create_from_typedef,
8823         mono_class_from_generic_parameter, mono_ptr_class_get,
8824         mono_fnptr_class_get, mono_bounded_array_class_get)
8825         * domain.c (mono_domain_create, mono_domain_free)
8826         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
8827         * image.c (do_mono_image_load, mono_image_close):
8828         Hooked up load-unload profiler events.
8829
8830 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
8831
8832         * domain.c: track statistics about the actual amount of native code
8833         allocated.
8834
8835 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
8836
8837         * class.c: the valuetype enumerators don't have the additional
8838         supertypes interfaces.
8839
8840 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
8841
8842         * class.c: need more interfaces setup for the IEnumerator<T>
8843         object created for arrays (tests/ienumerator-interfaces.2.cs).
8844
8845 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
8848
8849 2007-10-05  Alp Toker  <alp@atoker.com>
8850
8851         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
8852         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
8853         #315863.
8854
8855 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8856
8857         * verify.c (verify_type_compatibility_full): verification of
8858         compatibility improved, validates correctly non-strict checks between
8859         native int and I4 types different than (unsigned)int32.
8860
8861         * verify.c (do_store_indirect): added, do all verification of
8862         ldind.X opcodes. 
8863
8864         * verify.c (get_load_indirect_mono_type): renamed to
8865         get_indirect_op_mono_type, as it now returns the MonoType for 
8866         ldind.X and stind.X opcodes.
8867
8868 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
8869
8870         * reflection.c: Fix the encoding of generic type definition for
8871         TypeBuilders.
8872
8873         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
8874         mono_image_typedef_or_ref but allows to specify if typespec lookups should
8875         be made. Typespec check is done prior to typeref cache lookup.
8876
8877         * reflection.c (mono_image_typedef_or_ref): now just delegate to
8878         mono_image_typedef_or_ref_full.
8879
8880         * reflection.c (encode_generic_class): encode the generic class
8881         directly instead of calling encode_type.
8882
8883         * reflection.c (encode_type): encode the generic type definition
8884         MonoClass as a generic instantiation.
8885
8886         * reflection.c (create_typespec): cache typespec tokens in
8887         the assembly->typespec cache. Don't create typespec for a generic
8888         instance MonoClass. Create typespec for the generic type defintion.
8889
8890         * reflection.c (create_generic_typespec): encode the generic
8891         class directly instead of calling encode_type.
8892
8893         * reflection.c (mono_image_create_token): encode the generic
8894         type definition not using a typespec for MonoType instances.
8895
8896
8897 2007-10-04  Raja R Harinath  <rharinath@novell.com>
8898
8899         Fix #328812
8900         * class.c (mono_image_init_name_cache): Don't return nested
8901         'protected internal' classes.
8902         (mono_class_from_name_case): Likewise.
8903
8904 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8905
8906         * icall-def.h, icall.c : get_bundled_machine_config() is now the
8907           common function used by both DefaultConfig in System.dll and
8908           InternalConfigurationHost in System.Configuration.dll.
8909
8910 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
8911
8912         * class.c: automatically add to vectors only a few essential explicit
8913         generic interfaces. The rest of the interfaces that arrays should
8914         provide are currently implicitly added (but still not lazily, see the
8915         design in the discussion of bug#325495 for the details of what is
8916         needed for that). Additionally, implicit interfaces are assigned the
8917         same vtable slot as the explicit interfaces (as they are compatible):
8918         this enables huge memory savings since we don't need to instantiate
8919         as many memthods and as large vtables anymore. Also, Since
8920         GetEnumerator<T> returns an instance of a type that is required to
8921         support a similarly large set of interfaces as arrays, we add
8922         implicit interfaces and interface offset sharing support to those
8923         types, too. This change adds all the required interfaces so that
8924         the anonarray.cs test case in the bug report works (we don't add
8925         all the interfaces to arrays of arrays 3-level deep and more because
8926         of the memory requirements explained in the bug and since they are much
8927         less common: the lazy-loading support will enabled them to work, too).
8928
8929 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8930
8931         * verify.c (merge_stacks): major clean up, all type compatibility
8932         checks are done by verify_type_compatibility. This fix my earlier lack
8933         of understanding of the CLR type system and merge_stacks no longer looks
8934         scary.
8935
8936         * verify.c: fixed some bad spelling.
8937
8938 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
8939
8940         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
8941         a given stack slock.
8942         
8943         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
8944         verify_type_compatibility_full. This removed a near indentical function and fixed
8945         handling of Int32 and IntPtr across all opcodes.
8946
8947 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
8948
8949         * class.c: only vectors have the additional generic interfaces.
8950
8951 2007-10-01  Jonathan Chambers <joncham@gmail.com>
8952
8953         * mono-config.c: Use g_strcasecmp instead of
8954         strcasecmp like everywhere else to fix
8955         compilation with MSVC.
8956         
8957         Code is contributed under MIT/X11 license.
8958
8959 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
8960
8961         * object.c, object-internals.h: refactored the IMT code to enable
8962         building a single slot at a time and lazily creating the IMT trampolines
8963         and thunks.
8964
8965 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
8966
8967         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
8968
8969         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
8970         Fixes #328501.
8971         
8972 2007-09-29  Raja R Harinath  <harinath@gmail.com>
8973
8974         * loader.c (method_from_methodspec): Rearrange to avoid
8975         un-necessary exposition.  Don't assert out if the method's
8976         declaring type is a generic type definition.
8977
8978 2007-09-28  Martin Baulig  <martin@ximian.com>
8979
8980         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
8981
8982 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
8983
8984         * class-internals.h: optimize field layout of MonoClass to
8985         requires less cachelines at runtime and save a few bytes on 64 bit
8986         systems.
8987
8988 2007-09-28  Jb Evain  <jbevain@novell.com>
8989
8990         * reflection.c: when encoding type names in custom attributes,
8991         if the type is a closed generic type, its generic arguments
8992         have to be serialized as AssemblyQualifiedName, so that when
8993         they are deserialized, it's possible to re-create them properly.
8994         Fixes #329450.
8995
8996
8997 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
8998
8999         * object.c, class-internals.h: added delegate-creation counter.
9000
9001 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
9002
9003         * class.c: cleanup of the code that synthetizes interfaces for
9004         arrays in 2.0: saves quit a bit of corlib mempool memory.
9005         Code to fix bug #325495 ifdeffed out for now until the issues
9006         with memory usage and O(n^2) behaviour are fixed.
9007
9008 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
9009
9010         * marshal.c: when possible, do not duplicate the name of the methods
9011         in the method builder and in the generated MonoMethod.
9012
9013 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9014         * verify.c: added support for type checking ldind_* opcodes.
9015
9016 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
9017
9018         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
9019         which is used to distinguish the fully open instantiation of a TypeBuilder
9020         with the rest. This temporary hack is required to restore the property that
9021         the fully open instantiation is the same type of the generic type definition.
9022
9023         * class-internals.h (mono_generic_class_is_generic_type_definition):
9024         new function as part of the internal API.
9025
9026         * class.c (inflate_generic_type): return NULL when the generic inst is
9027         fully open. The fully open generic type is now the same as the generic type
9028         definition for non TypeBuilder types.
9029
9030         * class.c (mono_generic_class_get_class): removed assert since it is
9031         no longer valid, gklass->cached_class can point to the generic type definition.
9032
9033         * class.c (mono_generic_class_is_generic_type_definition): new.
9034
9035         * metadata.c (mono_generic_class_hash): added is_tb_open field
9036         to the hash calculation.
9037
9038         * metadata.c (free_generic_class): if the generic class is associated
9039         with the generic type definition, its field will come from the mempool and
9040         must not be freed.
9041
9042         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
9043         new, this function identifies the corner case of a TypeBuilder fully open
9044         instantiation.
9045
9046         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
9047         for lookup. Set gclass->cached_class to be the container class in case of
9048         the fully open instantiation of non TypeBuilder types.
9049
9050         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
9051         to compare generic classes.
9052
9053         * reflection.c (method_encode_methodspec): remove assert that
9054         no longer is valid.
9055
9056         * reflection.c (mono_reflection_generic_class_initialize): add
9057         an aditional assert to ensure the proper type is used.
9058
9059 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
9060
9061         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
9062         to enjoy it.
9063
9064 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9065
9066         * verify.c (push_arg): Fixed support for ldarga
9067         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
9068         MonoType used as first arg in case of instance calls.
9069
9070 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
9071
9072         * verify.c: Support for verifying VAR and MVAR types, 
9073
9074 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
9075
9076         * icall.c (ves_icall_get_property_info): Set the reflected type of the
9077         accessors correctly.
9078
9079 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
9080
9081         * threads.c: support OSX and other systems in
9082         mono_thread_get_stack_bounds (bug #328026).
9083
9084 2007-09-25  Martin Baulig  <martin@ximian.com>
9085
9086         * mono-debug.h
9087         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
9088
9089 2007-09-24  Martin Baulig  <martin@ximian.com>
9090
9091         * mono-debug.h
9092         (MonoDebugClassEntry): Moved the definition of this struct into
9093         mono-debug.c to make it private.
9094
9095         * mono-debug.c
9096         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
9097         type table per symbol file, we don't need to store the symfile id
9098         any longer.
9099
9100 2007-09-24  Martin Baulig  <martin@ximian.com>
9101
9102         Create one type table per symbol file, since a `MonoClass *' gets
9103         invalid when its image is unloaded.
9104
9105         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
9106         (MonoDebugHandle): Added `type_table'.
9107
9108 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
9109
9110         * mempool.c, mempool.h: added mono_mempool_new_size () API
9111         to be able to specify a smaller initial size for the pool.
9112         Adjusted the code to slowly increase pool size before using
9113         the previous default size.
9114         * image.c: use a small initial size for image mempools.
9115
9116 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
9117
9118         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
9119         Fixes ##320990.
9120
9121         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
9122         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
9123
9124 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
9125
9126         * metadata.c (mono_type_create_from_typespec): Remove an invalid
9127         free. Fixes #327438.
9128
9129 2007-09-21  Raja R Harinath  <harinath@gmail.com>
9130
9131         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
9132         generic instantiations, etc.
9133         <MONO_TYPE_ARRAY>: Likewise.
9134
9135 2007-09-21  Martin Baulig  <martin@ximian.com>
9136
9137         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
9138         these structs were never defined.
9139         (MonoDebugHandle): Removed the `_priv' field, it was never used.
9140
9141 2007-09-21  Martin Baulig  <martin@ximian.com>
9142
9143         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
9144
9145 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
9146
9147         * image.c: removed the guid hash tables: we can get the same info
9148         without the additional memory usage hit (partially fixes also bug #327052).
9149
9150 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9151
9152         * profiler.h, profiler-private.h, profiler.c: add a new profiler
9153         event to handle unloading methods. After the event is called, the
9154         corresponding MonoMethod* must be considered invalid.
9155         * loader.c (mono_free_method): call the new mono_profiler_method_free
9156         event.
9157
9158 2007-09-20  Mark Probst  <mark.probst@gmail.com>
9159
9160         * domain-internals.h: New flag in MonoJitInfo which marks shared
9161         generic methods.  New hash table (shared_generics_hash) in
9162         MonoDomain to keep track of shared generic methods.  Prototypes
9163         for functions to register and lookup shared generic methods.
9164
9165         * domain.c: Support for registering and looking up shared generic
9166         methods via a hash table (shared_generics_hash) in MonoDomain.
9167
9168         * class-internals.h: New exception to signal failure of shared
9169         compilation of a generic method.  New counters for generics
9170         sharing in MonoStats.
9171
9172 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
9173
9174         * image.c, metadata-internals.h: don't keep a file descriptor open
9175         for loaded assemblies (bug#325988).
9176
9177 2007-09-19  Raja R Harinath  <rharinath@novell.com>
9178
9179         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
9180         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
9181         use the corresponding datatypes.
9182         (type_in_image): Update to changes.
9183         (CleanForImageUserData): Simplify.
9184         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
9185         Avoid quadratic behaviour in handling the "stolen" list by
9186         separating the filter predicate out, and by prepending the stolen
9187         items rather than appending them.
9188         (steal_ginst_in_image): Likewise.
9189         (mono_metadata_clean_for_image): Update to changes.
9190
9191 2007-09-19  Martin Baulig  <martin@ximian.com>
9192
9193         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
9194
9195 2007-09-19  Martin Baulig  <martin@ximian.com>
9196
9197         * mono-debug.c (mono_debug_cleanup): Don't call
9198         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
9199
9200 2007-09-19  Raja R Harinath  <harinath@gmail.com>
9201
9202         Fix crash on 'make run-test' in mcs/errors
9203         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
9204         Avoid more potential allocations in mono_class_from_mono_type.
9205         (ginst_in_image): Update to changes.
9206         (gclass_in_image): Rearrange slightly.
9207
9208 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * class.c (mono_class_init): Move the code that sets up class->methods to 
9211         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
9212
9213         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
9214         canonical instance of an inflated generic signature.
9215         (mono_type_create_from_typespec): Remove an invalid free.
9216
9217         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
9218
9219 2007-09-18  Marek Habersack  <mhabersack@novell.com>
9220
9221         * domain-internals.h: added a declaration of the
9222         mono_assembly_load_full_nosearch internal function.
9223
9224         * assembly.c (mono_assembly_load_with_partial_name): use
9225         mono_try_assembly_resolve return value properly.
9226         (mono_assembly_load_full_nosearch): copied the function body from
9227         mono_assembly_load_full, without the code to invoke assembly
9228         search hooks.
9229         (mono_assembly_load_full): calls the above new function and if the
9230         assembly is not resolved, invokes the search hooks.
9231
9232         * appdomain.c (mono_runtime_init): restore the global postload
9233         assembly search handlers.
9234
9235 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
9236
9237         * class.c (mono_class_init): Make sure class->methods and class->properties
9238         are never NULL in the generics case.
9239
9240         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
9241
9242 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * metadata.c (free_generic_class): Disable some code to fix the build.
9245
9246         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
9247
9248         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
9249         from the image mempool.
9250
9251         * metadata.c (free_generic_class): Free more data from the inflated class.
9252
9253         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
9254
9255         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
9256         mempool.
9257         (mono_type_create_from_typespec): Ditto.
9258
9259         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
9260         MonoImage to the caller.
9261         (mono_init_internal): Save the opened image in a global variable.
9262         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
9263
9264         * reflection.c (resolve_object): Fix a leak.
9265
9266         * metadata.c: Fix the freeing of data in the generics caches.
9267         
9268         * metadata.c (free_generic_inst): Comment this out to fix the build.
9269         (free_generic_class): Ditto.
9270
9271         * metadata.c: Free cached generic methods, instantinations and classes when
9272         they are removed from the caches.
9273         (mono_metadata_free_type): Free the type itself.
9274
9275         * class.c: Free the result of mono_class_inflate_generic_type () in a few
9276         places.
9277
9278 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9279
9280         * boehm-gc.c: restrict managed allocs to __thread supporting
9281         architectures.
9282
9283 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
9284
9285         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
9286         (mono_generic_class_get_class): Fix a leak.
9287
9288         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
9289         mono_metadata_free_type ().
9290         (mono_metadata_inflate_generic_inst): Fix a leak.
9291
9292 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * mono-debug.c (free_header_data): Fix a leak missed earlier.
9295
9296         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
9297         mempool.
9298
9299         * mono-debug.c (mono_debug_close_image): Fix call to 
9300         g_hash_table_remove ().
9301
9302 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9303
9304         * icall-def.h: redirect all the string ctor to the managed
9305         CreateString () methods.
9306         * string-icalls.c, string-icalls.h: removed dead code for string
9307         ctors and icalls.
9308
9309 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * mono-debug.c: Fix memory leaks.
9312
9313 2007-09-14  Jonathan Chambers <joncham@gmail.com>
9314
9315         * threads-types.h: Implement mono_hazard_pointer_set and 
9316         mono_hazard_pointer_clear macros using do/while(0) to fix
9317         compilation with MSVC.
9318         
9319         Code is contributed under MIT/X11 license.
9320
9321 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
9324         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
9325
9326 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9327
9328         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
9329         icalls.
9330
9331 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
9332
9333         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
9334         managed-code allocated as well.
9335
9336 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9337
9338         * class.c (mono_class_is_assignable_from): Add support for generic variance.
9339
9340 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
9341
9342         * boehm-gc.c: fixed the build after the AOT changes.
9343
9344 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
9345
9346         * wrapper-types.h: Add an ALLOC wrapper type.
9347
9348         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
9349         reference managed allocator methods.
9350
9351 2007-09-12  Marek Safar  <marek.safar@gmail.com>
9352
9353         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
9354         of Type array and not MonoType, a fix suggested by Hari.
9355         
9356 2007-09-12  Jonathan Chambers <joncham@gmail.com>
9357
9358         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
9359         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
9360         
9361         Code is contributed under MIT/X11 license.
9362
9363 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9364
9365         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
9366
9367 2007-09-12  Marek Habersack  <mhabersack@novell.com>
9368
9369         * image.c (do_mono_image_open): if assembly file fails to open and
9370         MONO_IOMAP is in effect, try to find the path in a
9371         case-insensitive way.
9372
9373         * appdomain.c (mono_runtime_init): do not install postload hooks -
9374         tests show that MS.NET doesn't use anything of that sort to
9375         trigger the AppDomain.AssemblyResolve event.
9376         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
9377         made non-static.
9378         (mono_runtime_init): init portability helpers here.
9379
9380         * assembly.c (mono_assembly_load_with_partial_name): if other   
9381         attempts fail, trigger the AppDomain.AssemblyResolve event handler
9382         to resolve the assembly.
9383
9384         * domain-internals.h: added mono_try_assembly_resolve and marked
9385         it as internal.
9386
9387 2007-09-11  Jb Evain  <jbevain@novell.com>
9388
9389         * object-internals.h (MonoReflectionDynamicMethod): add
9390         a `MonoReflectionType *owner` field. The owner is used
9391         * reflection.c:
9392         (mono_reflection_create_dynamic_method): use the owner of the dynamic
9393         method as the class declaring the dynamic method.
9394         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
9395         dynamic method to the declaring type of the methodbuilder.
9396
9397 2007-09-11  Mark Probst  <mark.probst@gmail.com>
9398
9399         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
9400         rules for calling methods via reflection.
9401
9402 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
9403
9404         * reflection.c (resolve_object): Add support for MonoGenericClass. 
9405         Inflate MonoType's.
9406
9407 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
9408
9409         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
9410         provide a managed method that does fast allocations without needing
9411         a managed->unmanaged transition. Boehm GC implementation currently
9412         enabled for ptrfree objects on sane architectures.
9413
9414 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9415
9416         * marshal.c, marshal.h: exported a couple of useful functions and
9417         added mono_mb_get_label () to easily handle backward branches.
9418
9419 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
9420
9421         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
9422
9423 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
9424
9425         * loader.c (find_method): Fixed the regression introduced while
9426         fixing bug #81466.
9427
9428 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
9429
9430         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
9431         well.
9432         
9433         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
9434         icall.c reflection.c: Pass a MonoGenericContext argument to 
9435         mono_lookup_dynamic_token ().
9436
9437         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
9438         #82744.
9439         
9440 2007-09-09  Robert Jordan  <robertj@gmx.net>
9441
9442         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
9443         for generic methods.
9444
9445         * object.c (mono_object_get_virtual_method): Handle generic methods.
9446         Fixes bug #78882.
9447
9448         Code is contributed under MIT/X11 license.
9449
9450 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
9451
9452         * image.c: fix locking in mono_image_load_file_for_image ().
9453
9454 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
9455
9456         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
9457         used only as a cache: added an icall to fill it.
9458
9459 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
9460
9461         * reflection.h: exposed mono_reflection_free_type_info
9462         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
9463         since mono_reflection_bind_generic_parameters makes a copy of it.
9464         * reflection.c (free_type_info): subinfos should be freed.
9465         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
9466         made non static.
9467         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
9468         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
9469         this fixes #82695 and #81726.
9470    
9471
9472 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
9473
9474         * process.h, process.c:  added support for user profile/info in
9475           ProcessStartInfo. For now only Windows works.
9476
9477 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
9478
9479         * metadata.c: consider the generic arguments when comparing
9480         signatures (bug #82614).
9481
9482 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9483
9484         * cil-coff.h, image.c: updated assembly loader to cope with the
9485         PE32+ 64 bit file format.
9486
9487 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
9488
9489         * assembly.c, class.c, domain.c, loader.c: remove useless
9490         inclusion of cil-coff.h.
9491
9492 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
9493
9494         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
9495         if interface is marked with CoClassAttribute. 
9496    
9497         Code is contributed under MIT/X11 license.
9498
9499 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
9500
9501         * sgen-gc.c: ensure no object from the to space is copied again or finalized
9502         if it's seen twice in major collections.
9503
9504 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
9505
9506         * sgen-gc.c: big objects are not copied to the gray area, but they
9507         need to be considered for scanning, too, if they are brought alive
9508         by an object ready for finalizations or a survived one.
9509
9510 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
9511
9512         * sgen-gc.c: properly account the number of disappearing links when
9513         they are nullified.
9514
9515 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
9516
9517         * sgen-gc.c: share the code to scan the registered roots between the
9518         different types of collections.
9519
9520 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9521
9522         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
9523
9524 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
9525
9526         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
9527         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
9528
9529 2007-08-28  Mark Probst  <mark.probst@gmail.com>
9530
9531         * security-manager.c (mono_security_manager_get_methods):
9532         LinkDemandSecurityException now has 2 arguments instead of 3.
9533
9534 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
9535
9536         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
9537         platforms which need it.
9538
9539 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9540
9541         * sgen-gc.c: unregister thread data structures with a pthread_key_t
9542         dtor.
9543
9544 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
9545
9546         * threads.c: free the thread static data on thread exit.
9547
9548 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
9549
9550         * class.c: walk the hierarchy to find the generic definition for
9551         a class (fixes runtime part of bug #82498).
9552
9553 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
9556         ...
9557
9558         * image.c (mono_image_close): Here. Hopefully fixes #82510.
9559
9560 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9561
9562         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
9563
9564 2007-08-24  Robert Jordan  <robertj@gmx.net>
9565
9566         * appdomain.c: don't perform the ':'->';' substitution on Win32.
9567
9568 2007-08-24  Jb Evain  <jbevain@novell.com>
9569
9570         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
9571         for byref types.
9572
9573 2007-08-24  Mark Probst  <mark.probst@gmail.com>
9574
9575         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
9576         #82286.
9577
9578 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * assembly.c: Fix a warning.
9581         
9582 2007-08-23  Marek Habersack  <mhabersack@novell.com>
9583
9584         * appdomain.c: parse the <runtime> section looking for the probing
9585         element with the 'privatePath' attribute, which sets additional
9586         directories in which the runtime should look for assemblies.
9587
9588 2007-08-23  Robert Jordan  <robertj@gmx.net>
9589
9590         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
9591         Fixes #82499.
9592
9593 2007-08-23  Martin Baulig  <martin@ximian.com>
9594
9595         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
9596         _mono_debug_init_corlib() and remove it from the header file.
9597
9598 2007-08-23  Martin Baulig  <martin@ximian.com>
9599
9600         * mono-debug-debugger.c
9601         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
9602         don't notify the debugger about it.
9603
9604         * mono-debug-debugger.h
9605         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
9606
9607 2007-08-23  Robert Jordan  <robertj@gmx.net>
9608
9609         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
9610         Code is contributed under MIT/X11 license.
9611
9612 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
9613
9614         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
9615
9616 2007-08-22  Martin Baulig  <martin@ximian.com>
9617
9618         * mono-debug.c: Store debugging info on a per-domain basis and
9619         free it on domain unload.  Add support for unloading symbol files.
9620
9621         * mono-debug.h
9622         (MonoDebugList): New typedef.
9623         (MonoSymbolTable):
9624         - add `data_tables and `type_table'.
9625         - replace 'symbol_files' and `num_symbol_files' with a
9626           `MonoDebugList *'.
9627         (mono_debug_data_table): Removed.
9628         (mono_debug_list_add): New public function.
9629         (mono_debug_list_remove): New public function.
9630         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
9631         (mono_debug_init_2_memory): Renamed into
9632         mono_debug_open_image_from_memory().
9633         (mono_debug_close_image): New public function.
9634         (mono_debug_domain_create): Likewise.
9635         (mono_debug_domain_unload): Likewise.
9636         (MONO_DEBUGGER_VERSION): Bump to 60.
9637
9638         * mono-debug-debugger.h
9639         (MonoDebuggerEvent):
9640         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
9641         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
9642         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
9643         - rename `THREAD_CREATED' and `THREAD_EXITED' into
9644           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
9645         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
9646           meaning.
9647         (mono_debugger_add_symbol_file): Removed.
9648         (mono_debugger_add_type): Removed.
9649         (mono_debugger_lookup_type): Removed.
9650         (mono_debugger_lookup_assembly): Removed.
9651
9652         * domain.c
9653         (mono_domain_create): Call mono_debug_domain_create().
9654         (mono_init_internal): Call mono_debug_init_corlib().
9655
9656         * assembly.c
9657         (mono_assembly_close): Call mono_debug_close_image().
9658
9659 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
9660
9661         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
9662         mmap call.
9663
9664 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
9665
9666         * sgen-gc.c: ensure section->pin_queue_end is initialized
9667         correctly when non pinning objects in the section have been found.
9668
9669 2007-08-22  Marek Habersack  <mhabersack@novell.com>
9670
9671         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
9672         containing a list of directories separated by ':'. MSDN docs say
9673         the directories should be separated with ';'. Part of a bugfix for
9674         bug #81446
9675
9676 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
9679         it should MonoType and not MonoClass.
9680
9681 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
9682
9683         * culture-info-table.h : regenerated.
9684
9685 2007-08-20  William Holmes  <billholmes54@gmail.com>
9686
9687         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
9688          to call ReplaceFile Kernel32 on windows or in io-layer.
9689         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
9690         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
9691          as an internal call.
9692
9693         Code is contributed under MIT/X11 license.
9694
9695 2007-08-20  Jb Evain  <jbevain@novell.com>
9696
9697         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
9698         and MONO_EXCEPTION_FIELD_ACCESS.
9699
9700         * debug-helpers.[c|h]: new mono_field_full_name function.
9701
9702 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9703
9704         * class.c: Removed class_security_level() and moved it to
9705         security-core-clr.c.
9706
9707         * security-core-clr.c, security-core-clr.h: class_security_level()
9708         is now public and renamed to mono_security_core_clr_class_level().
9709         It also looks for security attributes in the classes a class is
9710         nested in.
9711
9712 2007-08-20  Mark Probst  <mark.probst@gmail.com>
9713
9714         * security-core-clr.c, security-core-clr.h: CoreCLR security
9715         utility functions.
9716
9717         * Makefile.am: Added security-core-clr.[ch].
9718
9719         * security-manager.c, security-manager.h: Functions and enum for
9720         setting and getting the security mode.
9721
9722         * class.c: CoreCLR security checks.
9723
9724 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
9725
9726         * icall-def.h, process.c, process.h: implemented icall to get
9727         user/system processor times.
9728
9729 2007-08-17  Mark Probst  <mark.probst@gmail.com>
9730
9731         * domain.c, threads.c, class-internals.h, domain-internals.h: New
9732         reader-lock-free jit_info_table.
9733
9734 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
9737
9738         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
9739
9740         * object-internals.h (MonoException): Add missing _data member.
9741
9742 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9743
9744         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
9745         checking that only methods with matching qname or fqname are picked
9746         from implemented interfaces.
9747
9748 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9749
9750         * verify.c (do_newarr):added, do type verification of
9751         newarr ops, push the right value on the eval stack.
9752         * verify.c (mono_method_verify): use do_newarr
9753
9754
9755 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9756
9757         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
9758         factored the common code into get_boxable_mono_type, which
9759         is now using mono_type_get_full, this fixed byref related tests.
9760
9761 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
9762
9763         * class.c: added mono_type_get_full, this function has the same
9764         behavior of mono_class_get_full but the returned MonoType has
9765         all metadata of the associated token in case of a typespec token.
9766         * class.c: added mono_type_retrieve_from_typespec, used by 
9767         mono_type_get_full to retrieve the token type.
9768         * class.c (mono_class_create_from_typespec): changed to use
9769         mono_type_retrieve_from_typespec.
9770         * class.c (mono_ldtoken): changed to use mono_type_get_full
9771         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
9772         * class-internals.h: exported mono_type_get_full for internal use.
9773
9774 2007-08-16  Jb Evain  <jbevain@novell.com>
9775
9776         * domain.c (supported_runtimes): add entry for
9777         the 'moonlight' runtime version.
9778
9779 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9780
9781         * verify.c (mono_method_verify): small typo sliped in.  
9782
9783 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9784
9785         * verify.c (do_unbox_value): added, do type verification of
9786         unboxing ops
9787         * verify.c (mono_method_verify): use do_unbox_value
9788
9789
9790 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9791
9792         * verify.c (dump_stack_value): fixed typo, was printing string
9793         instead of object on stack.
9794         * verify.c (do_box_value): moved the byref check up as it leads
9795         to invalid code and should be done earlier.
9796         * verify.c: improved error messages for and ldobj
9797
9798 2007-08-15  William Holmes  <billholmes54@gmail.com>
9799
9800         * marshal.c (emit_marshal_custom): Omit the call to 
9801           marshal_native_to_managed when calling native to managed 
9802           and the argument is specified as an out argument.
9803
9804         Code is contributed under MIT/X11 license.
9805
9806 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
9807
9808         * verify.c: fixed the type checks for generics, function pointers and vectors.
9809         Added type verification for ldobj and ldtoken. The verifier
9810         would segfault if header or signature of a method contained references
9811         to non-existant types.
9812
9813 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9814
9815         * marshal.c (cominterop_get_ccw): Patch from
9816         Bill Holmes to no walk up interface hierarchy. 
9817         All parent methods should be present in the interface for COM.
9818    
9819         Code is contributed under MIT/X11 license.
9820
9821 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
9822
9823         * marshal.c (emit_marshal_com_interface): Patch from
9824         Bill Holmes to handle COM Interfaces as return values
9825         for native->managed calls.
9826    
9827         Code is contributed under MIT/X11 license.
9828
9829 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
9830
9831         * marshal.c (cominterop_get_idispatch_for_object): Implement
9832         for runtime callable wrappers.
9833    
9834         Code is contributed under MIT/X11 license.
9835
9836 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
9837
9838         * pedump.c (main): changed from mono_init to mono_init_from_assembly
9839         so 2.0 types are accessible
9840
9841
9842 2007-08-13  Miguel de Icaza  <miguel@novell.com>
9843
9844         * domain.c (mono_init_internal): Call mono_assembly_load_friends
9845         once we load mscorlib.   Due to the order in which we initialize,
9846         the mono_assembly_load_full routine that loads mscorlib did not
9847         load friends.   We now load it once we load the
9848         mono_defaults.internals_visible_class class. 
9849
9850         * assembly.c: Expose the mono_load_friend_assemblies method.
9851
9852 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
9853
9854         * verify.c: improved the handling of boxing, better
9855         type checking for unary ops and conversion. Fix bug
9856         regarding managed pointer compatibility checking
9857
9858 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
9861
9862         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
9863
9864 2007-08-09  Raja R Harinath  <rharinath@novell.com>
9865
9866         * reflection.c (dup_type): Remove.
9867         * class.c (dup_type): Remove.
9868         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
9869         instead of the dodgy 'dup_type'.
9870         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
9871         handle the case where 'dup_type' needed the second argument.
9872
9873 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
9874
9875         * domain.c: Fix a warning.
9876
9877 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
9878
9879         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
9880         checking that methods with the same fqname are not overridden
9881         with a method from an ancestor.
9882
9883 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
9884
9885         * threads.c (free_thread_static_data_helper): Avoid a crash if
9886         thread->static_data is not yet set.
9887
9888 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
9889
9890         * marshal.c: Use correct image when emitting
9891         native wrapper for COM calls.
9892    
9893         Code is contributed under MIT/X11 license.
9894
9895 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
9896
9897         * icall-def.h, security.c, security.h :
9898           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
9899
9900 2007-08-07  Martin Baulig  <martin@ximian.com>
9901
9902         * mono-debug-debugger.h
9903         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
9904
9905         * domain.c (mono_domain_free): Call
9906         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
9907
9908 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9909
9910         * verify.c (check_underflow, check_overflow): error message now returns IL offset
9911         * verify.c (in_same_block): code should test if either offset is inside the clauses
9912         * verify.c (mono_method_verify): push the exception into the eval stack of exception
9913         and filter blocks
9914
9915 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9916
9917         * image.c (mono_image_close): Fix a leak.
9918
9919         * object.c (mono_runtime_invoke_array): Avoid using alloca.
9920
9921         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
9922
9923 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
9924
9925         * domain.c, threads.c, threads-types.h: fix memory retention issue
9926         with thread static variables not being cleared on domain unload.
9927         Reuse thread static slots after domain unload.
9928
9929 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
9932         nullable type.
9933
9934         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
9935         now done in mono_runtime_invoke_array.
9936
9937         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
9938         receiver is a nullable type.
9939
9940         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
9941         generic parameter.
9942
9943 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
9944
9945         * marshal.c: Implement COM Objects as return type for 
9946         managed->unmanaged calls. Added Release calls for COM Object
9947         out/return values in managed->unmanaged calls.
9948
9949         Code is contributed under MIT/X11 license.
9950
9951 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
9952
9953         * threads.h, threads-type.h: move the hazard pointer declarations
9954         to the private header.
9955
9956 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
9957
9958         * file-io.c, appdomain.c: memory leak fixes.
9959
9960 2007-08-02  Dick Porter  <dick@ximian.com>
9961
9962         * socket-io.c
9963         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
9964         SO_REUSEADDR setting into io-layer/sockets.c.
9965
9966 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
9967
9968         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
9969         from Object when called on a generic parameter. Fixes #82211.
9970
9971 2007-08-01  Dick Porter  <dick@ximian.com>
9972
9973         * file-io.c (convert_share): Test FileShare values bit-by-bit.
9974         Fixes bug 79250 yet again.
9975
9976 2007-07-30  Martin Baulig  <martin@ximian.com>
9977
9978         Merged the `debugger-dublin' branch.
9979
9980         * mono-debug.h
9981         (MonoDebugDataTable): New typedef.
9982         (MonoDebugMethodAddressList): New typedef.
9983         (MonoDebugWrapperData): Removed.
9984         (MonoDebugSymbolTable): Removed `current_data_table',
9985         `current_data_table_size', `current_data_table_offset'.
9986         (MonoDebugDataItemType): Moved into mono-debug.c.
9987         (MonoDebugMethodJitInfo): Remove `address'.
9988         (mono_debug_data_table): New global variable.
9989         (mono_debug_lookup_method_addresses): New public function.
9990         (mono_debug_find_method): Take a `MonoMethod *', not a
9991         `MonoDebugMethodInfo *'.
9992
9993         * mono-debug.c: Drop support for the old symbol tables.
9994
9995 2007-06-28  Martin Baulig  <martin@ximian.com>
9996
9997         * mono-debug.c (mono_debug_debugger_version): New public variable.
9998
9999 2007-07-31  William Holmes  <billholmes54@gmail.com>
10000
10001         * metadata.c Changed mono_type_create_from_typespec to not insert
10002           the type into the hash map until after
10003           do_mono_metadata_parse_type has completed.
10004         Fixes Bug #82194
10005         Code is contributed under MIT/X11 license.
10006
10007 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
10008
10009         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
10010         generic parameter. Fixes #82211.
10011
10012 2007-07-27  Jb Evain  <jbevain@novell.com>
10013
10014         * pedump.c (dump_metadata, dump_metadata_header): dump
10015         versions contained in the metadata header.
10016
10017 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10018
10019         * threads.c: register small_id_table with the GC.
10020
10021 2007-07-27  Mark Probst  <mark.probst@gmail.com>
10022
10023         * threads.c, threads.h, class-internals.h, object-internals.h:
10024         Hazard pointers, to be used by lock-free parallel algorithms.
10025
10026 2007-07-26  Dick Porter  <dick@ximian.com>
10027
10028         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
10029         routine on non-windows platforms, as I've not managed to think of
10030         a non-kludgy way of doing this.  Finishes off bug 78739.
10031
10032 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10033
10034         * object.c: properly setup interface_bitmap in proxy vtables.
10035
10036 2007-07-25  Marek Habersack  <mhabersack@novell.com>
10037
10038         * appdomain.c (get_shadow_assembly_location): do not use TickCount
10039         to create unique shadow copy target directories, use the domain's
10040         serial number instead. Each domain gets a unique target directory
10041         that way.
10042
10043         * domain.c (mono_domain_create): added code to increment domain
10044         shadow copy serial number and cache the value in the current
10045         domain structure.
10046
10047         * domain-internals.h (struct _MonoDomain): added a new field -
10048         shadow_serial to hold the serial number used in generation of
10049         shadow-copy directories. This is to make sure that the directory
10050         name is unique for each and every domain created. We avoid a race
10051         condition with overriding assemblies already in use by other app
10052         domains.
10053
10054 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
10055
10056         * class.c (mono_bounded_array_class_get): fixed memory leak when 
10057         binding generic parameters.
10058
10059 2007-07-24  Raja R Harinath  <rharinath@novell.com>
10060
10061         * metadata.c (do_mono_metadata_parse_generic_class): Use
10062         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
10063         error.
10064
10065 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
10066
10067         * loader.c, class-internals.h, reflection.c: removed the per-method
10068         generics hashtable: we use the global one through the call of
10069         mono_class_inflate_generic_method ().
10070
10071 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10072
10073         * class.c, metadata.c, class-internals.h: introduce yet another
10074         generics global cache for inflated methods (fixes 98% of the perf
10075         issue in bug #81806).
10076
10077 2007-07-23  Raja R Harinath  <rharinath@novell.com>
10078
10079         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
10080         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
10081         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
10082         return a MonoGenericInst containing (a copy) of those types.
10083         (mono_metadata_inflate_generic_inst): Update to changes.
10084         (mono_metadata_parse_generic_inst): Likewise.
10085         (mono_get_shared_generic_inst): Likewise.
10086         * reflection.c (mono_class_bind_generic_parameters): Likewise.
10087         (mono_reflection_bind_generic_method_parameters): Likewise.
10088         * metadata-internals.h: Likewise.
10089         * icall.c (free_generic_context): Kill.
10090         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
10091
10092         * reflection.c (reflection_methodbuilder_to_mono_method): Use
10093         mono_metadata_type_dup.
10094         * marshal.c (mono_mb_create_method): Likewise.
10095
10096         * metadata.c (mono_metadata_type_dup): Rename from
10097         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
10098         MonoImage.  Handle a few more cases, esp. when no mempool is given.
10099         * marshal.c, metadata-internals.h: Update to changes.
10100
10101 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
10102
10103         * class.c: fixed a small leak for array classes and removed warning.
10104
10105 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * loader.c (mono_method_get_param_token): Make this work on generic methods.
10108         Return 0x8000000 for return parameters. Fixes #82161.
10109
10110 2007-07-21  Marek Habersack  <grendello@gmail.com>
10111
10112         * appdomain.c (get_shadow_assembly_location): append the current
10113         ticks value to the path. Avoids overwriting the same assemblies by
10114         several threads at the same time.
10115
10116 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10117         and Raja R Harinath  <rharinath@novell.com>
10118
10119         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10120         Simplify slightly.
10121         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
10122         property for testing if a method is a generic method definition.
10123
10124 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
10125
10126         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
10127
10128 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10129
10130         * verify.c: used function from private branch, reverted to the one in class.h 
10131
10132 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10133
10134         * verify.c: a typo slipped in and the code wont compile
10135
10136 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10137
10138         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
10139         disabled box instruction as it is doing the wrong thing
10140         improved stack dump messages, now it is easier to debug type related issues
10141
10142
10143 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
10144
10145         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
10146
10147 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10148
10149         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
10150         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
10151         grouped with class and valuetype. This change will simply 
10152         the code as it should be handled just like unmanaged pointers.
10153
10154 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10155
10156         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
10157
10158 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
10159
10160         * verify.c: several stack merge issues fixed, reference comparisons now
10161         check the type size. strict type check now works correctly.
10162         added more uses of IS_MANAGED_POINTER macro.
10163         fixed issues pointed by running the test suite against .net.
10164         
10165
10166 2007-07-19  Mark Probst  <mark.probst@gmail.com>
10167
10168         * class.c, loader.c, class-internals.h: Removed the
10169         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
10170         defines.
10171
10172         * icall.c: Better error checking in some internal reflection
10173         methods.
10174
10175 2007-07-18  William Holmes  <billholmes54@gmail.com>
10176
10177         * filewatcher.c : removed unused variable 'filename' in 
10178           ves_icall_System_IO_FSW_SupportsFSW
10179
10180 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
10181
10182         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
10183         obsolete, removed.
10184
10185 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
10188         
10189         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
10190
10191 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
10194         Implement generics support.
10195         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10196
10197         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
10198         type_args and method_args arguments.
10199         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
10200         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10201         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
10202
10203 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
10204
10205         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
10206           It adds a rootimage parameter to mono_reflection_get_type_internal,
10207           adds new function mono_reflection_get_type_with_rootimage and use
10208           the rootimage to resolve the types instead of the current image
10209
10210 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
10211
10212         * culture-info-table.h: Forgot to update after r78304.
10213
10214 2007-07-13  Raja R Harinath  <rharinath@novell.com>
10215
10216         * class.c (mono_class_is_open_constructed_type)
10217         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
10218
10219 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
10220
10221         * class.c (mono_bounded_array_class_get):  method fails if used with
10222         an incomplete TypeBuilder enum (no basetype field), fixed it by 
10223         avoiding calculating the size for such array as it cannot be instantiated.
10224         Fix bug #82015
10225
10226 2007-07-12  Raja R Harinath  <rharinath@novell.com>
10227
10228         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
10229         field.
10230         * metadata.c, reflection.c: Update to changes.
10231
10232 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
10233
10234         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
10235         mono_class_is_valid_enum, they are used to valide a enum when loading.
10236         * reflection.c: used new functions to throw TypeLoadException when and
10237         invalid enum is build with TypeBuilder. Fixes #82018
10238   
10239 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
10240
10241         * object.c: forgot commit of mono_class_setup_methods () to access
10242         iface->methods.
10243         * object-internals.h: added a few more handy fields to
10244         MonoIMTCheckItem.
10245
10246 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
10247
10248         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
10249         iface->methods.
10250
10251 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
10252
10253         * class-internals.h, object-internals.h, object.c: IMT-based
10254         interface invocation core from Massimiliano Mantione
10255         (massi@ximian.com) with a reworked arch-specific interface,
10256         bsearch implementation and a few bugfixes and memory savings by me.
10257
10258 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
10259
10260         * class.c (mono_class_create_from_typedef): mono would segfault if 
10261         an enum did not have a __value field. It now throws a TypeLoadException
10262         for such cases. Fix bug #82022
10263
10264 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10265
10266         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
10267
10268 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10269
10270         * class.c (mono_class_init): If a class is already inited but has
10271         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
10272
10273 2007-07-09  Mark Probst  <mark.probst@gmail.com>
10274
10275         * class.c: Properly handle the case of an unimplemented interface
10276         method.  Fixes: 81673.
10277
10278 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
10279
10280         * class-internals.h, object.c: cleanup patch from massi: use
10281         MonoVTable->interface_bitmap since the vtable interfaces offset array
10282         is going away.
10283
10284 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
10285
10286         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
10287         GetMDStreamVersion icall instead.
10288
10289 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
10290
10291         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
10292         not use mono_dl_build_path() with a full library name: makes
10293         fallbacks to libgaim and libfam work.
10294
10295 2007-07-06  William Holmes  <billholmes54@gmail.com>
10296
10297         * assembly.c: Added a continue statement in probe_for_partial_name when
10298          parse_assembly_directory_name fails.  Fixes : 82002
10299
10300 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
10301
10302         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
10303         and added a verification  for TYPEDBYREF.
10304         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
10305         make native int interchangeable with int32 and some small cleanup and formating.
10306         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
10307         handle byref of byref.
10308         * verify.c (push_local): handle byref of byref.
10309         * verify.c (do_binop): invalid mix of values is unverifiable
10310         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
10311         added visibility checks
10312         * verify.c (field related method): added visibility checks
10313         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
10314
10315 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
10316
10317         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
10318         string.
10319
10320 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * profiler.c (mono_profiler_load): Fix an off-by-one error.
10323
10324         * marshal.c (emit_marshal_string): When returning a string from managed code,
10325         allways make a copy even for unicode strings. Fixes #81990.
10326
10327 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
10328
10329         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
10330         of byref generic inst types (bug #81997).
10331
10332 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
10333
10334         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
10335         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
10336
10337 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
10338
10339         * marshal.c (emit_marshal_string): Add support for unicode strings in
10340         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
10341
10342 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
10343
10344         * verify.c: field load/store are now verified, missing only access checks now
10345
10346 2007-06-28  Martin Baulig  <martin@ximian.com>
10347
10348         * mono-debug.c (mono_debug_debugger_version): New public variable.
10349
10350 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
10351
10352         * locales.c: When constructing DateTimeFormat or NumberFormat for
10353         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
10354         MonoCultureInfo contructed from the current locale is always
10355         read-only and has UseUserOverride set to true. All MonoCultureInfo
10356         instances returned for GetCultures have both IsReadOnly and
10357         UseUserOverride set to true. Fixes part of bug #81930.
10358
10359 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
10360
10361        * icall-def.h: Update System.__ComObject icalls
10362        * marshal.c: Avoid managed transition (and object creation)
10363        when looking up COM interface in RCW.
10364        * marshal.h: Ditto.
10365        
10366        Code is contributed under MIT/X11 license.
10367
10368 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
10371         to avoid crashes during assembly unloading.
10372
10373 2007-06-22  Raja R Harinath  <rharinath@novell.com>
10374
10375         Fix MethodInfo.IsGenericMethodDefinition
10376         * reflection.c (mono_reflection_bind_generic_method_parameters):
10377         Rearrange code to ensure we always uses a generic method definition.
10378         * class.c (mono_class_inflate_generic_method_full): Set
10379         'generic_container' field only for generic method definitions.
10380         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
10381         Use presense of 'generic_container' field as indication of being a
10382         generic method definition.
10383
10384 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
10385
10386         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10387
10388         * object-internals.h: Reflect changes in the layout of the managed Delegate
10389         class.
10390         
10391         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
10392         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
10393         runtime memory used by the dynamic method. Fixes #77146.
10394
10395 2007-06-21  Dick Porter  <dick@ximian.com>
10396
10397         * file-io.h: 
10398         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
10399         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
10400         81767.
10401
10402 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10403
10404         * reflection.c (method_encode_methodspec): Add a tripwire.
10405         * class.c (inflate_generic_type): The fully open generic type is
10406         not the same as the generic type definition.
10407
10408 2007-06-21  Martin Baulig  <martin@ximian.com>
10409
10410         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
10411
10412         * mono-debug-debugger.h
10413         (MonoDebuggerBreakpointInfo): Removed.
10414         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
10415         (mono_debugger_remove_breakpoint): Likewise.
10416         (mono_debugger_breakpoint_callback): Likewise.
10417         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
10418
10419 2007-06-21  Raja R Harinath  <rharinath@novell.com>
10420
10421         * metadata.c (mono_metadata_lookup_generic_class): The fully open
10422         generic type is not the same as the generic type definition.
10423         * class.c (mono_generic_class_get_class): Likewise.
10424
10425 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
10426
10427         * icall.c: The second argument to 
10428         System.Reflection.MethodBase.GetMethodFromHandleInternalType
10429         is a MonoType not a MonoClass.
10430
10431 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10432
10433         * verify.c: support for function pointers in the verifier
10434
10435 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
10436
10437         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
10438
10439 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10440
10441         * assembly.c: removed Mono.Data.SqliteClient from the list of
10442         forward-compatible assemblies as it breaks the ABI (bug #81899).
10443
10444 2007-06-19  Raja R Harinath  <rharinath@novell.com>
10445
10446         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
10447         lookup/update with the loader lock.
10448         * reflection.c (mono_class_bind_generic_parameters): No need to
10449         protect mono_metadata_lookup_* with the loader lock.
10450         * class.c (inflate_generic_type): Likewise.
10451         
10452         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
10453         on a generic instantiated type.
10454
10455 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
10456
10457         *verify.c: produce meanfull error messages on verification error
10458         *verify.c: fixed some cases of verification errors reported as validation errors
10459         *pedump.c: fixed the error name array, now it shows validation errors properly
10460         *verify.h: fixed the contant that should be used for verification errors
10461
10462 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
10463
10464         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
10465         for bug #77596, 81858 and 80743 (generics data structures on domain
10466         unload).
10467
10468 2007-06-15  Raja R Harinath  <rharinath@novell.com>
10469
10470         Avoid allocating 'MonoGenericContext' on the heap.
10471         * class-internals (_MonoMethodInflated::context): Make field
10472         inline, not a pointer.
10473         * loader.c (method_from_methodspec): Allocate 'new_context' on the
10474         stack.  Use the context embedded within the inflated method as the
10475         hash key, rather than 'new_context'.
10476         * class.c (inflate_generic_context): Simplify.  Return a struct
10477         rather than allocating on the heap.
10478         (mono_class_inflate_generic_method_full): Update to changes.  Now,
10479         doesn't salt away a copy of the context -- simplifying the
10480         lifetime rules of a 'MonoGenericContext *'.
10481         (mono_method_get_context): Return pointer to embedded context.
10482         (setup_generic_array_ifaces): Allocate temporary context on stack.
10483         * reflection.c (inflate_mono_method): Likewise.
10484         (mono_reflection_bind_generic_method_parameters): Likewise.
10485         Use the context embedded within the inflated method as the hash key.
10486
10487         Avoid a source of allocation of 'MonoGenericContext'.
10488         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
10489         and 'cached_context' fields into embedded 'MonoGenericContext' field.
10490         * class.c: Update to changes.
10491         (mono_generic_class_get_context): Simplify drastically.  Now just
10492         returns a pointer to the field.
10493         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
10494         argument as a const pointer.
10495         (mono_metadata_generic_context_equal): Likewise.
10496         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
10497         Update to changes.
10498
10499 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
10500
10501         * verify.c improved the handling of brtrue/brfalse, factored out common code
10502
10503 2007-06-14  Raja R Harinath  <rharinath@novell.com>
10504
10505         Kill MonoGenericMethod.
10506         * class-internals.h (MonoGenericContext::method_inst): Rename from
10507         'gmethod' and convert to a MonoGenericInst.
10508         (MonoGenericMethod): Remove.
10509         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
10510         * loader.c (method_from_methodspec): Update to changes.  Use a
10511         MonoGenericContext as the key to the hashtable.
10512         * metadata.c (mono_metadata_generic_context_equal): Rename from 
10513         'mono_metadata_generic_method_equal' and take MonoGenericContext.
10514         (mono_metadata_generic_context_hash): Likewise from
10515         'mono_metadata_generic_method_hash'.  Change hash function.
10516         (mono_metadata_load_generic_params): Update to changes.
10517         (mono_get_shared_generic_method): Remove.
10518         * metadata-internals.h (mono_get_shared_generic_method): Remove.
10519         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
10520         (inflate_generic_context): Likewise.
10521         (mono_class_inflate_generic_method_full): Likewise.
10522         (setup_generic_array_ifaces): Likewise.
10523         (mono_class_create_from_typespec): Likewise.
10524         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
10525         (method_encode_methodspec): Update callsite.
10526         (reflection_methodbuilder_to_mono_method): Update to changes.
10527         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
10528         MonoGenericContext as the key to the hashtable.
10529         (inflate_mono_method): Update to changes.
10530
10531         * class-internals.h (MonoGenericMethod::container): Remove.
10532         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
10533
10534 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
10535
10536         * profiler-private.h, profiler.c, profiler.h: added API to profile
10537         exception events.
10538
10539 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10540
10541         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
10542
10543 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
10544
10545         * verify.c: method invocation is now validated, now we verify parameter types on stack.
10546         Fixed overflow and underflow not aborting the verification process.
10547
10548 2007-06-13  Mark Probst  <mark.probst@gmail.com>
10549
10550         * class-internals.h (MonoStats): Added stats entries for dynamic
10551         code allocations.
10552
10553 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * loader.c (mono_free_method): Free header->locals and header->clauses.
10556
10557         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
10558         dynamic case.
10559
10560         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
10561
10562         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
10563
10564 2007-06-12  Raja R Harinath  <rharinath@novell.com>
10565
10566         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
10567         the tables.
10568
10569 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10570
10571         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
10572
10573 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10574
10575         MonoGenericMethod on a diet
10576         * class-internals.h (_MonoMethodInflated::reflection_info): Move
10577         here ...
10578         (_MonoGenericMethod::reflection_info): ... from here.
10579         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
10580         Update to changes.
10581         * reflection.c (inflate_mono_method): Likewise.
10582         (mono_reflection_bind_generic_method_parameters): Likewise.
10583
10584 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10585
10586         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
10587         *verify.c: factored long ldarg forms to share code with short forms
10588
10589 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
10590
10591         *verify.c: fixed code formating factored some duplicate code
10592         into a new function
10593
10594         *verify.h: fixed binary incompatibility introduced earlier
10595
10596         *pedump.c: fixed formating
10597
10598 2007-06-11  Raja R Harinath  <harinath@gmail.com>
10599
10600         Fix assertion when disassembling Mono.C5.dll
10601         * loader.c (method_from_methodspec): Avoid inflating a method
10602         twice with the same context.  If the methodref is inflated, use
10603         the declaring method instead.
10604
10605         * class.c (mono_class_from_generic_parameter): Fix case similar to
10606         bug #81830 handled below, but for method containers.
10607
10608 2007-06-10  Raja R Harinath  <harinath@gmail.com>
10609
10610         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
10611         get_shared_generic_class.  Directly inflate the instance.
10612         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
10613         (inflate_generic_class): Delete.
10614         (get_shared_generic_class): Delete.  Move setting of
10615         'cached_class' and 'cached_context' ...
10616         * metadata.c (mono_metadata_lookup_generic_class): ... here.
10617
10618         * metadata.c (mono_metadata_lookup_generic_class): Change
10619         signature to take the components of a MonoGenericClass rather than
10620         an allocated MonoGenericClass.  Change semantics to be intern-like.
10621         * reflection.c (mono_class_bind_generic_parameters): Update to
10622         changes.  Make locking region tighter.
10623         * class.c (inflate_generic_class): Update to changes.
10624         (get_shared_generic_class): Likewise.
10625         * metadata-internals.h: Likewise.
10626
10627         * reflection.c (mono_class_bind_generic_parameters): Take and
10628         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
10629         (mono_reflection_bind_generic_parameters): Use
10630         'mono_class_bind_generic_parameters' rather than duplicate the code.
10631         * class.c (mono_bounded_array_class_get): Update to changes.
10632         * object-internals.h: Likewise.
10633
10634         * reflection.c (mono_class_bind_generic_parameters): Only support
10635         parameterizing generic type definitions.  Remove support for other
10636         open types.
10637
10638 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
10641
10642         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
10643         in the dynamic case.
10644
10645 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
10646
10647         * threads.c: When cleaning up thread, reset the Background bit.
10648         Fixes bug #81720.
10649
10650 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
10651
10652        * metadata.c: Move variable declarations to top of scope.
10653        * verify.c: Move variable declarations to top of scope.
10654
10655        Code is contributed under MIT/X11 license.
10656
10657 2007-06-08  Raja R Harinath  <rharinath@novell.com>
10658
10659         * reflection.c (mono_class_bind_generic_parameters): Replace
10660         open-coded loop with mono_metadata_inflate_generic_inst.
10661
10662         * class.c (get_shared_generic_class): Don't call
10663         mono_get_shared_generic_inst.  Use the container's own
10664         'class_inst'.
10665
10666         * metadata.c (mono_metadata_load_generic_params): Move
10667         initialization of 'context' field here from ...
10668         * class.c (mono_class_create_from_typedef): ... here, and ...
10669         * loader.c (mono_get_method_from_token): ... here.
10670
10671         * class.c (get_shared_generic_class): Rename from
10672         mono_get_shared_generic_class and make static.
10673         (mono_get_shared_generic_inst): Move to metadata.c.
10674         * loader.c (mono_get_shared_generic_method): Likewise.
10675         * class-internals.h, metadata-internals.h: Update to changes.
10676
10677         Fix #81830
10678         * class.c (mono_class_from_generic_parameter): Don't assume a
10679         generic container owner exists.  Generic containers from monodis
10680         don't have any.
10681
10682 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
10683
10684         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
10685         * verify.h: new typedefs to returns the non-verifiable status
10686         * verify.c: initial implementation of generics, stack merging and object compatibility check
10687
10688 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10689
10690         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10691         a MonoInternalHashTable again (fixed bug in internal hash table
10692         code).
10693
10694 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10695
10696         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10697         MonoInternalHashTable again (fixed bug in internal hash table
10698         code).
10699
10700 2007-06-06  Mark Probst  <mark.probst@gmail.com>
10701
10702         * class.c, image.c, class-internals.h, domain.c,
10703         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
10704         changes.  Have to figure out what makes them break the SWF
10705         regression.
10706
10707 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10708
10709         * class.c, image.c, class-internals.h (MonoImage): class_cache is
10710         a MonoInternalHashTable now.
10711
10712 2007-06-04  Mark Probst  <mark.probst@gmail.com>
10713
10714         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
10715         MonoInternalHashTable now.
10716
10717 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
10718
10719         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
10720         invoke_impl code.
10721
10722         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
10723
10724         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
10725         dependent trampoline.
10726
10727         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10728
10729         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
10730
10731 2007-05-29  Robert Jordan  <robertj@gmx.net>
10732
10733         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
10734
10735 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
10738
10739 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
10740
10741        * marshal.c: Fix interface lookup loops for
10742        cominterop_get_com_slot_for_method and 
10743        cominterop_get_method_interface. Only need to lookup
10744        if type is a class, else use interface type method is on.
10745
10746        Code is contributed under MIT/X11 license.
10747
10748 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
10749
10750         * reflection.c: HasSecurity can be present even if no specially 
10751         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
10752         SecurityAttribute). Fix CAS regression tests on buildbot.
10753
10754 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
10755
10756        * appdomain.c: Add configure checks for header files.
10757        * image.c: Add configure checks for header files.
10758        * file-io.c: Add configure checks for header files.
10759        * debug-mono-symfile.c: Add configure checks for header files.
10760        * threadpool.c: Add configure checks for header files.
10761        * console-io.c: Add configure checks for header files.
10762        * profiler.c: Add configure checks for header files.
10763        * rawbuffer.c: Add configure checks for header files.
10764        * icall.c: Add configure checks for header files.
10765        * rand.c: Add configure checks for header files.
10766        * socket-io.c: Add configure checks for header files.
10767
10768        Code is contributed under MIT/X11 license.
10769
10770 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
10771
10772         * reflection.c (mono_custom_attrs_from_builders): Remove the 
10773         assertion as it breaks the build.
10774         
10775         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
10776
10777         * reflection.c (lookup_custom_attr): Make a copy here too.
10778
10779         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
10780         dynamic images.
10781
10782         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
10783         images.
10784
10785         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
10786         info.
10787
10788 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
10789
10790         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
10791         (load_cattr_value): Ditto.
10792
10793 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
10794
10795         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
10796
10797 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
10798
10799         * threads.c: In "start_wrapper", set apartment_state to MTA if
10800         apartment_state is Unknown and we're running on 2.0 profile or
10801         higher.
10802         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
10803         to main method, then set apartment_state to Unknown on 1.0 profile,
10804         and MTA on 2.0 profile.
10805
10806 2007-05-16  Jb Evain  <jb@nurv.fr>
10807
10808         * class-internals.h (MonoDefaults): Add an attribute_class and
10809           customattribute_data_class.
10810         * domain.c (mono_init_internal): Populate them.
10811         * reflection.c: Use them to remove duplicates. Make a vew
10812         MonoClass variables `static'.
10813
10814 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
10815
10816         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
10817         step in implementing IMT, so that all isinst checks now can go
10818         through the bitmap.
10819         This was needed because vtables for TransparentProxy need to look
10820         like the vtable of the "target" class, so they need to point to
10821         its interface bitmap directly.
10822
10823         * object.c: inside "mono_class_create_runtime_vtable" and
10824         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
10825
10826 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
10827
10828         * object-internals.h
10829           culture-info.h : added territory field in MonoCulture and
10830           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
10831         * locales.c : fill territory field above too.
10832         * culture-info-table.h : regenerated.
10833
10834 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
10837         Fixes #81599.
10838
10839 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
10840
10841         * object.c: Always initialize apartment, even if 
10842         there is no custom attributes on entry point.
10843         
10844         Code is contributed under MIT/X11 license.
10845
10846 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
10847
10848         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
10849         * metadata.c: If no encoding is set, check for unicode
10850         on class.
10851         
10852         Code is contributed under MIT/X11 license.
10853
10854 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10855
10856         * threads.c: Handle if mono_thread_current returns NULL 
10857         
10858         Code is contributed under MIT/X11 license.
10859
10860 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
10861
10862         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
10863         in start_wrapper. Added mono_thread_init_apartment_state and
10864         mono_thread_cleanup_apartment_state.
10865         * object.c: Initialize thread apartment state on main thread
10866         by checking for STAThreadAttribute on entry point.
10867         * object-internals.h: Add apartment_state field to MonoThread.
10868         * threads-types.h: Add unmanaged definition of 
10869         System.Threading.ApartmentState, MonoThreadApartmentState.
10870         
10871         Code is contributed under MIT/X11 license.
10872         
10873 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
10874
10875         * class.c: Fix windows build.
10876         * class-internals.h: Fix windows build.
10877         
10878         Code is contributed under MIT/X11 license.
10879
10880 2007-05-08  Robert Jordan  <robertj@gmx.net>
10881
10882         * process.c (CreateProcess_internal):
10883         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
10884         .CreateNoWindow was specified. Fixes #81496.
10885
10886 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10887
10888         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
10889         step in implementing IMT, replaced it with two compact arrays
10890         (interfaces_packed and interface_offsets_packed) and a bitmap that
10891         is used for isinst checks (interface_bitmap).
10892
10893         * class.c: (compare_interface_ids): compare function to pass to
10894         bsearch when looking for an interface with a given id.
10895         (mono_class_interface_offset): reimplemented using bsearch on
10896         interfaces_packed, getting the offset from interface_offsets_packed.
10897         (print_implemented_interfaces): utility debugging function.
10898         (setup_interface_offsets): reworked to initialize interfaces_packed,
10899         interface_offsets_packed and interface_bitmap.
10900
10901         * object.c: replaced all accesses to "MonoClass.interface_offsets"
10902         with uses of interfaces_packed and interface_offsets_packed.
10903
10904 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
10905
10906         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
10907         mono_class_interface_offset prototype to wrap all accesses to
10908         "MonoClass.interface_offsets".
10909
10910         * class.c: Implemented mono_class_interface_offset, and wrapped all
10911         accesses to "MonoClass.interface_offsets".
10912
10913         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
10914         "MonoClass.interface_offsets".
10915
10916 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
10917
10918         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
10919         GetMethodFromHandle overloads (bug #78637).
10920
10921 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
10922
10923         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
10924         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
10925
10926 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
10927
10928         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
10929         #81498.
10930
10931         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
10932         gracefully.
10933         (mono_custom_attrs_from_index): Ditto.
10934
10935         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
10936         Fixes #81501.
10937
10938 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
10941         is now allocated from a mempool.
10942
10943 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
10944
10945         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
10946         caller holds threads_lock, leading to deadlocks. Fixes #81476.
10947
10948 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
10951         mono_loader_clear_error () too late. Fixes #81463.
10952
10953 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
10954
10955         * culture-info-table.h : regenerated.
10956
10957 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
10960         is missing.
10961
10962 2007-04-25  Dick Porter  <dick@ximian.com>
10963
10964         * Makefile.am: Put the mingw enforced-optimisation back into the
10965         PLATFORM_WIN32 section.
10966
10967 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
10970         patch.
10971
10972         * image.c (mono_image_load_module): New API function to load a module reference.
10973
10974         * image.c (load_modules): Load modules lazily. Fixes #80812.
10975
10976         * class.c (mono_class_from_typeref): Use mono_image_load_module.
10977         
10978         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
10979
10980         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
10981         to mono_image_load_module_dynamic.
10982
10983 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
10984
10985         * marshal.c: Fix calling convention for CCW on non-windows
10986         platforms. STDCALL on windows, CDECL everywhere else to work 
10987         with XPCOM and MainWin COM.
10988         
10989         Code is contributed under MIT/X11 license.
10990
10991 2007-04-23  Martin Baulig  <martin@ximian.com>
10992
10993         Fix #80969.
10994
10995         * loader.c
10996         (method_from_memberref): Added `gboolean *used_context' argument.
10997         (mono_get_method_from_token): Likewise.
10998         (mono_get_method_full): Don't insert the method in the cache when
10999         `used_context' is true.
11000
11001 2007-04-23  Raja R Harinath  <rharinath@novell.com>
11002
11003         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
11004
11005         * reflection.c (mono_reflection_bind_generic_parameters): Don't
11006         create new MonoTypes for returned types.
11007         * class.c (mono_generic_class_get_class): Export mono-internal.
11008         * class-internals.h: Update to changes.
11009
11010 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11011
11012         * threadpool.c, threadpool.h, icall-def.h: patch from
11013         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
11014
11015 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
11018         
11019         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
11020
11021         * threads.c (mono_thread_get_stack_bounds): New helper function.
11022
11023         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
11024         Correctly compute stack bounds when attaching. Fixes #81394.
11025
11026 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
11027
11028         * reflection.c: fix handling of doubles in custom attributes
11029         for the arm-fpa format (bug #81368).
11030
11031 2007-04-18  Raja R Harinath  <rharinath@novell.com>
11032
11033         * reflection.c (assembly_add_win32_resources): Mildly relax an
11034         bounds check to let the end pointer point just past the end of the
11035         allocated buffer.  (may fix #81384)
11036
11037 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
11038
11039         * culture-info-table.h : regenerated.
11040
11041 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
11044         the thread is aborted early.
11045
11046 2007-04-05  Dick Porter  <dick@ximian.com>
11047
11048         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
11049         FindFirstFile()/FindNextFile() to find entries.  This lets the
11050         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
11051         81038.
11052
11053         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
11054         the parameters of
11055         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
11056
11057 2007-04-04  Martin Baulig  <martin@ximian.com>
11058
11059         * debug-helpers.c
11060         (mono_method_desc_full_match): Add support for nested classes.
11061
11062 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
11063
11064         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
11065
11066 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
11069         waiting for too many threads.
11070
11071 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
11072
11073         * environment.c: Fix return value check on uname so we can get the 
11074         executing version on Solaris operating systems.
11075
11076 2007-03-28  Jb Evain  <jbevain@gmail.com>
11077
11078         * class.c (mono_type_get_name_recurse): Complete the
11079         fix for the creation of assembly qualified names for
11080         pointer types. Fixes #81208.
11081
11082 2007-03-27  Dick Porter  <dick@ximian.com>
11083
11084         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
11085         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
11086         changed.
11087
11088         * threads.c
11089         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
11090         the value of ReleaseMutex().
11091
11092 2007-03-27  Dick Porter  <dick@ximian.com>
11093
11094         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
11095         in little-endian order, not network endian, so must be converted
11096         to host endian here.  Fixes bug 80593.
11097
11098 2007-03-22  Jb Evain  <jbevain@gmail.com>
11099
11100         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
11101         qualified names for pointer types. Fixes #81208.
11102
11103 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
11104
11105         * marshal.c: Add support for PreserveSigAttribute. 
11106         
11107         Code is contributed under MIT/X11 license.
11108
11109 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * process.c: Fix endianness issues. Fixes #81126.
11112
11113         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
11114         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
11115
11116         * image.c (mono_image_lookup_resource): Make this work on big-endian
11117         machines.Change API contract so the caller needs to free the return value.
11118         
11119         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
11120         API change.
11121         
11122 2007-03-14  Martin Baulig  <martin@ximian.com>
11123
11124         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
11125         mono_type_get_desc() as well.
11126
11127 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
11128
11129         * icall.c:  Fix environ access in VS.  
11130         
11131 2007-03-13  Alp Toker  <alp@atoker.com>
11132
11133         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11134         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11135         #63841.
11136
11137 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
11140         circular references among dynamic methods. Fixes #81091.
11141
11142         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
11143
11144 2007-03-09  Martin Baulig  <martin@ximian.com>
11145
11146         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
11147
11148 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
11149
11150         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
11151         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
11152         
11153         Code is contributed under MIT/X11 license.
11154         
11155 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
11156
11157         * loader.c: Reapply patch for bug #79424.
11158
11159 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * metadata.c (mono_type_to_unmanaged): Only convert object to
11162         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
11163
11164 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
11165
11166         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
11167         (and incorrectly set) is_reference field from MonoGenericInst.
11168
11169 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
11172         a little earlier.
11173
11174         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
11175
11176         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
11177
11178 2007-03-05  Miguel de Icaza  <miguel@novell.com>
11179
11180         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
11181         FileOptions.1 value to mean "temporary", map that to
11182         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
11183
11184         Fixes 80688
11185
11186 2007-03-03  Marek Habersack  <mhabersack@novell.com>
11187
11188         * appdomain.c: implement MS .Net style shadow copying. Copies of
11189         the assemblies are made in a subdirectory of the dynamic base
11190         directory, the assembly names are preserved.
11191         Copy .mdb and .config files along with the assemblies being shadowed.
11192
11193 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
11196         (emit_marshal_handleref): Ditto.
11197
11198         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
11199         on Visual C++. Fixes #80671.
11200
11201 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
11202
11203         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
11204         for clone operations.
11205
11206 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
11207
11208         * marshal.c: Fix warnings.
11209
11210 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
11211
11212         * loader.c: allow case-insensitive matching of the dll name
11213         in dllmap handling when prefixed with "i:".
11214
11215 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
11216
11217         * threads.c: Fix #ifdef for dummy_apc function for VS.
11218
11219 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
11220
11221         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
11222
11223 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
11224         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
11225         giving precedence to the methods with a fully qualified name
11226         (InterfaceName.MethodName) when building the interface sections
11227         of the vtable.
11228
11229 2007-02-16  Dick Porter  <dick@ximian.com>
11230
11231         * threadpool.c (append_job): Fix fast-path array handling, so it's
11232         less likely the array will grow exponentially when the load is
11233         heavy.
11234
11235 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11236
11237         * metadata-internals.h, loader.c: fix dllmap lookup order
11238         for non-function maps, too, and prepare for fallback code.
11239
11240 2007-02-12  Robert Jordan  <robertj@gmx.net>
11241
11242         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
11243         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
11244         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
11245         GlobalFree. Fixes a part of bug #77075.
11246
11247 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
11248
11249         * loader.c: implemented typedef parent in field memberref.
11250
11251 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
11252
11253         * marshal.c: Fix warnings and remember to call Release on
11254         IUnknown of RCW.
11255         
11256         Code is contributed under MIT/X11 license.
11257
11258 2007-02-10  Miguel de Icaza  <miguel@novell.com>
11259
11260         * class-internals.h: Add MonoHandleRef definition, and
11261         handleref_class to mono_defaults. 
11262
11263         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
11264         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
11265
11266         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
11267         (do nothing on this stage)
11268         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
11269         (emit_marshal_handleref): New method, used for argument handling
11270         of HandleRefs. 
11271
11272 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
11273
11274         * class.c (mono_class_setup_parent): Lazily init com types.
11275         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
11276         init com types.
11277         * object.c (mono_remote_class_vtable): Lazily init com types.
11278         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
11279         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
11280         * domain-internals.h: Expose mono_init_com_types.
11281         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
11282         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
11283         Add support for COM Callable Wrapper marshalling.
11284         * marshal.h: Add icall definitions.
11285         * gc.c: Handle freeing of CCWs in finalizer code.
11286         
11287         Code is contributed under MIT/X11 license.
11288
11289 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
11290
11291         * reflection.c: changed all the signature encoding code to use
11292         a variable-sized buffer.
11293
11294 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11295
11296         * marshal.c: locking fixes: never take the loader lock
11297         or other runtime locks when holding the marshal lock
11298         (fixes bug#80664).
11299
11300 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
11301
11302         * marshal.c: make the delegate function pointer mapping
11303         work for the moving GC.
11304
11305 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
11306
11307         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
11308         for bug #80618.
11309
11310 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11311
11312         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
11313         gmodule.
11314
11315 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
11316
11317         * threadpool.c: made the code moving-GC safe.
11318
11319 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
11320
11321         * assembly.c, boehm-gc.c, class-internals.h, class.c,
11322         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
11323         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
11324         warning cleanup.
11325         * reflection.c: warning cleanup, some threading and moving GC fixes.
11326
11327 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
11328
11329         * class.c, loader.c: create the needed Set/Get/Address array methods
11330         as well as the .ctors in mono_class_init (), fixes bug #80567.
11331
11332 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
11333
11334         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
11335         we doesn't decrease its alignment. Should fix the sparc build.
11336
11337 2007-01-24  Dick Porter  <dick@ximian.com>
11338
11339         * socket-io.c
11340         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
11341         Create the returned object if we need to ignore an unsupported
11342         socket option.  Fixes a segfault reported by Atsushi.
11343
11344 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11345
11346         * class.c, object.c: restrict GC-tracked fields to
11347         UIntPtr fields used inside corlib, so we provide better
11348         type info to the GC and also allow broken packing as in
11349         bug #80580.
11350
11351 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
11352
11353         * sgen-gc.c: removed duplicated function.
11354
11355 2007-01-19  Miguel de Icaza  <miguel@novell.com>
11356
11357         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
11358         value that means that the value is not supported, but that we
11359         should not return a failure, but instead report this as a
11360         successful operation.
11361
11362 2007-01-19  Raja R Harinath  <rharinath@novell.com>
11363
11364         Fix tests/bug79956.2.il
11365         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
11366         (mono_generic_class_get_class): If the generic definition in an
11367         enum, copy over other fields related to it.
11368
11369 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
11370
11371         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
11372         genericinst enums (bug #79215).
11373
11374 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
11375         * class.c: Fix bug 80307.
11376
11377 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
11378
11379         * image.c: if the file table is not present, try to load
11380         all the modules, since we don't have info about them
11381         having or not metadata (bug #80517).
11382         * assembly.c: allow mono_assembly_load_references () to
11383         work for netmodules.
11384
11385 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11386
11387         * image.c, metadata-internals.h, object.c: execute module
11388         cctors when running on the 2 runtime if present (bug #80487).
11389
11390 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11391
11392         * icall.c: optimized InitializeArray() on bigendian.
11393
11394 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
11395
11396         * icall.c: fix for the broken ARM FPA double format.
11397
11398 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
11399
11400         * icall.c: handle endian issues for r4 and r8 types, too, in
11401         the InitializeArray() icall.
11402
11403 2007-01-15  Miguel de Icaza  <miguel@novell.com>
11404
11405         * loader.c (mono_loader_error_prepare_exception): Clear the error
11406         once we have extracted the information from it, do this before we
11407         call into the JIT's class loading mechanisms.
11408
11409         * object.c (mono_class_create_runtime_vtable): Do not clear the
11410         loader error before calling mono_class_get_exception_for_failure
11411         as the loader error is needed inside
11412         mono_class_get_exception_for_failure to throw the error (thinko).
11413
11414         Fixes #80521
11415         
11416 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
11417
11418         * reflection.c: align fields rva data so it's faster to load at
11419         runtime.
11420
11421 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11422
11423         Prepare to simplify GenericMethod handling.
11424         * class-internals.h (mono_method_get_context): New accessor function.
11425         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
11426         rather than directly accessing '->context' field.
11427
11428         * class-internals.h (_MonoGenericParam.method): Move ...
11429         (_MonoGenericContainer): ... here.  Add into union with klass field.
11430         * class.c, icall.c, loader.c, metadata.c, reflection.c:
11431         Update to changes.
11432
11433 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
11434
11435         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
11436         the wrapper type enum and reduce relocations.
11437
11438 2007-01-12  Raja R Harinath  <rharinath@novell.com>
11439
11440         * reflection.c (inflate_mono_method): Reuse method instantiation
11441         from the generic method, if available.
11442
11443 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11444
11445         * marshal.c (emit_marshal_variant): Fix conv_arg
11446         type in last commit, based on whether parameter is byref.
11447         
11448 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11449
11450         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
11451         marshalling.
11452         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
11453         MONO_TYPE_OBJECT back for VARIANT support.
11454
11455 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
11456
11457         * marshal.c, marshal.h, icall-def.h: Implement 
11458         Marshal.ReAllocCoTaskMem.
11459
11460 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
11461
11462         * marshal.c: memory retention fixes: use the proper
11463         image cache for runtime_invoke method lookups.
11464
11465 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
11466
11467         * mempool.c: added code to help debug mempool allocations.
11468
11469 2007-01-11  Dick Porter  <dick@ximian.com>
11470
11471         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
11472         support (experimenting with faking it with IP_MTU_DISCOVER for
11473         systems that don't have IP_DONTFRAGMENT.)
11474         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
11475         icall.
11476
11477         * icall-def.h: new System.Net.Sockets.Disconnect icall.
11478
11479         * socket-io.h: Add new fields to MonoSocketAsyncResult
11480         corresponding to the new ones in Socket.cs.
11481
11482 2007-01-11  Raja R Harinath  <rharinath@novell.com>
11483
11484         Fix IronPython regression mentioned in #80249
11485         * metadata.c (do_mono_metadata_parse_generic_class): Clear
11486         'cached_context' field, since it may have been initialized as a
11487         side-effect of metadata parsing.
11488
11489         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
11490         (_MonoGenericClass.cached_class): Move here and rename from lone
11491         remaining field of ...
11492         (_MonoInflatedGenericClass): ... this.  Remove.
11493         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
11494         to changes.
11495
11496         Fix mcs/tests/test-128.cs regression.
11497         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
11498         2007-01-10 change below.
11499         [MONO_TYPE_OBJECT]: Recurse into array case.
11500
11501 2007-01-11  Raja R Harinath  <harinath@gmail.com>
11502
11503         * class-internals.h (mono_get_inflated_generic_class): Remove.
11504         * class.c (mono_get_inflated_generic_class): Remove.
11505         (mono_generic_class_get_class): Rename from
11506         mono_class_create_generic.
11507         (mono_class_from_mono_type) [GENERICINST]: Use it.
11508         * reflection.c, metadata.c: Update to changes.  Use
11509         'mono_class_from_mono_type'.
11510
11511 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
11512
11513         * reflection.c: use passed type when encoding an array element
11514         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
11515
11516 2007-01-09  Robert Jordan  <robertj@gmx.net>
11517
11518         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
11519         result arguments (someDelegate.EndInvoke (unrelatedAres)).
11520         Fixes bug #80392.
11521
11522 2007-01-09  Raja R Harinath  <rharinath@novell.com>
11523
11524         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
11525
11526         * object.c (set_value): Avoid aliasing between type->data.klass
11527         and type->data.generic_class.
11528
11529         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
11530
11531 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11532
11533         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
11534         between type->data.klass and type->data.generic_class.
11535
11536 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
11537
11538         * marshal.c: In MS.NET, StringBuilder objects are not copied by
11539         value in out parameters.
11540
11541 2007-01-08  Raja R Harinath  <rharinath@novell.com>
11542
11543         Simplify invariant for MonoGenericClass::klass field.
11544         * class.c (mono_class_create_generic): Verify 'klass' is null.
11545         * metadata.c (do_mono_metadata_parse_generic_class): Don't
11546         initialize 'klass' field.
11547
11548 2007-01-05  Raja R Harinath  <rharinath@novell.com>
11549
11550         Ongoing work to avoid redundant data and simplify invariants.
11551         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
11552         'generic_class', and change type to a GenericInst.
11553         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
11554         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
11555
11556 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
11557
11558         * class.c : skip io-layer under PLATFORM_WIN32.
11559
11560 2007-01-03  Tor Lillqvist  <tml@novell.com>
11561
11562         Fix #80305: In a bundled executable, look in the bundled exe
11563         assembly to determine the runtime version. Add the possibility to
11564         bundle also the machine.config file.
11565         
11566         * assembly.c (mono_assembly_open_from_bundle): Make
11567         non-static. Allow being called even if we have no bundled
11568         assemblies, and return NULL right away in that case.
11569
11570         * domain-internals.h: Declare mono_assembly_open_from_bundle()
11571         here.
11572
11573         * domain.c (app_config_parse): Take an assembly exe file name as
11574         parameter instead of a config file name. Check for a bundled
11575         config file for that assembly by calling
11576         mono_config_string_for_assembly_file() (see below) before looking
11577         for one in the file system.
11578         (get_runtimes_from_exe): Corrsponding change to call of
11579         app_config_parse().
11580         (get_runtimes_from_exe): Check for bundled assembly exe file first
11581         by calling mono_assembly_open_from_bundle(). If no bundled
11582         assembly exe file is found, call mono_image_open() as before to
11583         look it up in the file system.
11584
11585         * mono-config.c: Add variable bundled_machinec_onfig.
11586         (mono_config_string_for_assembly_file): New function.
11587         (mono_config_for_assembly): Move code snippet that looks for a
11588         bundled assembly .config file into the above new function. Call
11589         it.
11590         (mono_register_machine_config, mono_get_machine_config): New
11591         functions to set and retrieve
11592
11593         * assembly.h: Declare mono_register_machine_config().
11594
11595         * mono-config.h: Declare mono_get_machine_config() and
11596         mono_config_string_for_assembly_file().
11597
11598         * icall.c: No declaration of environ necessary on Win32. It is
11599         declared (as a macro expanding to a function call) in stdlib.h.
11600         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
11601         New internal mono function. Returns the value of
11602         mono_get_machine_config() as a Mono string.
11603
11604         * icall-def.h: Add get_bundled_machine_config().
11605
11606 2007-01-04  Raja R Harinath  <rharinath@novell.com>
11607
11608         Remove redundant field
11609         * class-internals.h (_MonoGenericContext.container): Remove field.
11610         * loader.c (mono_method_get_signature_full): Don't parse a
11611         "container" for a signature parse when the signature is inflated
11612         immediately.
11613         (method_from_methodspec): Likewise, for a generic_inst.
11614         * class.c, metadata.c, reflection.c: Update to changes.
11615
11616 2006-01-04  Raja R Harinath  <rharinath@novell.com>
11617
11618         * class-internals.h (_MonoGenericClass): Rename 'context' field to
11619         'cached_context', and change semantics -- it starts off NULL, and
11620         is initialized on demand.
11621         * class.c (mono_generic_class_get_context): New accessor to
11622         replace 'context' field accesses.
11623         (mono_class_get_context): New helper.
11624         (*): Update to changes.
11625         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
11626
11627 2007-01-03  Miguel de Icaza  <miguel@novell.com>
11628
11629         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
11630         before the memcpy.   Fixes Marshal2 regression.
11631
11632 2007-01-02  Jb Evain  <jbevain@gmail.com>
11633
11634         * blob.h: add a MONO_TYPE_ENUM definition
11635         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
11636         fix the encoding of arrays of enums in custom attributes.
11637
11638         Fixes #79666.
11639
11640 2007-01-01  Miguel de Icaza  <miguel@novell.com>
11641
11642         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
11643         string is null terminated, but only cut the string short if it
11644         overflows the buffer.   
11645         
11646         (mono_string_to_byvalstr): Also fix this routine.   The code here
11647         was not properly terminating a string (it was only terminated
11648         because of the previous catch-all memset). 
11649
11650         I left the memset, because I do not know if applications expect
11651         the runtime to clear this region. 
11652
11653         Fixes #79944.
11654
11655         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
11656         Clear the error before returning to unmanaged code to prevent the
11657         runtime from being confused later on (fixes  80420).
11658         (ves_icall_type_from_name): Always call mono_loader_clear_error
11659         after parsing a type that could have failed.
11660         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
11661
11662         * loader.c (mono_loader_clear_error): Fix indentation.
11663
11664 2006-12-28  Martin Baulig  <martin@ximian.com>
11665
11666         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
11667
11668 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
11669
11670         * reflection.c: patch from Rolf Bjarne Kvinge to fix
11671         getting a token for an EnumBuilder.
11672
11673 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
11674
11675         * reflection.c: be more careful in case resource generation
11676         fails to create the data array.
11677
11678 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
11679
11680         * sgen-gc.c: write barrier for clone and fix unregister handles.
11681
11682 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
11683
11684         * reflection.c: some fixes needed in the generics code for the moving GC.
11685
11686 2006-12-22  Robert Jordan  <robertj@gmx.net>
11687
11688         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
11689         account. Fixes bug #80299.
11690
11691 2006-12-21  Raja R Harinath  <rharinath@novell.com>
11692
11693         Fix WaitHandle usage in delegates.
11694         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
11695         * object.c (mono_wait_handle_new): Use the property set method to
11696         initialize the handle.
11697         (mono_wait_handle_get_handle): New.
11698         * threadpool.c (mono_async_invoke): Use it.
11699         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
11700         Likewise.
11701         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
11702
11703 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
11704
11705         * marshal.c (emit_marshal): Call emit_marshal_variant and
11706         emit_marshal_com_interface when applicable.
11707         (emit_marshal_variant, emit_marshal_com_interface): Add
11708         methods for this case and remove if's from emit_marshal_object.
11709         
11710 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
11711
11712         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
11713
11714 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
11715
11716         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
11717         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
11718         and GlobalFree on Windows. Remove FIXME.
11719
11720 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
11721
11722         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
11723         implementation for managed objects.
11724
11725 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
11726
11727         * object.c: implemented code to be used for checking
11728         that no reference field overlaps with non-references.
11729
11730 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11731
11732         * threadpool.c: fix queue code to be compatible with the
11733         moving GC.
11734
11735 2006-12-18  Miguel de Icaza  <miguel@novell.com>
11736
11737         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
11738         in structures by throwing ArgumentNullException.
11739
11740         (emit_marshal_safehandle): Also when they are null parameters.
11741
11742         (emit_marshal_safehandle): Add support for ref
11743         SafeHandles parameters
11744
11745 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
11746
11747         * profiler.c: updated to use the mono-dl API instead of
11748         gmodule.
11749
11750 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11751
11752         * profiler.c: updated to use the mono-dl dynamic loading
11753         API instead of gmodule.
11754
11755 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
11756
11757         * profiler.c: use readlink, older versions of glib don't have
11758         g_file_read_link ().
11759
11760 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11761
11762         * profiler.c: try to detect the path to mono if libc fails to provide
11763         a useful name (bug #80286).
11764
11765 2006-12-16  Raja R Harinath  <rharinath@novell.com>
11766
11767         Fix #80242
11768         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
11769         instance, use the generic type definition instead.
11770         (ves_icall_Type_GetNestedTypes): Likewise.
11771         * class.c (mono_class_create_generic): Always set the
11772         nested_classes of a generic instance to NULL, even if the generic
11773         type definition has nested types.
11774
11775 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
11776
11777         * marshal.c (mono_string_from_bstr): Revert previous Windows change
11778         and fix on Linux.
11779         
11780 2006-12-15  Miguel de Icaza  <miguel@novell.com>
11781
11782         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
11783         my arguments were in the wrong order.   I also fixed the Windows
11784         version which seems to have had the same issue.
11785
11786         (mono_free_bstr): On Unix, this is g_free.
11787         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
11788         conversions (for the tests in corlib to pass).
11789
11790 2006-12-14  Miguel de Icaza  <miguel@novell.com>
11791
11792         * marshal.c (emit_ptr_to_object_conv): For now, ignore
11793         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
11794         exception if a ref SafeHandle in a struct has changed).
11795         
11796         (emit_struct_conv): Do not perform layout checks for classes
11797         derived from SafeHandle, as those are specially handled. 
11798
11799         (emit_object_to_ptr_conv): Add support for
11800         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
11801
11802         (emit_marshal_safehandle): Implement conversion of return values
11803         of safehandles (MARSHAL_ACTION_CONV_RESULT).
11804         
11805         * threads.c: WaitHandle now is compiled with two different handles
11806         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
11807         for 2.0.
11808         
11809         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
11810         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
11811         these routines to cope with both kinds of fields.
11812
11813 2006-12-12  Miguel de Icaza  <miguel@novell.com>
11814
11815         * metadata.c (mono_type_to_unmanaged): Handle the case where
11816         type->data.klass is a SafeHandle, and in that case, return the
11817         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
11818         MONO_MARSHAL_CONV_SAFEHANDLE. 
11819
11820 2006-12-11  Miguel de Icaza  <miguel@novell.com>
11821
11822         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
11823         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
11824         calling emit_marshal_object.
11825
11826         (emit_marshal_safehandle): Implement marshalling of
11827         SafeHandle parameters (no ref support yet).
11828
11829         (MarshalAction): Document the defines as I implement
11830         them for SafeHandle.
11831
11832         (emit_marshal_object): indentation police.
11833
11834         * class-internals.h: Define MonoSafeHandle.
11835         Add safehandle_class to MonoDefaults type.
11836
11837         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
11838         list of classes to check for fields. 
11839
11840         * domain.c (mono_init_internal): Add SafeHandle to the list of
11841         mono_defaults loaded.
11842
11843 2006-12-15  Raja R Harinath  <rharinath@novell.com>
11844
11845         Fix #80253
11846         * reflection.c (mono_reflection_bind_generic_parameters): If the
11847         generic type definition is a type builder, ensure that it is fully
11848         initialized before instantiating it.  Kill some dead code.
11849
11850 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
11851
11852         * object.c: clear the loader_error () before loading
11853         more metadata stuff (bug #80258).
11854
11855 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
11856
11857         * icall.c, icall-defs.h: type modifiers icalls for
11858         parameters and properties.
11859
11860 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
11861
11862         * object.c, icall.c: fixed warnings.
11863
11864 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11865
11866         * marshal.c: fixed a couple of leaks and coding style in a few places.
11867
11868 2006-12-08  Dick Porter  <dick@ximian.com>
11869
11870         * process.c: Cope with NULL ProcessStartInfo arguments on windows
11871         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
11872         80173.
11873
11874 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
11875
11876         * process.c: ProcessStartInfo may have only filename set and
11877         arguments can be NULL.
11878
11879 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
11880
11881         * icall.c: fix leak found by Robert Jordan.
11882
11883 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
11884
11885         * marshal.c, marshal.h: generate managed method to access an element
11886         of a multi-dimensional array.
11887
11888 2006-11-30  Paolo Molaro (lupus@ximian.com)
11889
11890         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
11891
11892 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
11893
11894         * icall.c: back out GetFields () fix until the serialization code is
11895         fixed to not depend on the incorrect behaviour.
11896
11897 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
11898
11899         * profiler.c: provide defaults if none are set.
11900
11901 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
11902
11903         * Makefile.am, attrdefs.h: new public header file with
11904         constants for attributes for use by embedders.
11905
11906 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
11907
11908         * icall.c: GetFields () fix for bug #80064.
11909
11910 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
11911
11912         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
11913         removed long unused icalls.
11914
11915 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
11916   
11917         * marshal.c: 
11918                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
11919                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
11920                 can be generated without a delegate class.
11921                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
11922         
11923         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
11924
11925 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11926
11927         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
11928         #80069.
11929
11930 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
11931
11932         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
11933         icall-def.h: added icalls needed by System.GC.
11934
11935 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
11936
11937         * loader.c: ensure the class in catch clauses is handled
11938         correctly for generics methods (fixes bug#79980).
11939
11940 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
11941
11942         * monitor.h, monitor.c: added mono_locks_dump () function
11943         to help debug deadlocks involving managed locks.
11944
11945 2006-11-13  Dick Porter  <dick@ximian.com>
11946
11947         * file-io.c (get_file_attributes): If the file is a symlink try
11948         and get the stat data for the target, but also add the
11949         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
11950         the specs for the windows symlink support, but will probably have
11951         to be reworked when I have test data from a vista machine.  Fixes
11952         bug 79887.
11953
11954 2006-11-13  Dick Porter  <dick@ximian.com>
11955
11956         * gc.c (mono_domain_finalize): 
11957         * marshal.c (mono_delegate_begin_invoke): 
11958         * threadpool.c (socket_io_init, mono_thread_pool_init)
11959         (mono_thread_pool_finish): 
11960         * monitor.c (mono_monitor_try_enter_internal): 
11961         * threads.c (mono_thread_resume, mono_thread_init)
11962         (mono_thread_suspend_all_other_threads)
11963         (mono_thread_execute_interruption): 
11964         * appdomain.c (mono_domain_unload): Check for NULL error returns
11965         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
11966         75733.
11967
11968 2006-11-11  Miguel de Icaza  <miguel@novell.com>
11969
11970         * process.c
11971         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
11972         Only close the handle if the value of the handle is not
11973         INVALID_HANDLE_VALUE.  This just makes the process a bit more
11974         robust.
11975
11976         Improvement for #75733, so that we do not run into this problem. 
11977
11978         
11979         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
11980         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
11981         internal variables.  Fixes #79462 
11982         
11983
11984 2006-11-09  Dick Porter  <dick@ximian.com>
11985
11986         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
11987         Use poll() not select().  Fixes bug 79397.
11988
11989 2006-11-09  Raja R Harinath  <rharinath@novell.com>
11990
11991         Fix #79872
11992         * assembly.c (mono_assembly_load_from_full): Check that the given
11993         image has an assembly manifest.
11994
11995 2006-11-09  Ankit Jain  <jankit@novell.com>
11996
11997         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
11998         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
11999         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
12000
12001 2006-11-07  Dick Porter  <dick@ximian.com>
12002
12003         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12004         Put the old resolver behaviour back for pre-2.0 profiles.
12005
12006 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
12007
12008         * threadpool.c: precise GC and locking fixes.
12009
12010 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
12011
12012         * class.c: don't load types that have an explicit unaligned
12013         managed reference. Provide better info in the TypeLoad exception.
12014         Part of the fix for bug #79744.
12015         * object.c: use the correct check for class type load issues.
12016
12017 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12018
12019         * class.c: enforce alignment of fields with managed references
12020         even when Pack=1 is forced by the user (bug #77788).
12021
12022 2006-11-03  Dick Porter  <dick@ximian.com>
12023
12024         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
12025         If the address reverse lookup fails, return it as the hostname
12026         anyway.  Fixes bug 79721.
12027
12028 2006-11-03  Dick Porter  <dick@ximian.com>
12029
12030         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
12031         Fix build on Windows.
12032
12033 2006-11-02  Dick Porter  <dick@ximian.com>
12034
12035         * icall-def.h: 
12036         * object-internals.h: 
12037         * exception.c (mono_get_exception_thread_interrupted): 
12038         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
12039         Fixes bug 74525.
12040
12041         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
12042         Check for pending Thread.Interrupt.
12043
12044 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
12045         * loader.c: Fixed bug 79684.
12046
12047 2006-10-27  Dick Porter  <dick@ximian.com>
12048
12049         * file-io.c (get_file_attributes): Force symlinks to directories
12050         to be returned as a regular file.  Fixes bug 79733.
12051 2006-10-26  Dick Porter  <dick@ximian.com>
12052
12053         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
12054         CreateFile to open a directory then we need to set the
12055         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
12056
12057 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12058
12059         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
12060         friends.
12061
12062 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12063
12064         * sgengc.c: small cleanup of timer code.
12065
12066 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12067
12068         * sgen-gc.c: fix some warnings and start adding support for
12069         complete object removal on domain unload.
12070
12071 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
12072
12073         * assembly.c: build_assembly_name should not consider a version
12074         number without build or revision number invalid. Fixes bug #79715.
12075
12076 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
12077
12078         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
12079         call kernel32 function OutputDebugString directly.
12080         
12081         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
12082         
12083 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
12084
12085         * reflection.c: small cleanup, using a function to insert a MonoString
12086         in the string heap.
12087
12088 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
12089
12090         * reflection.c: moving GC fixes.
12091
12092 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
12093
12094         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
12095         all the objects with finalizers belonging to an unloading appdomain.
12096
12097 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12098
12099         * sgen-gc.c: added ability to allocate even when the nursery is fully
12100         pinned and fixed a couple of bugs.
12101
12102 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * threads.h: Revert the last change for now.
12105
12106         * threads.h (mono_thread_get_pending_exception): Rename this to
12107         mono_thread_get_undeniable_exception ().
12108
12109 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
12110
12111         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
12112         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
12113         when fname does not refer to valid assembly. This result in a more
12114         meaningful error message.
12115         * exception.c: added mono_get_exception_bad_image_format2 which 
12116         constructs a BadImageFormatException using the ctor taking a custom
12117         message and the file name. Passing in a NULL msg results in a default
12118         message.
12119         * exception.h: define mono_get_exception_bad_image_format2 function.
12120         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
12121         when file name pointed to an invalid IL image. Use 
12122         mono_get_exception_file_not_found2 to construct FileNotFoundException,
12123         as this results in a more meaningful error message.
12124
12125 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
12128         #79465.
12129
12130 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12131
12132         * metadata.c (mono_type_size): Change the align parameter to guint32 for
12133         consistency with the other _size functions.
12134         (mono_type_stack_size): Ditto.
12135
12136         * class.c object.c icall.c: Fix warnings caused by the above change.
12137
12138         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
12139
12140         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
12141
12142         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
12143
12144 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
12145
12146         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
12147         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
12148         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
12149         threadpool.h, threads-types.h: mark more internal functions.
12150
12151 2006-10-11  Dick Porter  <dick@ximian.com>
12152
12153         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
12154         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
12155         reproduce the bug even before applying the fix.)
12156
12157 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
12158
12159         * reflection.c: allow retrieving attributes for arguments in generic
12160         methods (bug #79241).
12161
12162 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
12163
12164         * debug-mono-symfile.c: properly check fopen () result (found by
12165         coverity).
12166
12167 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
12168
12169         * reflection.c: make error message clearer and fixed two
12170         issuelets found by Coverity.
12171
12172 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
12173
12174         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
12175
12176 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
12177
12178         * object-internals.h, gc-internal.h, profiler-private.h:
12179         mark internal functions.
12180
12181 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
12182
12183         * reflection.c: put data in the text section.
12184         * icall.c: recognize more types in type_from_typename ().
12185         * process.c, marshal.c: added some GC FIXMEs.
12186
12187 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12188
12189         * loader.c: check for NULL before initializing.
12190
12191 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
12192
12193         * gc.c (finalizer_thread): Use a non-alertable wait here.
12194
12195         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
12196         until the correct solution is found.
12197
12198 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * reflection.c (mono_module_get_object): Avoid an assert when operating on
12201         modules with no metadata. Fixes #79596.
12202
12203         * image.c (load_metadata_ptrs): Put back the error message when
12204         the #- heap is encountered since the support is not complete yet.
12205
12206 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12207
12208         * gc.c: do not allow the user to SuppressFinalize () a
12209         delegate because it would leak the trampoline if present.
12210
12211 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
12212
12213         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
12214         PropertyPtr table.
12215
12216 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
12219
12220         * metadata.c (mono_metadata_get_param_attrs): Ditto.
12221
12222         * row-indexes.h: Add definitions for *Ptr tables.
12223
12224         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
12225
12226         * metadata.c (mono_metadata_translate_token_index): New helper function to
12227         translate table indexes used in uncompressed metadata.
12228         (mono_metadata_decode_table_row): Ditto.
12229         (mono_metadata_decode_table_row_col): Ditto.
12230
12231         * metadata.c: Add table schema for *Ptr tables.
12232
12233         * class.c loader.c: Use the new helper function to access the affected metadata
12234         tables.
12235         
12236         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
12237         #38532.
12238         
12239 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
12242         sequences which can be unbounded in size. Fixes #79583.
12243
12244 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12245
12246         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
12247         static initialization.
12248
12249         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
12250
12251         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
12252
12253         * domain.c (mono_domain_free): Free up type_init_exception_hash.
12254
12255         * object.c (mono_runtime_class_init): Implement correct semantics when a static
12256         ctor fails, i.e. throw the same exception on subsequent accesses.
12257         
12258 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
12259
12260         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
12261         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
12262         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
12263         Handle marshalling of interfaces and VARIANTs contained in structs.
12264         
12265         Code is contributed under MIT/X11 license.
12266         
12267 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
12270         
12271         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
12272         mempool.
12273
12274 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12275
12276         * console-io.c: ignore previous SIGINT handler.
12277
12278 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
12281         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
12282         #79460, #79461, #79485.
12283
12284         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
12285
12286         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
12287         #79217.
12288
12289 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
12292         could be generated from it.
12293
12294 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
12295
12296         * rand.c: fix read loop to correctly handle EINTR.
12297
12298 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12299
12300         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
12301         internal calls are defined to keep methods closer to the declaring
12302         type and allow a significant reduction in runtime relocations and
12303         memory usage.
12304
12305 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
12306
12307         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
12308         exception message to have FileNotFoundException use the default
12309         assembly load error message. Fixes bug #79426.
12310         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
12311
12312 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12313
12314         * threadpool.c: (start_thread_or_queue) use the root domain when
12315         creating the thread instead of the async object one.
12316
12317 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
12318
12319         * class.c, object.c, class-internals.h, reflection.c:
12320         for arrays, store element_size inside MonoClass (speedup
12321         for array object creation).
12322
12323 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
12324
12325         * icall.c: fixed CodeBase to use the file name and not the module
12326         name (bug #79365).
12327
12328 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12329
12330         * mono-debug.c, mono-debug.h: export find_method as
12331         mono_debug_find_method ().
12332
12333 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
12334
12335         * debug-helpers.c, class-internals.h: added a few functions useful
12336         when debugging under gdb.
12337
12338 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12339
12340         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
12341         characters that need special handling.
12342
12343 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12344
12345         * mono-config.c: make the os/cpu specification more flexible,
12346         allowing lists and negation.
12347
12348 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
12349
12350         * marshal.c: COM Interop fixes. Handle case where method->klass.
12351         is interface. Handle BSTR/MonoString when null. Use CDECL as 
12352         calling convention on non-windows platforms. This is for
12353         compatibility with XPCOM and MainWin COM.
12354         
12355         Code is contributed under MIT/X11 license.
12356         
12357
12358 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
12361         correctly. Fixes #79217.
12362
12363         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
12364
12365 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
12366
12367         * mono-config.c: allow both an os and cpu attribute for dllmap
12368         and dllentry elemnets to enable a single config file to be used
12369         for multiple architectures.
12370
12371 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
12372
12373         * loader.c: MonoLoaderError was cleared too soon on load failure.
12374         Fixes bug #79424.
12375
12376 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
12377
12378         * icall.c: use the defining class vtable when accessing a
12379         static field, not a pobblibly derived class.
12380
12381 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * icall.c string-icalls.c: Remove references to unicode.h.
12384
12385         * unicode.h unicode.c Makefile.am: Remove these unused source files.
12386
12387         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
12388
12389         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
12390         indicating the image where custom marshaller types should be looked up.
12391         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
12392         custom marshallers, instead of corlib. Fixes #79425.
12393
12394 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
12397
12398 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
12399
12400         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
12401         Implement Environment.ProcessorCount.
12402         
12403         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
12404         Implement Environment.ProcessorCount.
12405         
12406         * icall.c: 
12407         Add Environment.ProcessorCount icall.
12408         
12409         Patch by Jason McFall.
12410
12411 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12412
12413         * assembly.c: don't append .exe/.dll when the filename already contains
12414         one of those extensions.
12415
12416 2006-09-12  Martin Baulig  <martin@ximian.com>
12417
12418         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
12419         to array interfaces.
12420
12421 2006-09-11  Martin Baulig  <martin@ximian.com>
12422
12423         * reflection.c (mono_image_build_metadata): Create the
12424         MethodImpl's after emitting all types and methods, so we don't
12425         need another fixup pass for them.
12426
12427 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
12428
12429         * class.c (mono_class_from_name_case): Fix regression introduced by the last
12430         change.
12431
12432 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
12433
12434         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
12435         unload.
12436
12437 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
12440         args is not set. Fixes #78926.
12441
12442 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
12443
12444         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
12445
12446         * image.c (load_class_names): Move this to class.c, and rename it to 
12447         'mono_image_init_name_cache'.
12448         (load_modules): Fix a warning.
12449
12450         * class.c icall.c image.c: Initialize image->name_cache lazily.
12451
12452         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
12453         on its name using information in the AOT file.
12454
12455         * class.c (mono_class_from_name): Use the new hook function.
12456
12457 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
12458
12459         * reflection.c (mono_param_get_objects): Handle enum default parameter values
12460         correctly.
12461
12462         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
12463         Fixes #79289.
12464         
12465 2006-09-06  Martin Baulig  <martin@ximian.com>
12466
12467         * icall.c (mono_lookup_internal_call): Small fix.
12468
12469 2006-09-05  Raja R Harinath  <rharinath@novell.com>
12470
12471         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
12472         double g_free.
12473
12474 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
12475
12476         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
12477         when --debug is specified.
12478
12479 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
12480
12481         * class.c (setup_generic_array_ifaces): Fix a warning.
12482
12483 2006-09-04  Miguel de Icaza  <miguel@novell.com>
12484
12485         * Temporarily remove the patch to assemly.c that checks the
12486         assembly versions as it breaks our gacutil.
12487
12488 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
12489
12490         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
12491
12492         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
12493         a net 1.0 runtime.
12494
12495         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
12496         created using the default ctor. Fixes #79152.
12497         (mono_string_builder_to_utf16): Ditto.
12498
12499 2006-09-01  Martin Baulig  <martin@ximian.com>
12500
12501         Fix handling of the generic array interfaces.
12502
12503         * class-internals.h
12504         (MonoDefaults): Removed `generic_array_class' and added
12505         `generic_ilist' class.
12506
12507         * class.c
12508         (mono_bounded_array_class_get): Add the new generic array interfaces.
12509         (setup_generic_array_ifaces): New static method; create vtable
12510         entries for each method in the generic array interfaces.
12511
12512         * metadata.c
12513         (select_container): Allow "parent-less" generic methods.
12514
12515         * marshal.c
12516         (mono_marshal_get_generic_array_helper): New public method.
12517
12518         * icall.c
12519         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
12520         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
12521         moved the interncall into System.Array.
12522
12523 2006-09-01  Raja R Harinath  <rharinath@novell.com>
12524
12525         A few more cases of avoiding work on types with ->byref set.
12526         Has the real fix for #79238
12527         * icall.c (is_generic_parameter): New helper.
12528         (ves_icall_Type_GetGenericParameterPosition): Use it.
12529         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
12530         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12531         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
12532         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
12533         reference types.
12534         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
12535         reference types.
12536         (ves_icall_Type_get_IsGenericInstance): Likewise.
12537         (ves_icall_Type_get_IsGenericType): Likewise.
12538
12539 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
12542         class if possible.
12543
12544         * mempool.h (mono_mempool_get_allocated): New helper function.
12545
12546         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
12547         change.
12548
12549         * mempool.c: Fix warnings and the calculation of stats.
12550
12551         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
12552
12553         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
12554
12555         * loader.c (mono_get_method_from_token): Update method_count stat.
12556
12557         * class-internals.h (MonoStats): Add some stats.
12558
12559 2006-08-31 Robert Jordan  <robertj@gmx.net>
12560
12561         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
12562         with managed variants.
12563         All code is contributed under the MIT/X11 license.
12564         
12565 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
12566
12567         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
12568         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
12569
12570         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
12571
12572         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
12573         with cycles in classes.
12574
12575         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
12576
12577         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
12578         missing a [MarshalAs] directive. Fixes #79203.
12579
12580         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
12581         klass->marshal_info. Fixes #79217.
12582
12583 2006-08-30  Martin Baulig  <martin@ximian.com>
12584
12585         Committing a patch from Joachim Ante <joe@otee.dk>:
12586         Add support for binary data symbol stores.
12587
12588         * debug-mono-symfile.c
12589         (mono_debug_open_mono_symbol_file): Renamed into
12590         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
12591         arguments.
12592
12593         * mono-debug.c
12594         (mono_debug_open_image): Added `raw_contents' and `size' args.
12595         (mono_debug_init_2_memory): New public function.
12596
12597 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
12598
12599         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
12600
12601 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12602
12603         * appdomain.c: implement support for ShadowCopyFiles.
12604
12605 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
12606
12607         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
12608         when value is NULL (and should remove CID #51).
12609
12610 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12611
12612         * image.c: moved 2 functions to ../utils.
12613
12614 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
12615
12616         * gc.c: cope with the target object of a GC handle being NULL
12617         (bug #78877).
12618
12619 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
12620
12621         * class.c: recursively check parent's explicit implementations
12622         of interface methods (fixes bug #79125).
12623
12624 2006-08-19  Miguel de Icaza  <miguel@novell.com>
12625
12626         * filewatcher.c: Avoid warnings when building, do not redefine
12627         constants that are defined.
12628
12629         Remove warnings.
12630
12631 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12632
12633         * image.c: don't fail when the link points to an absolute path.
12634
12635 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
12636
12637         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
12638         Fix CID #3.
12639
12640 2006-08-17  Miguel de Icaza  <miguel@novell.com>
12641
12642         * image.c (full_path): A new method used to obtain the actual path
12643         of an assembly even in the presence of symbolic links.  
12644
12645         This is necessary for the case where we are running a binary that
12646         has been GACed, but we are using the "published" path name
12647         ($prefix/mono/1.0/blah.exe) which happens to point to the real
12648         file in the GAC.
12649
12650         This was the source of the failure for the `xsp' command with the
12651         recent AppDomain changes, as far as the runtime was concerned,
12652         there were two different assemblies: $prefix/mono/1.0/blah.exe and
12653         $prefix/mono/gac/blah/version/blah.exe.
12654
12655         (do_mono_image_open): use full path
12656
12657 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12658
12659         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
12660
12661 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
12662
12663         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
12664         domain_id is supplied. Fix CID #241 and corlib's unit tests.
12665
12666 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
12669         small structures. Fixes #78990.
12670
12671 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
12672
12673         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
12674
12675         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
12676
12677 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12678
12679         * appdomain.c:
12680         * marshal.c: don't load all the assemblies from a domain into newly
12681         created ones. The new domains might have different rules and load
12682         assemblies from different locations. Fixes bug #76757.
12683
12684         Patch by Lluis. Conflicts resolved by Brian Crowell.
12685
12686 2006-08-16  Alp Toker  <alp@atoker.com>
12687
12688         * socket-io.c: First half of the fix for #79084.
12689         Set sa_size to the length of the content, not that of the struct.
12690         Don't add NULL suffix to the content, this should be done in
12691         managed code if needed.
12692
12693 2006-08-14  Raja R Harinath  <rharinath@novell.com>
12694
12695         Fix part of #79012
12696         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
12697         mono_metadata_parse_type returns NULL.
12698
12699 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
12700
12701         * normalization-tables.h : new file for string normalization data.
12702         * locales.c, locales.h, icall.c :
12703           added load_normalization_resource() for string normalization,
12704           and icall as well.
12705         * Makefile.am : added normalization-tables.h to the sources.
12706
12707 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * marshal.c: Add more helper functions to reduce code duplication and use them
12710         everywhere.
12711
12712 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
12713
12714         * marshal.c: Fix non-x86 stdcall warnings.
12715         
12716         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
12717         them everywhere.
12718
12719 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
12720
12721         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
12722         type check on multi-dimensional arrays. Fixes #79000.
12723
12724 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
12725
12726         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
12727         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
12728         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
12729         * class-internals.h: add is_com_object to class structure.
12730         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
12731         null checks to COM object marshalling. Fix .ctor call on RCW.
12732         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
12733         
12734         All code is contributed under the MIT/X11 license.
12735
12736 2006-08-09  Dick Porter  <dick@ximian.com>
12737
12738         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
12739         racing mono_monitor_allocator_lock() somewhere, so don't delete
12740         the critical section for now.  Found by running and exiting
12741         monodevelop.
12742
12743 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
12744
12745         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
12746         (ves_icall_System_ComObject_FindInterface): Ditto.
12747         (ves_icall_System_ComObject_CacheInterface): Ditto.
12748
12749         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
12750         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
12751
12752 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12753
12754         * threadpool.c: treat pipes from process asynchronous reads as sockets
12755         when reading from them, so we get select/poll or epoll to wait for
12756         data.
12757
12758 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
12759
12760         * loader.c: Fix a typo (CID #233) in the null check.
12761
12762 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
12763
12764         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
12765         Hopefully fixes #78949.
12766         
12767         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
12768         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
12769         bytes. Fixes #78972.
12770
12771 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12772
12773         * filewatcher.c: we need to set errno here.
12774
12775 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12776
12777         * filewatcher.c: let Win32Exception get the error value.
12778
12779 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12780
12781         * filewatcher.c: translate errno into win32 errors for Win32Exception
12782         to know what happened.
12783
12784 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * threadpool.c: Fix more warnings.
12787
12788         * assembly.c (search_loaded): Fix warnings.
12789
12790         * threadpool.c (mono_thread_pool_finish): Fix warnings.
12791         (mono_async_invoke): Ditto.
12792
12793 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
12794
12795         * object.c (mono_remote_class_vtable): Need to create proxy vtable
12796         entries for __ComObject type in addition to ComImport types.
12797         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
12798         about hash table.
12799         
12800         All code is contributed under the MIT/X11 license.
12801
12802 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
12803
12804         * image.c: avoid tentative loading of modulerefs that contain
12805         no metadata (P/Invoke library names).
12806
12807 2006-07-28  Dick Porter  <dick@ximian.com>
12808
12809         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
12810         mono_loader_lock() somewhere, so don't delete the critical section
12811         for now.  Found by running and exiting monodevelop.
12812
12813 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12814
12815         * filewatcher.c: define the inotify syscalls when we're building on
12816         linux and have sys/syscall.h. The build system might not have support
12817         for inotify but the target system might have it.
12818
12819 2006-07-26  Miguel de Icaza  <miguel@novell.com>
12820
12821         * domain.c: Documentation updates.
12822
12823         * loader.c (mono_free_method): Do not release the method
12824         information if we are being profiled, as profilers will use this
12825         information at shut down to present some data to the user.
12826
12827         This is needed so that the profiler does not crash, as the
12828         profiler tends to keep MonoMethods around, and they might become
12829         invalid if we free these.
12830
12831         (mono_get_method_constrained): Return the original CIL stream
12832         method as well, so verification can be performed against it.
12833
12834 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12835
12836         * filewatcher.[ch]: support for inotify file system watcher.
12837         * icall.c: add new internal calls for the inotify file system watcher.
12838
12839 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12840
12841         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
12842         #78888.
12843
12844 2006-07-20  Dick Porter  <dick@ximian.com>
12845
12846         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
12847         warning.
12848
12849 2006-07-20  Dick Porter  <dick@ximian.com>
12850
12851         * threads.c (start_wrapper): Do the thread cleanup while we still
12852         hold a reference to its object.  Fixes bug 78123.
12853
12854 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
12855
12856         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
12857         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
12858           "managed-to-managed".
12859         * icall.c: Redirect string constructors that take sbyte* to
12860           ves_icall_System_String_ctor_RedirectToCreateString.
12861         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
12862           to CreateString () methods with matching signature.
12863         * reflection.c: Use original security informations for
12864           MONO_WRAPPER_MANAGED_TO_MANAGED.
12865         * security-manager.c: Use original security informations for
12866           MONO_WRAPPER_MANAGED_TO_MANAGED.
12867         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
12868           that is a placeholder and only its address should be used.
12869         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
12870           that is a placeholder and only its address should be used.
12871
12872 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
12873
12874         Begin implementing COM Interop.
12875         * appdomain.c: Increment corlib version.
12876         * class.c: Set ComImport classes' parent to __ComObject.
12877         * loader.c: Mark cominterop methods as such.
12878         * domain.c: Add __ComObject class to MonoDefaults structure.
12879         * image.c: Add 2 hashtables to the image for COM Interop related methods
12880         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
12881         using the mempool allocator
12882         
12883         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
12884         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
12885         declaration for mono_metadata_type_dup_mp.
12886         
12887         * debug-helpers.c: Added strings for two additional wrapper types
12888         * object.c: Create proxy objects for ComImport classes
12889         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
12890         and added __ComObject class to MonoDefaults structure.
12891         
12892         * object-internals.h: Finish MonoRealProxy definition, and add definition of
12893         MonoComInteropProxy and MonoComObject.
12894         
12895         * marshal.c: Added support for COM Interop
12896         (signature_cominterop): Converts managed signature to corresponding
12897         unmanaged COM signature.
12898         (cominterop_get_function_pointer): gets unmanaged function pointer via
12899         COM object vtable
12900         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
12901         (cominterop_get_method_interface): returns interface type that method is defined on
12902         (mono_mb_emit_cominterop_call): emits native call to function pointer
12903         gotten from vtable
12904         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
12905         that matches signature of unmanaged function.
12906         (cominterop_get_native_wrapper): wrapper around adjusted method call.
12907         (cominterop_get_invoke): forwards call from proxy to __ComObject
12908         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
12909         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
12910         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
12911         
12912         * marshal.h: Added Marshal icall declarations.
12913         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
12914         so we can access them in finalizer
12915         
12916 2006-07-14  Dick Porter  <dick@ximian.com>
12917
12918         * object.c (mono_type_initialization_cleanup): Fix a race
12919         condition by temporarily commenting out the critical section
12920         deletion.
12921
12922 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
12923
12924         * reflection.c (create_custom_attr): Fix some warnings.
12925         (create_custom_attr_data): Ditto.
12926         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
12927         types. Fixes #78855.
12928
12929 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
12932
12933         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
12934
12935 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
12936
12937         * reflection.c (resolve_object): Add support for DynamicMethod.
12938
12939         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
12940         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
12941
12942 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
12943
12944         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
12945         don't leak GPtrArray's pdata has we have no use (nor free) for it.
12946
12947 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
12950         Fixes #77888.
12951
12952 2006-06-30  Raja R Harinath  <rharinath@novell.com>
12953
12954         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
12955         slightly: remove a shadow local variable.
12956
12957 2006-06-29  Raja R Harinath  <rharinath@novell.com>
12958
12959         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
12960         definition that introduces the virtual function slot.
12961         Also fix Coverity #105.
12962
12963 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
12964
12965         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
12966         for dynamic assemblies. Fixes #78724.
12967
12968 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
12969
12970         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
12971         Fixes #78722.
12972
12973 2006-06-21  Martin Baulig  <martin@ximian.com>
12974
12975         * reflection.c
12976         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
12977         fixes #76484.
12978
12979 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
12980
12981         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
12982
12983 2006-06-20  Raja R Harinath  <rharinath@novell.com>
12984
12985         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
12986         nor TYPEREFs.
12987         * class.c (mono_class_create_from_typespec): Add 'context' argument.
12988         Inflate result if necessary.
12989         (mono_class_get_full): Remove old version.  Rename from
12990         'mono_class_get' and add 'context' argument.  Pass it to
12991         ..._create_from_typespec.
12992         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
12993         (mono_ldtoken): Revert change below.
12994
12995 2006-06-20  Martin Baulig  <martin@ximian.com>
12996
12997         * class.c (mono_ldtoken): Don't pass the generic context to
12998         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
12999
13000 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
13001
13002         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
13003         and later freeing it. Fixes #78638.
13004
13005 2006-06-15  Miguel de Icaza  <miguel@novell.com>
13006
13007         * icall.c (mono_class_get_throw): Revert over-zealous error
13008         throwing, the caller for mono_class_get_throw will cope with
13009         errors when classes are not properly initialized already.
13010
13011         The code still copes with loader exceptions though.
13012
13013         Fixes the regression in reftype1 and reftype3 from the CAS tests.
13014         
13015 2006-06-14  Miguel de Icaza  <miguel@novell.com>
13016
13017         Fixes the `make run1' version of RuntimeAbort (to be commited,
13018         source is in Bugzilla).
13019         
13020         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
13021         FALSE on class loading failure instead of returning true.
13022
13023         * class.c (mono_class_create_from_typedef): It is possible for
13024         mono_metadata_interfaces_from_typedef_full to fail if a class is
13025         not found, cope with this.
13026         
13027
13028 2006-06-14  Dick Porter  <dick@ximian.com>
13029
13030         * socket-io.c: 
13031         * process.c: Fix a bunch of signed/unsigned warnings from gcc
13032         4.1.1
13033
13034 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
13035
13036         * culture-info-table.h : oops, forgot to make it nsync with r61548.
13037
13038 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13039
13040         * icall.c: Another fix for building mono in Visual Studio.
13041
13042 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13043
13044         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
13045         
13046 2006-06-09  Martin Baulig  <martin@ximian.com>
13047
13048         * debug-mono-symfile.c: Put this back and really fix it this
13049         time. Sorry for all the trouble.
13050
13051 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13052
13053         * icall.c (mono_class_get_throw): Fix a warning.
13054         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
13055         ReflectionTypeLoadException if needed. Fixes #78606.
13056
13057         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
13058         (mono_class_init): Ditto.
13059
13060         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
13061         ref_only exceptions.
13062         (mono_loader_clear_error): Make this work even if there is no error.
13063
13064 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
13065
13066         * object-internals.h marshal.c marshal.h icall.c: Implement method 
13067         Marshal.GetComSlotForMethodInfo using internal call.
13068
13069 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
13070
13071         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
13072         a function for signalling it.
13073
13074         * class.c (mono_class_from_typeref): Use the new kind of loader error when
13075         a referenced assembly is not found.
13076
13077         * loader.c (mono_loader_error_prepare_exception): Add support for 
13078         LOADER_ERROR_ASSEMBLY. Fix formatting.
13079
13080 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
13081
13082         * domain.c appdomain.c class-internals.h marshal.c: Add support 
13083         for VARIANT marshalling on windows and increment corlib version
13084         since Variant struct was added.
13085
13086 2006-06-03  Miguel de Icaza  <miguel@novell.com>
13087
13088         * debug-mono-symfile.c: Revert Martin's previous patch which broke
13089         stack trace line information:
13090
13091         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
13092         (Martin) when looking up B which is between A and C, return A not C.
13093
13094         Bug is #78573.
13095
13096         Thanks to Alexander Olk for tracking this down.
13097
13098 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
13101         
13102         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
13103         avoid clobbering its value.
13104         (mono_string_to_lpstr): Fix a warning on windows.
13105
13106 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13107
13108         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
13109
13110         * reflection.c loader.c: Removed references to 'dummy' flag.
13111
13112         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
13113
13114         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
13115         it gets GC tracking.
13116
13117         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
13118         GC tracking.
13119         
13120         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
13121
13122         * marshal.c threadpool.c: Update callers of mono_async_result_new.
13123
13124         * appdomain.c: Bump corlib version.
13125
13126 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13127
13128         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13129         CEE_STIND_REF when working with object references.
13130
13131 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
13134         Fixes #78539.
13135
13136 2006-05-30  Miguel de Icaza  <miguel@novell.com>
13137
13138         * loader.c (method_from_memberref): Fix argument value for
13139         mono_loader_set_error_method_load (I was passing the MonoClass
13140         instead of the class name char *).
13141
13142 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
13143
13144         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
13145         CEE_STIND_REF when working with object references.
13146
13147 2006-05-30  Martin Baulig  <martin@ximian.com>
13148
13149         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
13150         mono_method_full_name() change and replace the ':' with a '.'
13151         here.
13152
13153 2006-05-30  Martin Baulig  <martin@ximian.com>
13154
13155         * debug-mono-symfile.c
13156         (mono_debug_symfile_lookup_location): Fix the algorithm:
13157         when looking up B which is between A and C, return A not C.
13158
13159 2006-05-29  Martin Baulig  <martin@ximian.com>
13160
13161         * mono-debug.h
13162         (MonoDebugMethodInfo): Make the typedef public.
13163         (MonoDebugSourceLocation): New public struct.
13164
13165         * mono-debug.c
13166         (mono_debug_source_location_from_address): Removed.
13167         (mono_debug_source_location_from_il_offset): Removed.
13168         (mono_debug_il_offset_from_address): Removed.
13169         (mono_debug_address_from_il_offset): Removed.
13170         (mono_debug_lookup_method): New public function.
13171         (mono_debug_lookup_source_location): New public function; replaces
13172         the old mono_debug_source_location_from_*() functions; see the
13173         inline documentation.
13174         (mono_debug_free_source_location): New public function.
13175         (mono_debug_print_stack_frame): New public function; see the
13176         inline documentation.
13177
13178         * debug-mono-symfile.c
13179         (mono_debug_find_source_location): Renamed into
13180         mono_debug_symfile_lookup_location(); only take a
13181         `MonoDebugMethodInfo *' and an `offset' argument; added inline
13182         documentation.
13183         (mono_debug_find_method): Renamed into
13184         mono_debug_symfile_lookup_method().
13185
13186 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13187
13188         * assembly.c (mono_assembly_open_full): Dont overwrite the status
13189         returned by mono_image_open_full ().
13190
13191         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
13192         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
13193         #78517.
13194
13195         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
13196         #78518.
13197
13198 2006-05-27  Miguel de Icaza  <miguel@novell.com>
13199
13200         * class.c (mono_class_from_typeref): handle missing images
13201         earlier, deals with bug #78418.   Refactor code; 
13202
13203         Fix a warning introduced in my previous commit (some stale code
13204         from before I revisited my patch).
13205
13206         * class.c (mono_class_create_from_typedef): On failure, remove the
13207         class from the MonoImage->class_cache as the class is not
13208         initialized;   Fixes the leak pointed out by Paolo.
13209
13210 2006-05-25  Dick Porter  <dick@ximian.com>
13211
13212         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
13213         DeleteCriticalSections until I figure out which one may still be
13214         sometimes locked when mono_thread_cleanup is called.
13215
13216 2006-05-24  Dick Porter  <dick@ximian.com>
13217
13218         * threads.c (mono_thread_cleanup): Move the threading cleanup out
13219         of mono_thread_manage and back into its own function, so it can be
13220         called after the finalizer thread has finished.
13221
13222         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
13223
13224 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
13227         Fixes #78495.
13228
13229         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
13230         with non-blittable elements.
13231         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
13232
13233 2006-05-24  Martin Baulig  <martin@ximian.com>
13234
13235         * mono-debug-debugger.h (MonoDebuggerEvent): Added
13236         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
13237
13238         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
13239         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
13240         `mono_debugger_event_handler' to NULL.
13241
13242 2006-05-24  Martin Baulig  <martin@ximian.com>
13243
13244         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
13245
13246 2006-05-24  Martin Baulig  <martin@ximian.com>
13247
13248         * mono-debug-debugger.h
13249         (mono_debugger_create_notification_function): Added
13250         `MonoCodeManager *' argument.
13251
13252 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
13253
13254         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
13255
13256 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
13257
13258         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
13259         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
13260         implementation.
13261
13262 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
13263
13264         * icall.c: precise GC support: objects can't be stored in unmanaged
13265         memory anymore, even if they are kept alive by other references: since
13266         they can move the GC needs to be able to always find them.
13267
13268 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13269
13270         * object.c: precise GC support for static fields. Support
13271         for moving GCs: write barriers and pinned allocation for interned
13272         strings.
13273
13274 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
13275
13276         * domain.c, domain-internals.h: precise GC support for the MonoDomain
13277         structure.
13278
13279 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13280
13281         * class.c, gc.c: sgen and precise GC updates.
13282
13283 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13284
13285         * marshal.h, marshal.c: added write barrier wrapper and precise type
13286         fixes.
13287
13288 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
13289
13290         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
13291         support.
13292
13293 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13294
13295         * reflection.c: precise and sgen GC updates.
13296
13297 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13298
13299         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
13300
13301 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
13304
13305 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
13308         MONO_TYPE_OBJECT. Fixes #78462.
13309
13310 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
13313         and blittable types.
13314
13315 2006-05-17  Miguel de Icaza  <miguel@novell.com>
13316
13317         * class.c (mono_class_get_exception_for_failure): Implement parts
13318         of a TODO: if the loader error is set (instead of the class
13319         error), we return a Loader exception that can be properly thrown
13320         elsewhere.
13321
13322         This was exposed by some Winforms 2.0 code that I tried to run
13323         (Atsushi pointed me to it).
13324
13325 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
13328         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
13329         
13330         * marshal.c (emit_marshal_vtype): Add limited support for 
13331         UnmanagedType.LPStruct. Fixes #78427.
13332
13333         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
13334         Applied a patch from kangaroo to fix #77523.
13335
13336 2006-05-17  Martin Baulig  <martin@ximian.com>
13337
13338         * threads.c
13339         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
13340         (debugger_thread_created): Removed.
13341         (debugger_thread_exited): Removed.
13342
13343 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13346
13347         * object-internals.h (MonoReflectionResource): Sync with managed version.
13348
13349 2006-05-12  Wade Berrier <wberrier@novell.com>
13350
13351         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
13352
13353 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
13356         functions try to allocate from the image mempool.
13357
13358 2006-05-12  Dick Porter  <dick@ximian.com>
13359
13360         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
13361
13362 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
13363
13364         * object.c: The FieldGetter and FieldSetter methods require the full
13365         name of the class, not only the name. Fixes bug #78277.
13366
13367 2006-05-11  Miguel de Icaza  <miguel@novell.com>
13368
13369         * loader.c (method_from_memberref): Do not pass the NULL klass to
13370         mono_loader_set_error_() methods.  Pass the non-NULL value
13371         (class). 
13372
13373 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13374
13375         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
13376         (mono_assembly_close): Null out assembly->image->references after freeing it.
13377
13378         * image.c (mono_image_close): Free image->references.
13379         
13380         * reflection.c (mono_image_basic_init): Fix a small memory leak.
13381
13382 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13383
13384         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
13385         before checking if it's NULL (g_assert).
13386
13387 2006-05-10  Martin Baulig  <martin@ximian.com>
13388
13389         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
13390         I thought I already killed that two months ago, but now it somehow reappeared.
13391
13392 2006-05-10  Martin Baulig  <martin@ximian.com>
13393
13394         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
13395
13396 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13397
13398         * reflection.c: Allocate memory for dynamically created methods in the image
13399         mempools.
13400
13401 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
13402
13403         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
13404         don't use the ad pointer before checking if it's NULL (g_assert).
13405
13406 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
13409         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
13410
13411         * marshal.c: Allocate all signatures from mempools.
13412
13413         * marshal.c: Allocate some more signatures from mempools.
13414
13415 2006-05-09  Miguel de Icaza  <miguel@novell.com>
13416
13417         * object.c (mono_load_remote_field): The code used to provide a
13418         temporary variable for returning results if the user did not
13419         provide a result pointer.  But our temporary variable was allocted
13420         on the satck.
13421
13422         Fix calling code to always pass a result area.   Coverity ID 103.
13423
13424 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
13427         value, not the old. Fixes #78312.
13428         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
13429
13430         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
13431         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
13432         per-image cache.
13433
13434         * assembly.c (mono_assembly_close): Free image->references.
13435
13436         * assembly.c (mono_assembly_names_equal): Fix a warning.
13437         (mono_assemblies_cleanup): Cleanup more global data.
13438
13439         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
13440
13441         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
13442         ptr_cache and image->modules.
13443
13444         * image.c (mono_image_init): Allocate array_cache lazily.
13445         
13446 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13447
13448         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
13449         behavior was changed recently and has bad side effects.
13450
13451 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
13454         
13455         * assembly.c (mono_assembly_close): Remove a debug printf.
13456
13457         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
13458
13459         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
13460         to also allow for temporary references between mono_image_open ()/close ().
13461
13462         * domain.c (get_runtimes_from_exe): Add a FIXME.        
13463
13464 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * marshal.c: Fix support for dynamic methods.
13467
13468         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
13469
13470         * marshal.c (mono_marshal_cleanup): New cleanup function.
13471
13472         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
13473         image mempools.
13474
13475         * class.c (mono_class_init): Fix leaking class->nested_classes.
13476
13477         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
13478
13479         * image.c (mono_image_init): Initialize the new cashes.
13480
13481         * image.c (mono_image_close): Destroy the new cashes.
13482
13483         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
13484
13485         * mempool.c (mono_mempool_strdup): New helper function.
13486
13487         * class-internals.h: Add prototype for mono_loader_unlock ().
13488
13489         * domain.c (mono_jit_info_table_find): Fix a warning.
13490         (mono_debugger_check_runtime_version): Ditto.
13491
13492         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
13493         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
13494         functions to these modules.
13495
13496         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
13497         metadata modules.
13498         
13499         * marshal.c (mono_free_bstr): Fix a warning.
13500
13501         * assembly.c (mono_assembly_open_full): Fix another small leak.
13502
13503         * object.c: Fix some unload leaks in the remoting code.
13504
13505         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
13506         function.
13507
13508         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
13509
13510         * reflection.c: Fix some unload leaks in dynamic assemblies.
13511
13512 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
13513
13514         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
13515         * marshal.h: Add BSTR support on Win32
13516         * icall.c: Add BSTR icalls
13517         * metadata.h: Add BSTR enums
13518
13519 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13520
13521         Work to catch the crash from #76795 and turn it into an
13522         exception.   As I stubbed out pieces of the VisualBasic support,
13523         I found a number of places where the code was failing and I added
13524         checks to those places. 
13525         
13526         * metadata.c (do_mono_metadata_parse_generic_class): Make this
13527         function return a status code.  If we fail to parse the signature
13528         from mono_metadata_parse_generic_inst, return FALSE.
13529
13530         * loader.c (mono_get_method_from_token): If we fail to load the
13531         method (mono_class_get) return NULL.   
13532
13533         * (method_from_memberref): Return NULL if we are unable to parse
13534         the method signature
13535
13536         (mono_loader_error_prepare_exception): Since we now use the
13537         loader_error flag internally to stop processing, and obtaining
13538         exceptions that might be thrown will walk this code path the
13539         proper way of going from a MonoLoaderError into a
13540         MonoException was convoluted.   This new routine encapsulates the
13541         process of turning the error into an exception and *clearing* the
13542         error afterwards.
13543         
13544 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13545
13546         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
13547         with missing assemblies), and to cope with:
13548
13549                 * Missing fieldref from a non-existing assembly.
13550                 * Missing methodref from a non-existing assembly.
13551
13552         The first batch of work to address *some* of the issues from 76661.
13553         
13554         * object.c (mono_class_create_runtime_vtable): If we fail to
13555         initialize the class raise the exception here. 
13556
13557         * metadata.c (mono_class_get_overrides_full): If any methods fail
13558         to load return the failure to the caller.
13559
13560         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
13561         flagging assemblies that failed to load.   
13562
13563         Do not crash if we are unable to load the assembly.
13564
13565         (mono_assembly_close): Do nothing with REFERENCE_MISSING
13566         assemblies. 
13567
13568         * loader.c (mono_loader_set_error_type_load): Change the
13569         convention to always pass unallocated strings, so we make our own
13570         copies (I know our own code had duplicated strings before, but
13571         this keeps the normal conventions).
13572         (method_from_memberref): Call mono_loader_set_error_method_load
13573         for all possible failures of loading the class. 
13574         Remove assert, turn into a loader error.
13575
13576         (mono_loader_error_to_exception): Move this routine from mini
13577         (mini_loader_error_to_exception) there was no need to have that in
13578         mini. 
13579
13580         * class.c (mono_class_from_typeref): If we were not able to load
13581         the assembly with mono_assembly_load_reference, call the
13582         mono_loader_set_error_type_load to register the problem.
13583
13584         (mono_class_setup_fields): If we fail to load the type from
13585         mono_metadata_parse_type_full, call mono_class_set_failure and
13586         break from the loop.
13587
13588         If class->exception_type is set, we do not layout the fields as
13589         that might crash the runtime, and instead return (from breaking
13590         from the previous loop).
13591
13592         (mono_class_setup_vtable): This now returns a boolean indicating
13593         whether the table was properly setup.   The decision is driven by
13594         mono_class_get_overrides_full which might run into non-existing
13595         methods. 
13596         
13597         (mono_class_init): Returns TRUE on success or FALSE if there was a
13598         problem in loading the type (incorrect assemblies, missing
13599         assemblies, methods, etc).
13600
13601         When we call mono_class_setup_fields we also check for a potential
13602         error inside this call (either a class exception or a general
13603         loader exception).
13604
13605         (mono_class_create_from_typedef): If the parent fails to load
13606         (calling mono_class_get_full) return NULL.
13607         
13608         ** Important **
13609
13610         calls to mono_metadata_parse_type_full should be checked
13611         everywhere and set the mono_class_set_failure
13612         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
13613
13614         The current patch checks the places where my manually constructed
13615         tests show the errors are showing up, but we should do it
13616         everywhere. 
13617
13618         ** Important2 **
13619
13620         mono_class_init return values should be tested everywhere, like
13621         the previous case this is something that we should audit
13622         everywhere and not only on the cases exposed by the tests I
13623         created. 
13624
13625 2006-04-26  Miguel de Icaza  <miguel@novell.com>
13626
13627         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
13628         boolean parameter and instead pass the information on `options'
13629         parameter (FileOptions).
13630
13631         * icall.c: Register the new signature for MonoIO.Open.
13632
13633         * debug-helpers.c (dis_one): Trying to understand how coverity
13634         works.  Fix Run 5, item 78.
13635
13636 2006-04-26  Dick Porter  <dick@ximian.com>
13637
13638         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
13639         dereference.
13640
13641 2006-04-25  Martin Baulig  <martin@ximian.com>
13642
13643         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
13644
13645         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
13646         debugger_thread_created().
13647         (debugger_gc_push_all_stacks): Don't handle the main thread in any
13648         special way.
13649         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
13650         (mono_debugger_finalize_threads): New function; undo the effects
13651         of mono_debugger_init_threads().
13652         (mono_debugger_create_all_threads): Removed.
13653
13654 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13655
13656         * image.c (mono_image_close): Tidy up trace messages.
13657
13658         * assembly.c (mono_assembly_close): Ditto.
13659
13660         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
13661         no longer references an already freed assembly. Fixes #78168.
13662
13663 2006-04-21  Dick Porter  <dick@ximian.com>
13664
13665         * threads.c (mono_thread_detach): Fix reference counting when
13666         detaching threads.
13667
13668 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
13671         #78155.
13672
13673 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13674
13675         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
13676         (mono_type_to_stind): Ditto.
13677
13678         * marshal.c: Use the new helper functions to simplify code.
13679
13680         * image.c (mono_image_close): Add some code for help debug assembly unloading
13681         problems.
13682
13683         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
13684         image mempool.
13685
13686         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
13687         assembly was already loaded in another appdomain. Fixes #78083.
13688
13689 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
13692         referenced assemblies.
13693         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
13694
13695         * domain.c (mono_domain_free): Add a trace message.
13696
13697         * appdomain.c (add_assemblies_to_domain): Ditto.        
13698
13699         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
13700         field.  
13701
13702 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13703
13704         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
13705
13706 2006-04-12  Martin Baulig  <martin@ximian.com>
13707
13708         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
13709         `USE_INCLUDED_LIBGC'.   
13710
13711 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
13714         the patch contains ../ and a small directory name later. Hopefully fixes
13715         #78035.
13716
13717 2006-04-10  Martin Baulig  <martin@ximian.com>
13718
13719         Clean up the debugger's thread-handling code.
13720
13721         The debugger's thread-handling code has been moved from
13722         ../mini/debug-debugger.c to threads.c.  We now iterate directly
13723         over the `threads' hash, keep track of exiting threads and also
13724         use proper locking.
13725
13726         We can now debug XSP and XSP based applications with the debugger.
13727
13728         * object-internals.h (MonoThread): Added `gpointer end_stack'.
13729
13730         * threads.h
13731         (MonoThreadCallbacks): Removed; this was only used by the debugger.
13732         (mono_install_thread_callbacks): Likewise.      
13733
13734         * threads.c (mono_thread_callbacks): Removed.
13735         (debugger_thread_created, debugger_thread_exited): New static functions.
13736         (start_wrapper): Call debugger_thread_created().
13737         (thread_cleanup): Call debugger_thread_exited().
13738         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
13739         (mono_debugger_init_threads): New public function.
13740         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
13741         iterate directly over the `threads' hash and also use proper locking.
13742
13743         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
13744
13745         * mono-debug-debugger.h
13746         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
13747
13748 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
13751         argument type=array. Fixes #78057.
13752
13753 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
13754
13755         * culture-info-table.h : regenerated. Fixed bug #69652.
13756
13757 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * loader.c metadata.c: Reapply a variant r59116.
13760         
13761         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
13762
13763         * class.c (mono_class_setup_interface_offsets): New internal function.
13764
13765         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
13766         interfaces too. Fixes #77398.
13767
13768         * reflection.c (encode_cattr_value): Add support for 
13769         parameter type=object, argument type=array.
13770         (load_cattr_value): Ditto. Fixes #77916.
13771
13772         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
13773         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
13774
13775         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
13776         a byval char array and CharSet is Ansi.
13777
13778         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
13779
13780 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
13781
13782         * metadata.c: Add some locking comments.
13783         
13784         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
13785         mempool.
13786         (mono_metadata_free_method_signature): Don't free the signature itself.
13787
13788         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
13789
13790         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
13791         reference the same MonoImage.
13792         (mono_assembly_load_from_full): Add an assert.
13793
13794 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13795
13796         * image.c (mono_image_close): Don't put the image we are about to free into the
13797         loaded_images_guid_hash.
13798
13799         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
13800         to reduce code duplication.
13801
13802         * marshal.c: Register the native functions called by this module as icalls, to
13803         somewhat centralize the creation of MonoMethodSignature's.
13804
13805         * loader.c (mono_method_signature): Add a cache for method signatures.
13806
13807         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
13808         the parameter attributes of a method.
13809         (mono_metadata_parse_method_signature_full): Refactored the computation of
13810         parameter attributes into a separate function. Also avoid one allocation in
13811         most cases.
13812
13813         * assembly.c (mono_assembly_close): Ditto.
13814
13815         * image.c (mono_image_close): Log trace messages with INFO level.
13816
13817         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
13818
13819         * image.c reflection.c: Correct reference counting of image modules.
13820         
13821         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
13822         of this function from the image mempool.
13823         
13824         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
13825         to allow more cached types to be used.
13826
13827         * mono-debug.c (mono_debug_add_method): Appled patch from
13828         David S. Miller  <davem@sunset.davemloft.net>: Access 
13829         minfo->lexical_blocks[] entry elements using read32().
13830
13831 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * loader.c (mono_free_method): No longer free the method header for non-dynamic
13834         methods as it is allocated from the mempool.
13835
13836         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
13837         image mempool.
13838
13839         * metadata-internals.h: Add comments describing the reference counting scheme
13840         used for MonoImage and MonoAssembly.
13841
13842         * image.c assembly.c reflection.c: Rework reference counting of images and 
13843         assemblies so they are freed when the runtime is shut down. Free some 
13844         additional memory structures when an image is unloaded.
13845         
13846 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13847
13848         * class.c loader.c reflection.c: Allocate more data structures in
13849         the image mempool.
13850
13851 2006-03-31  Miguel de Icaza  <miguel@novell.com>
13852
13853         * icall.c
13854         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
13855         build on pre glib 2.4 systems.
13856
13857 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13858
13859         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
13860
13861         * icall.c: Fix some warnings.
13862
13863 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
13864
13865         * culture-info-table.h : regenerated.
13866
13867 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
13868
13869         * threads.c, object-internals.h, verify.c: changed the culture caching
13870         code to use a normal MonoArray for storage so the GC can keep track of
13871         them easily. Fixed bits of the cache logic, too and simplified the
13872         code.
13873
13874 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
13875
13876         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
13877         thread for non-Boehm GCs.
13878
13879 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
13880
13881         * domain.c, object.c, domain-internals.h: reduce the amount of memory
13882         needed to keep track of the data for static fields.
13883
13884 2006-03-29  Raja R Harinath  <rharinath@novell.com>
13885
13886         Fix #75172
13887         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
13888         for interface classes.  Use 'num_methods' instead.
13889         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
13890         before using '->vtable_size' field.
13891
13892 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13893
13894         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
13895         doesn't contain managed pointers, so use a normal hashtable.
13896
13897 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13898
13899         * reflection.c, class-internals.h, domain.c: fixed handling of types
13900         used as values for objects in custom attributes (bug #77915):
13901
13902 2006-03-24  Martin Baulig  <martin@ximian.com>
13903
13904         * class.c (mono_class_setup_fields): Added support for generic
13905         instances; fixes #77580.
13906
13907 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13908
13909         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
13910
13911 2006-03-24  Dick Porter  <dick@ximian.com>
13912
13913         * file-io.c (get_file_attributes): More stat macro breakage.
13914         Fixes bug 77759.
13915
13916 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
13917
13918         * profiler.c: added the file=filename option in the default profiler
13919         to output the profile data to filename.
13920
13921 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13922
13923         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
13924         bug #77877.
13925
13926 2006-03-22  Martin Baulig  <martin@ximian.com>
13927
13928         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
13929         allocated `MonoClassField *' in `fb->handle'.
13930
13931 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13932
13933         * class.c, image.c, metadata-internals.h: implemented new mechanism to
13934         allocate interface ID to save memory and allow better ID reuse on
13935         appdomain unload. setup_generic_vtable () removal from Martin.
13936
13937 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
13938
13939         * object.h, appdomain.c, domain.c, exception.c, icall.c,
13940         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
13941         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
13942         write barriers for reference stores with managed objects accessed with
13943         C structures in the runtime and in embedding programs.
13944
13945 2006-03-20  Raja R Harinath  <rharinath@novell.com>
13946
13947         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
13948         'interface_id' and 'max_interface_id' fields of MonoClasses
13949         representing open generic types.
13950
13951 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
13952
13953         * object.h, object.c, icall.c: added functions to deal with
13954         storing valuetypes that contain references in managed objects.
13955         * reflection.c, string-icalls.c, threads.c, marshal.c: small
13956         fixes and comments around uses of mono_array_addr ().
13957
13958 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
13959
13960         * object.h, icall.c, monitor.c: object.GetHashCode ()
13961         implementation that supports the moving garbage collector.
13962
13963 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13964
13965         * icall.c, threads-types.h, threads.c: implemented finalizer for
13966         LocalDataStoreSlot.
13967
13968 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * metadata.c (mono_type_size): Add a fixme.
13971         (mono_type_stack_size): Ditto.
13972
13973         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
13974         'type_forwarders' field.
13975
13976         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
13977         attribute from net 2.0.
13978
13979         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
13980         from class.c.
13981
13982         * class.c (mono_class_setup_fields): Fix a warning.
13983         
13984         * class.c (mono_class_from_name): Add support for assemblyref entries
13985         in the EXPORTEDTYPE table.
13986
13987         * reflection.c: Add support for handling type forwarders under net 2.0.
13988
13989         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
13990         
13991 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
13992
13993         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
13994         overwriting entries in ModuleBuild->types, also clean up the code
13995         a little. Fixes #77774.
13996
13997 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13998
13999         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
14000         load friend assembly info when present.
14001
14002 2006-03-14  Raja R Harinath  <rharinath@novell.com>
14003
14004         Fix crasher on gtest-158.cs.
14005         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
14006         the return value if the MonoClass we want is yet in an
14007         inconsistent state.
14008         * class.c (mono_class_create_from_typedef): Add an comment
14009         explaining an order dependency between mono_class_setup_parent and
14010         mono_class_setup_mono_type.
14011
14012 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14013
14014         * class.c: documentation updates and events bug fix.
14015
14016 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14017
14018         * class.c: some cleanup, locking fixes.
14019
14020 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14021
14022         * class.c: fix the generics code to setup nested
14023         type info to the instantiated type (bug #77770).
14024
14025 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14026
14027         * marshal.c: fixed a few type correctness issues.
14028
14029 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14030
14031         * loader.c: the Set/Get/Addrtess array methods should be public.
14032
14033 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
14036         
14037         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
14038         info->wrapper.
14039
14040 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14041
14042         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
14043
14044         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
14045
14046         * mempool.c (mono_mempool_alloc): Speed this up a bit.
14047         (mono_mempool_alloc0): Ditto.
14048
14049 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14050
14051         * socket-io.c:
14052         (create_object_from_sockaddr): it was allocating 4 extra bytes
14053         for the AF_UNIX data. Fixes bug #77747.
14054
14055 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
14058
14059 2006-03-09  Dick Porter  <dick@ximian.com>
14060
14061         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
14062         Fixes bug 76966 again.
14063
14064 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
14065
14066         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
14067         names from r57532
14068         * appdomain.c: Bumped corlib version to 48 (due to r57532)
14069
14070 2006-03-07  Martin Baulig  <martin@ximian.com>
14071
14072         * object.c
14073         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
14074
14075 2006-03-07  Martin Baulig  <martin@ximian.com>
14076
14077         * class.c
14078         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
14079         regression introduced in r56970; see gtest-252.cs.
14080
14081         * loader.c (mono_get_method_constrained): Correctly handle generic
14082         methods; see gtest-253.cs.
14083
14084 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14085
14086         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
14087
14088 2006-03-04  Martin Baulig  <martin@ximian.com>
14089
14090         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
14091         compute the parent type at runtime, just like we're already doing
14092         it for interfaces.
14093
14094         * reflection.c
14095         (mono_reflection_bind_generic_parameters): Don't compute the
14096         parent type anymore.
14097
14098         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
14099
14100 2006-03-04  Martin Baulig  <martin@ximian.com>
14101
14102         * mono-debug-debugger.h
14103         (mono_debugger_create_notification_function): Allocate memory at
14104         runtime and return a pointer to it.
14105
14106 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * assembly.c: Fix windows build.
14109         
14110         * assembly.c: Fix build.
14111
14112         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
14113
14114         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
14115         
14116 2006-03-03  Dick Porter  <dick@ximian.com>
14117
14118         * process.c
14119         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
14120         Check parameters before dereferencing them.  Fixes Aaron's part of
14121         bug 77393.
14122
14123 2006-03-03  Raja R Harinath  <rharinath@novell.com>
14124
14125         Fix performance regression.
14126         * loader.c (find_method_in_class): Add 'from_class' argument.
14127         Rename 'klass' argument to 'in_class'.  The signature is compared
14128         against the method in 'in_class', and the corresponding method is
14129         returned from 'from_class'.
14130         (find_method): Walk both 'in_class' and 'from_class' in parallel.
14131         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
14132         type definition and generic instantiation in parallel.
14133         (mono_get_method_constrained): Update to changes.
14134
14135 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14136
14137         * threads.c: make sure the domain is correct, too when doing
14138         mono_thread_attach ().
14139
14140 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
14141
14142         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
14143         windows. Fixes #77683.
14144
14145 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14146
14147         * object.h, *: introduced specific way to set elements of an array
14148         of references to be used as write barrier. Still need to audit the
14149         uses of mono_array_addr.
14150
14151 2006-03-01  Miguel de Icaza  <miguel@novell.com>
14152
14153         * object-internals.h: New field to cache the assmebly name, patch
14154         from Tambet Ingo (tambet@ximian.com)
14155
14156 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
14157
14158         * decimal.h, class-internals.h, metadata-internals.h,
14159         file-io.h: mark a few function declarations as internal, to
14160         reduce the number of PLT entries.
14161
14162 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14163
14164         * file-io.c: fix typo in warning message.
14165
14166 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
14167
14168         * loader.c: on unix, lookup the "*A" version of a function
14169         if charset is auto as a second option before failing.
14170
14171 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14172
14173         * class.h (mono_class_inflate_generic_method): Revert to two
14174         argument version.
14175         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
14176         (mono_class_inflate_generic_method_full): Add.
14177         * class.c (mono_class_inflate_generic_method_full): Rename from
14178         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
14179         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
14180         * loader.c, reflection.c: Update to changes.
14181
14182 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14183
14184         * icall.c: const fixes and small improvements.
14185
14186 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14187
14188         * threadpool.c: for asynchronous connect(), enable the same workaround
14189         for BSD 6 as for the Mac. Fixes bug #77637.
14190
14191 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14192
14193         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
14194         formatted classes. Fixes #77524.
14195
14196 2006-02-24  Raja R Harinath  <rharinath@novell.com>
14197
14198         * class.c (inflate_generic_type): Add a couple more
14199         micro-optimizations.
14200         (inflate_generic_context): Don't use the 'gmethod' from
14201         'inflate_with'.
14202         (mono_class_inflate_generic_method): If the method has generic
14203         parameters, but the passed-in context doesn't have a 'gmethod',
14204         create one.  Use the possibly simplified generic instantiation
14205         from the declaring class instead of the one passed in.
14206
14207 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14208
14209         Make generic method signature and method header handling lazy.
14210         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
14211         (inflate_generic_header): Likewise.
14212         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
14213         parameter to avoid inflating types.
14214         (mono_get_inflated_method): Empty out.
14215         * class.h (mono_class_inflate_generic_method): Update to changes.
14216         * loader.c (mono_get_method_from_token): Don't parse signature for
14217         generic methods, nor methods of generic classes.
14218         (mono_method_signature): Rename from 'mono_method_signature'.
14219         Inflate signature on demand.
14220         (mono_method_get_header): Inflate method header on demand.
14221         * reflection.c: Update to changes.
14222
14223 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14224
14225         * metadata.c (mono_metadata_inflate_generic_inst): If the
14226         instantiation is closed, don't bother expanding it in the new
14227         context.
14228         * class.c (inflate_generic_class): If the generic instantiation
14229         doesn't change after inflation, return the argument itself.
14230         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
14231         Add bounds checks.
14232         (inflate_generic_context): If neither the generic class nor the
14233         generic method instantiations change, return the original context.
14234         * reflection.c (mono_method_get_object): Do
14235         'mono_get_inflated_method' before accessing the ->klass field.
14236         (inflate_mono_method): Don't create a MonoGenericMethod unless
14237         necessary.
14238         (inflate_method): Don't pass a constructed type as the declaring
14239         type of a methodbuilder.
14240
14241 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
14242
14243         * object.c: fix memory overwrite.
14244
14245 2006-02-22  Dick Porter  <dick@ximian.com>
14246
14247         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
14248         it doesn't work any more.
14249         (mono_threads_request_thread_dump): Fix unused variable warnings.
14250
14251 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14252
14253         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
14254         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
14255         the public header file.
14256
14257 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
14258
14259         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
14260
14261 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14262
14263         * class-internals.h, object.c: reduce the size of MonoVTable
14264         and store the interface_offsets array at negative offsets.
14265
14266 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14267
14268         * metadata.c: tweak table descriptors data structures to reduce
14269         size and runtime relocations.
14270
14271 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14272
14273         * marshal.c: fix some types and opcodes to be type-safe
14274         in marshaling wrappers.
14275
14276 2006-02-21  Ankit Jain  <jankit@novell.com>
14277
14278         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
14279
14280 2006-02-21  Raja R Harinath  <rharinath@novell.com>
14281
14282         * metadata.c (get_constraints): Relax debugging checks for monodis.
14283
14284 2006-02-21  Ankit Jain  <jankit@novell.com>
14285
14286         * metadata.c (mono_metadata_load_generic_params): Move the code
14287         checking for ambiguous generic params from here to mono/dis/get.c
14288         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
14289
14290 2006-02-21  Raja R Harinath  <harinath@gmail.com>
14291
14292         Fix assertion triggered when compiling nemerle.
14293         * class.c (mono_get_shared_generic_inst): Rename from
14294         get_shared_inst and make non-static.
14295         * loader.c (mono_get_shared_generic_method): New.  Used to create
14296         the MonoGenericContext-equivalent of a MonoGenericContainer.
14297         (mono_get_method_from_token): Initialize the 'context' field of
14298         the created MonoGenericContainer.
14299         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
14300         * metadata.c (get_constraints): Add sanity check.
14301         * class-internals.h: Add new internal methods.
14302
14303         * reflection.c (verify_safe_for_managed_space): New sanity check.
14304         Currently checks that owner-less generic parameters aren't allowed
14305         in managed space.
14306         (mono_type_get_object): Use it.
14307         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
14308         that are now in mono_type_get_object.
14309         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
14310
14311 2006-02-19  Raja R Harinath  <harinath@gmail.com>
14312
14313         * metadata.c (mono_type_create_from_typespec): Rename from
14314         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
14315         argument and caching of types in the generic container.
14316         (unwrap_arrays, find_generic_param): Remove.
14317         * metadata-internals.h: Update.
14318         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
14319
14320 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * class.c (mono_class_get_exception_for_failure): Fix a warning.
14323
14324         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
14325         return values. Fixes #77581.
14326
14327         * class.c (mono_fnptr_class_get): Switch name and name_space.
14328
14329         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
14330         classes and add support for [In, Out] attributes.
14331         (mono_marshal_free_asany): Ditto. Fixes #77524.
14332
14333 2006-02-18  Raja R Harinath  <harinath@gmail.com>
14334
14335         * class.c (mono_class_from_generic_parameter): Make more robust to
14336         incomplete MonoGenericContainers from monodis.
14337
14338 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14339
14340         * class-internals.h: added some more exception types.
14341         * class.c, metadata.c: added a few checks to handle missing
14342         types.
14343
14344 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14345
14346         Use owner-less generic-params some more.
14347         * class.c (my_mono_class_from_generic_parameter): Remove.
14348         (mono_class_from_generic_parameter): Handle null image,
14349         param->name and param->owner.
14350         (mono_class_from_mono_type): Update.
14351         (mono_class_create_from_typespec): Remove 'container' parameter.
14352         If that parameter is non-null, the result is always inflated by
14353         'mono_class_get_full' anyway.
14354         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
14355         parameter.
14356         (mono_class_get_full): Update.
14357
14358         * class.c (inflate_generic_type) [GENERICINST]: If the generic
14359         instance is not open, don't bother inflating.
14360         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
14361         parse metadata for inflated classes.
14362         (_mono_class_get): Change GenericContext* parameter to
14363         GenericContainer*.
14364         (mono_class_create_from_typespec): Likewise.  Simplify, and
14365         implement trivially.  All the cases are handled in
14366         mono_class_from_mono_type.  Don't inflate returned class.
14367         (mono_class_get_full): Delegate GENERICINST optimization to
14368         inflate_generic_type.
14369         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
14370
14371 2006-02-16  Dick Porter  <dick@ximian.com>
14372
14373         * socket-io.c (create_object_from_sockaddr): Fix typo.
14374         (create_sockaddr_from_object): Check array lengths before
14375         potentially accessing items off the end.
14376         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
14377         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
14378         (ves_icall_System_Net_Sockets_Socket_Send_internal)
14379         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
14380         length checks to avoid wraparound overflows.
14381         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
14382         contents of the array of sockets
14383         (hostent_to_IPHostEntry2)
14384         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
14385         Check return value of inet_ntop ().
14386         (addrinfo_to_IPHostEntry): Fix typo
14387
14388 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14389
14390         Type metadata parsing doesn't use generic-instantiation information.
14391         * metadata.c (mono_metadata_parse_array_full): Change
14392         MonoGenericContext* parameter to MonoGenericContainer*.
14393         (mono_metadata_parse_type_full): Likewise.
14394         (mono_type_create_from_typespec_full): Likewise.
14395         (mono_metadata_parse_mh_full): Likewise.
14396         (mono_metadata_parse_generic_inst): Likewise.
14397         (do_mono_metadata_parse_generic_class): Likewise.
14398         (do_mono_metadata_parse_type): Likewise.
14399         * metadata-internals.h: Update to changes.
14400         * class.c (mono_class_find_enum_basetype): Likewise.
14401         (mono_class_setup_fields): Likewise.
14402         (mono_class_create_from_typespec): Likewise.
14403         * loader.c (method_from_methodspec): Likewise.
14404         (mono_get_method_from_token): Likewise.
14405         (mono_method_get_header): Likewise.
14406
14407 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14408
14409         * marshal.c: handle additional GENERICINST case (patch from
14410         Thong Nguyen <tum@veridicus.com>).
14411         Fix a few cases where LDIND_I/STIND_I was used for references.
14412
14413 2006-02-16  Raja R Harinath  <rharinath@novell.com>
14414
14415         * reflection.c (mono_reflection_get_token): Remove unused variable.
14416
14417 2006-02-16  Martin Baulig  <martin@ximian.com>
14418
14419         * reflection.c (mono_reflection_get_token): Add support for fields
14420         in instantiated generic types.
14421
14422         * icall.c
14423         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
14424
14425 2006-02-15  Martin Baulig  <martin@ximian.com>
14426
14427         * icall.c
14428         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
14429         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
14430         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
14431         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
14432
14433 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14434
14435         * class.c, metadata.c, metadata.h, object.c, icall.c,
14436         marshal.c: changed mono_type_get_underlying_type () to do
14437         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
14438         Fixed handling of instantiated generic valuetypes (bug #75479).
14439
14440 2006-02-15  Raja R Harinath  <rharinath@novell.com>
14441
14442         * metadata.c (mono_metadata_decode_signed_value): Simplify.
14443         Delegate to mono_metadata_decode_value, and work on the returned value.
14444
14445         * icall.c (ves_icall_MonoType_GetGenericArguments):
14446         Add consistency check here too.
14447         
14448 2006-02-15  Ankit Jain  <jankit@novell.com>
14449
14450         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
14451         char/short etc.
14452
14453 2006-02-15  Ankit Jain  <jankit@novell.com>
14454
14455         * metadata.c (mono_metadata_decode_signed_value): New function to decode
14456         signed values, used only for representing lower bounds of arrays.
14457         (mono_metadata_parse_array_full): Use new
14458         mono_metadata_decode_signed_value to decode lower bounds.
14459
14460 2006-02-14  Martin Baulig  <martin@ximian.com>
14461
14462         * reflection.c
14463         (mono_reflection_get_token): Support "MonoGenericMethod" and
14464         "MonoGenericCMethod" and allow generic instances / methods.
14465
14466 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14467
14468         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
14469         to obtain the terminal size using an ioctl.
14470
14471         * object.c (mono_nullable_init): Revert this as nullable reference
14472         types are not valid.
14473         (mono_nullable_box): Ditto.
14474
14475 2006-02-09  Dick Porter  <dick@ximian.com>
14476
14477         * threads.c (mono_thread_detach): Drop a reference to the thread
14478         we're detaching.
14479
14480 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14481
14482         * object.c (mono_nullable_init): Handle nullable reference types.
14483         (mono_nullable_box): Ditto. Fixes #77446.
14484
14485 2006-02-07  Martin Baulig  <martin@ximian.com>
14486
14487         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
14488
14489 2006-02-07  Ankit Jain  <jankit@novell.com>
14490
14491         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
14492         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
14493         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
14494         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
14495         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
14496         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
14497
14498 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * class.c (mono_class_create_generic): Set type_token as well.
14501
14502         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
14503         compatible with MS.
14504
14505 2006-02-02  Martin Baulig  <martin@ximian.com>
14506
14507         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
14508         has never been used so far.
14509
14510 2006-02-02  Martin Baulig  <martin@ximian.com>
14511
14512         * mono-debug-debugger.h: Changed comment at the top of this file;
14513         the header is not installed, but it's safe to #include it from
14514         within the JIT.
14515
14516         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
14517         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
14518
14519 2006-02-02  Martin Baulig  <martin@ximian.com>
14520
14521         * mono-debug.h
14522         (MonoSymbolTable): Removed the `metadata_info' field.
14523
14524         * mono-debug.c
14525         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
14526
14527         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14528         (mono_debugger_add_builtin_types): Removed.
14529         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
14530         (mono_debugger_create_notification_function): We now operate on a
14531         pre-allocated area; take a `gpointer' and return `void'.
14532
14533         * mono-debug-debugger.c
14534         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
14535         (mono_debugger_add_builtin_types): Removed.
14536
14537 2006-02-02  Martin Baulig  <martin@ximian.com>
14538
14539         * threads.c (mono_debugger_create_all_threads): New public method.
14540
14541 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14542
14543         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
14544         breaks on several platforms.
14545
14546 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
14547
14548         * assembly.c: the VS.NET build doesn't supply default values for
14549         MONO_ASSEMBLIES and MONO_CFG_DIR.
14550
14551 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
14554         helper function.
14555
14556         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
14557
14558         * loader.c (method_from_memberref): Fix a warning.
14559
14560         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
14561
14562         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
14563         with explicit layout. Fixes #77433.
14564
14565 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14566
14567         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
14568         max_interface_id is initialized before using it. Fixes #77398.
14569         (ves_icall_Type_GetInterfaces): Ditto.
14570
14571 2006-01-30  Raja R Harinath  <rharinath@novell.com>
14572
14573         * metadata.c (mono_metadata_parse_method_signature_full): Don't
14574         allocate memory for parameter attributes when parsing memberref
14575         signatures.
14576         * loader.c (mono_loader_set_error_method_load): Don't warn.
14577         (method_from_memberref): Ensure MissingMethodException gets thrown
14578         if method is not found.  Make warning more informative.
14579
14580 2006-01-29  Raja R Harinath  <harinath@gmail.com>
14581
14582         Fix #77397
14583         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
14584         return true if is byref.
14585         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
14586         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
14587         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
14588
14589 2006-01-27  Raja R Harinath  <rharinath@novell.com>
14590
14591         Fix tests/find-method.2.il
14592         * loader.c (find_method, find_method_in_class): Remove is_inflated
14593         argument.  Revert 2006-01-18 change.
14594         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
14595         is generic, search for method in its generic definition.
14596         * class.c (mono_class_setup_vtable_general): Print generic
14597         arguments of generic types in debugging printf.
14598
14599 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
14602
14603         * threads.c (mono_threads_request_thread_dump): New helper function.
14604
14605 2006-01-25  Raja R Harinath  <rharinath@novell.com>
14606
14607         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
14608
14609 2006-01-25  Ankit Jain  <jankit@novell.com>
14610
14611         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
14612         move definition to ..
14613         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
14614         
14615 2006-01-25  Ankit Jain  <jankit@novell.com>
14616             Raja R Harinath  <rharinath@novell.com>
14617
14618         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
14619         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
14620         as necessary.
14621
14622 2006-01-25  Martin Baulig  <martin@ximian.com>
14623
14624         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
14625         `MonoDebuggerThread' into debug-debugger.c.
14626
14627 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14628
14629         * profiler.c: fix printing of data.
14630
14631 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
14632
14633         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
14634           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
14635
14636 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14637
14638         * object.c: fix deadlock related to string interning.
14639
14640 2006-01-23  Martin Baulig  <martin@ximian.com>
14641
14642         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
14643
14644         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
14645
14646 2006-01-23  Martin Baulig  <martin@ximian.com>
14647
14648         * mono-debug.h: Moved the prototypes of some functions which are
14649         used by the JIT here from mono-debug-debugger.h.
14650
14651 2006-01-21  Martin Baulig  <martin@ximian.com>
14652
14653         * Makefile.am: Don't install mono-debug-debugger.h.
14654
14655 2006-01-21  Martin Baulig  <martin@ximian.com>
14656
14657         * mono-debug-debugger.h: Enforce the private status of this header
14658         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
14659         Moved some stuff from mono-debugger-jit-wrapper.h here.
14660
14661 2006-01-20  Raja R Harinath  <rharinath@novell.com>
14662
14663         * class.c (mono_class_from_typeref): Add a sanity test to help
14664         catch lack of assembly load/search hooks.
14665
14666 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
14667
14668         * marshal.c (emit_struct_conv): Relax the fields with same offset
14669         check even more. Fixes #77230.
14670
14671 2006-01-18  Martin Baulig  <martin@ximian.com>
14672
14673         * loader.c (find_method_in_class): Added `gboolean is_inflated'
14674         argument; if false, we compare the uninstantiated signatures.
14675         (method_from_memberref): Compare the uninstantiated signatures;
14676         fixes #76417.
14677
14678 2006-01-18  Robert Jordan  <robertj@gmx.net>
14679
14680         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
14681         Clear the weak link. Fixes bug #77170.
14682
14683         * gc.c (mono_gchandle_free):
14684         Reflect *-gc.c changes (tiny optimization).
14685
14686 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
14687
14688         * metadata.c (mono_metadata_signature_dup): Applied patch from
14689         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
14690         Fixes #77288.
14691
14692 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14693
14694         * marshal.c (emit_struct_conv): Allow fields with the same offset when
14695         marshalling from native to managed code. Fixes #77230.
14696
14697 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14698
14699         * threadpool.c: fix problem (Mac only) when more than one asynchronous
14700         connect. Fixes bug #77020.
14701
14702 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14703
14704         * class.c: fixed id assignement for nested interfaces (bug #77275).
14705         Added also better info for --print-vtable debugging.
14706
14707 2006-01-12  Martin Baulig  <martin@ximian.com>
14708
14709         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
14710         interfaces on-the-fly; fixes #76625.
14711
14712         * class-internals.h
14713         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
14714         don't need that anymore.
14715
14716 2006-01-12  Miguel de Icaza  <miguel@novell.com>
14717
14718         * socket-io.c
14719         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14720         To avoid initing the nested_classes when not needed I turned the
14721         PeerCredData as a toplevel internal class, as it has to be shared
14722         anyways. 
14723
14724         Fixes the CASA issue.
14725
14726 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14727
14728         * domain.c: Accessors for MonoJitInfo
14729
14730         * profiler-private.h: Add jitinfo to the end jit hook
14731
14732         * profiler.[ch]: Define new hooks, called after jitting which give
14733         the MonoJitInfo that was compiled
14734
14735 2006-01-10  Martin Baulig  <martin@ximian.com>
14736
14737         * class.c (mono_class_setup_events): Add support for generic
14738         classes; fixes #76440.
14739
14740 2006-01-06  Raja R Harinath  <rharinath@novell.com>
14741
14742         Fix #77160.
14743         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
14744         on passed-in method.
14745
14746 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * object.c (mono_runtime_invoke_array): Add Nullable support.
14749
14750         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
14751
14752 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
14753
14754         * file-io.c: Don't consider sockets as directory and avoid an endless
14755         loop. Fix bug #76966.
14756
14757 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * object.c (mono_nullable_init): New helper function.
14760         (mono_nullable_box): Ditto.
14761
14762         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
14763
14764         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
14765
14766         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
14767         
14768 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
14769
14770         * class.c (mono_class_is_assignable_from): Make T assignable to 
14771         Nullable<T>.
14772
14773 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
14774
14775         * appdomain.c: Bump corlib version to 46.
14776         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
14777         serialization purpose) and changed ves_icall_System_Reflection_
14778         Assembly_get_code_base signature to accept a boolean (to escape, or 
14779         not, the assembly code base).
14780
14781 2005-12-23  Dick Porter  <dick@ximian.com>
14782
14783         * icall.c: 
14784         * threads-types.h: 
14785         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
14786         CreateEvent icall now returns "created" boolean parameter.
14787
14788 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14789
14790         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
14791         #76967.
14792
14793         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
14794         when attr_klass is an interface. Fixes #77045.
14795
14796 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * marshal.c (emit_struct_conv): Fix previous patch.
14799         
14800         * marshal.c (emit_struct_conv): Add a check for fields with the same
14801         offset.
14802
14803 2005-12-20  Raja R Harinath  <rharinath@novell.com>
14804
14805         Fix regression in Mono.C5.
14806         * class.c (mono_class_create_generic): If 'klass' is an interface
14807         set up the interface offsets.
14808         (mono_class_is_assignable_from): Don't throw away generic arguments.
14809
14810 2005-12-19  Raja R Harinath  <rharinath@novell.com>
14811
14812         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
14813         type parameters.
14814
14815 2005-12-15  Raja R Harinath  <rharinath@novell.com>
14816
14817         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
14818         dead store.
14819         (do_mono_metadata_parse_generic_class): Don't pass the current
14820         generic context when parsing the type being instantiated: it
14821         cannot use it, anyway.
14822
14823         * loader.c (method_from_memberref): Don't inflate a signature if
14824         it doesn't contain any type parameters.
14825
14826 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14827
14828         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
14829
14830 2005-12-14  Martin Baulig  <martin@ximian.com>
14831
14832         * class.c
14833         (mono_type_get_name_recurse): Don't return null for type
14834         parameters and open generic classes.
14835         (mono_class_setup_methods): Don't exclude generic instances.
14836         (mono_get_unique_iid): Use different IDs for different
14837         instantiations of the same generic type.
14838         (mono_class_setup_vtable): Only use setup_generic_vtable() for
14839         open generic instances; create a normal vtable for closed generic
14840         instances.
14841         (mono_class_setup_vtable_general): We're now also called for
14842         closed generic instances.
14843
14844         * reflection.c
14845         (mono_reflection_bind_generic_parameters): Correctly use
14846         mono_metadata_lookup_generic_inst() everywhere.
14847
14848 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
14849
14850         * object.c (mono_class_create_runtime_vtable): Call 
14851         mono_class_setup_vtable ().
14852
14853         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
14854         function.
14855         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
14856         #76959.
14857
14858         * loader.c (mono_loader_set_error_type_load): Print the type load
14859         warnings to the console so they are more visible to the user.
14860         (mono_loader_set_error_method_load): Ditto.
14861
14862         * reflection.c (ensure_runtime_vtable): Revert the last change as it
14863         is still broken.
14864         
14865         * reflection.c (ensure_runtime_vtable): Fix build.
14866
14867         * reflection.c (ensure_runtime_vtable): Disable an optimization which
14868         doesn't work in all cases.
14869
14870 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
14871
14872         * object.c (mono_array_new_full): Treat a single dimensional array
14873         with 0 lower bounds as an szarray. Fixes #76973.
14874
14875         * reflection.c (custom_attr_visible): Really fix this.
14876
14877 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
14878
14879         * reflection.c (custom_attr_visible): Allow nested public attributes
14880         as well.
14881
14882         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
14883         interface check.
14884
14885 2005-12-12  Raja R Harinath  <harinath@gmail.com>
14886
14887         * class.c (set_generic_param_owner): Delete.
14888         (mono_class_create_from_typedef): Don't set ->owner field of
14889         generic parameters to "param containers" of enclosing classes.
14890         * reflection.c (mono_reflection_initialize_generic_parameter):
14891         Likewise.
14892
14893 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * reflection.c (custom_attr_visible): Fix build.
14896
14897 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
14900         private attributes.
14901         
14902         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
14903         handling of null parameter defaults.
14904
14905 2005-12-09  Raja R Harinath  <rharinath@novell.com>
14906
14907         * class.c (mono_class_from_generic_parameter): Don't set
14908         klass->generic_container.
14909         (my_mono_class_from_generic_parameter): Likewise.
14910
14911 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14912
14913         * reflection.c (load_public_key): Fix a warning.
14914         (method_encode_code): Fix unaligned accesses.
14915
14916 2005-12-07  Martin Baulig  <martin@ximian.com>
14917
14918         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
14919
14920         * reflection.c
14921         (write_generic_param_entry): Encode our custom attrs.
14922
14923         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
14924
14925 2005-12-07  Martin Baulig  <martin@ximian.com>
14926
14927         * reflection.c (encode_new_constraint): Removed; we don't use the
14928         `NewConstraintAttribute' anymore.
14929
14930 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
14933         not fire a TypeResolve event when Assembly.GetType () is called.
14934
14935 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14936
14937         Beginning of support for nullable types in the runtime. Parts of
14938         this patch are from Martin.
14939
14940         * appdomain.c (MONO_CORLIB_VERSION): Bump
14941
14942         * domain.c (mono_init_internal): get the nullable type
14943
14944         * class.c (mono_class_is_nullable): New method
14945         (mono_class_get_nullable_param): New mehod
14946         (mono_class_create_generic): In types T? set cast_class to T
14947
14948         * class-internals.h (MonoDefaults): new nullable default class
14949         (mono_class_get_nullable_param, mono_class_get_nullable_param):
14950         new methods.
14951
14952 2005-12-05  Raja R Harinath  <rharinath@novell.com>
14953
14954         * metadata.c (select_container): New.  Refactor code to select the
14955         appropriate GenericContainer given the type of generic parameter
14956         we are looking for.
14957         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
14958         not a MonoGenericContext.  Use select_container.  Update parameters.
14959         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
14960         and MONO_TYPE_MVAR.
14961         (unwrap_arrays): Remove duplicate tests.
14962         (find_generic_param): Rename from 'has_same_context'.  Now walks a
14963         generic instantiated class to find any arguments that are generic
14964         parameters.
14965         (mono_type_create_from_typespec_full): Use find_generic_param to
14966         avoid evicting some generic instantiations from the typespec
14967         cache.
14968
14969 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
14970
14971         * reflection.c: fixed writing of doubles on ARM FPA.
14972
14973 2005-12-02  Robert Jordan  <robertj@gmx.net>
14974
14975         * icall.c: Fixed EventInfo.ReflectedType (#76829).
14976
14977 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14978
14979         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
14980         least on SUSE 10 they are not the same (on debian, they are just the
14981         same thing).
14982
14983 2005-12-01  Raja R Harinath  <rharinath@novell.com>
14984
14985         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
14986         DeclaringType for VARs and MVARs.
14987         * class.c (set_generic_param_owner): Fix initialization of owner
14988         fields.
14989
14990 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14991
14992         * icall.c: fixed Enum.ToObject() to correctly convert the values.
14993
14994 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14995
14996         * threadpool.c: workaround for a bug that shows up on the Mac:
14997         select()+connect() on a blocking socket is not like it should
14998         be, so we proceed to connect() in that case, wasting the I/O
14999         threadpool thread until connect succeedes. Fixes bug #75436.
15000
15001 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15002
15003         * threadpool.c: fix typo when setting file descriptor states.
15004
15005 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15006
15007         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
15008         * metadata.c (mono_metadata_parse_method_signature_full): Don't
15009         create a temporary signature container.
15010         (mono_metadata_parse_generic_param): Update to changes.
15011         (mono_type_create_from_typespec_full): Update to changes.
15012         * loader.c (method_from_memberref): Don't use a
15013         MonoGenericContainer while parsing a memberref signature.
15014         (method_from_methodspec): Remove dead-store of the 'container'
15015         variable.  It's overwritten before use.
15016
15017         * metadata.c (mono_type_create_from_typespec_full): Make debugging
15018         checks tighter.
15019         (mono_metadata_parse_generic_param): Likewise.
15020         * loader.c (find_method_in_class): Does not need a
15021         MonoGenericContainer.  Use 'mono_method_signature' rather than
15022         'mono_method_signature_full'.
15023         (find_method, mono_get_method_constrained, method_from_memberref):
15024         Update to changes.
15025
15026         * metadata.c (mono_type_create_from_typespec_full): Ensure that
15027         owner-less generic-parameters are never evicted from the typespec
15028         cache.
15029
15030         * loader.c (method_from_memberref): Don't use the current context
15031         when parsing signatures.
15032         (method_from_methodspec, mono_get_method_from_token): Update to changes.
15033
15034         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
15035         side-effects in g_assert.
15036         * loader.c (mono_get_method_from_token): Resolve klass earlier so
15037         that we don't potentially lose information.
15038
15039 2005-11-26  Dick Porter  <dick@ximian.com>
15040
15041         * icall.c:
15042         * threads.c: icalls to implement basic (ie, not named)
15043         System.Threading.Semaphore.
15044
15045 2005-11-24  Dick Porter  <dick@ximian.com>
15046
15047         * process.c
15048         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
15049         Use GetProcessId() if it's available.
15050
15051 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
15052
15053         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
15054
15055 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15056             Ankit Jain  <jankit@novell.com>
15057
15058         * loader.c (mono_get_method_from_token): Initialize 'method' field
15059         of all generic parameters before parsing the signature.  Remove
15060         code that "fixed"-up MVAR references.
15061
15062 2005-11-23  Ankit Jain  <jankit@novell.com>
15063
15064         * metadata.c (mono_metadata_has_generic_params):
15065         (mono_metadata_load_generic_param_constraints):
15066         (mono_metadata_load_generic_params): Move duplicate code ...
15067         (mono_metadata_get_generic_param_row): ... here. Returns the
15068         first row-id in GenericParam table for a given owner (token).
15069         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
15070         prototype.
15071
15072 2005-11-23  Raja R Harinath  <rharinath@novell.com>
15073             Ankit Jain  <jankit@novell.com>
15074
15075         * metadata.c (mono_metadata_class_equal): Pass signature_only when
15076         comparing VARs too.
15077         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
15078         type->data.generic_param only if the type is an MVAR.
15079         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
15080         leak owner-less VARs and MVARs into managed space.
15081
15082 2005-11-21  Martin Baulig  <martin@ximian.com>
15083
15084         * class-internals.h
15085         (MonoMethod): Moved the `generic_container' here from
15086         `MonoMethodNormal' since we now also need it for
15087         `MonoMethodPInvoke';
15088         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
15089         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
15090         an union containing both `MonoMethodNormal' and
15091         `MonoMethodPInvoke'.
15092
15093         * loader.c
15094         (mono_get_method_from_token): Allow implementing generic methods
15095         as interncalls.
15096
15097         * threads.c
15098         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
15099         icall.
15100
15101 2005-11-17  Dick Porter  <dick@ximian.com>
15102
15103         * icall.c: 
15104         * process.h: 
15105         * process.c: Split the Process Start_internal icall into
15106         ShellExecuteEx_internal and CreateProcess_internal, which are
15107         called depending on whether UseShellExecute is true.  Fixes bug
15108         76670.
15109
15110         * appdomain.c (MONO_CORLIB_VERSION): Incremented
15111
15112 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
15115         'msize' parameters, use the information in 'mspec' instead.
15116         (emit_object_to_ptr_conv): Ditto.
15117
15118         * marshal.c (emit_struct_conv): Handle explicit layout structs with
15119         fields out of order. Fixes #76733.
15120
15121 2005-11-17  Ankit Jain  <jankit@novell.com>
15122
15123         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
15124
15125 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
15126
15127         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
15128           bug #76575.
15129
15130 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
15133         for types with non-auto layout. Fixes #76717.
15134
15135 2005-11-16  Ankit Jain  <jankit@novell.com>
15136
15137         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
15138         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
15139         if generic_context is null.
15140           (mono_metadata_generic_param_equal): param->owner can be null.
15141           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
15142         null.
15143
15144 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
15145
15146         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
15147         the correct value.
15148
15149 2005-11-15  Martin Baulig  <martin@ximian.com>
15150
15151         * object.c (set_value): Use mono_class_from_mono_type() instead of
15152         the hack for generic instances; fixes #76136.
15153
15154 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
15155
15156         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
15157         fields.
15158
15159         * image.c (load_metadata_ptrs): Initialize the new fields.
15160
15161         * reflection.c (create_dynamic_mono_image): Ditto.
15162
15163         * reflection.c (build_compressed_metadata): Use the new fields.
15164
15165         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
15166         icall.
15167
15168         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
15169         icall.
15170         
15171 2005-11-15  Ankit Jain  <jankit@novell.com>
15172             Raja R Harinath  <harinath@gmail.com>
15173
15174         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
15175         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
15176         new per-generic_container cache if the cached MonoType's context matches
15177         the current context.
15178           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
15179         to the expected context.
15180           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
15181
15182 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15183
15184         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
15185         we changed the signature of an icall.
15186         * icall.c: Modify to mono_double_ParseImpl return true/false 
15187         depending on the success, instead of throwing the exception. This will
15188         help us in Double.TryParse methods.
15189         
15190 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
15191
15192         * marshal.c (emit_marshal_object): Throw an exception when
15193         marshalling 'object' instead of crashing. Fixes #76696.
15194
15195 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * class-internals.h: Add prototype for mono_type_get_full_name ().
15198
15199 2005-11-11  Dick Porter  <dick@ximian.com>
15200
15201         * threads.c (mono_thread_manage): Make sure the main thread has
15202         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
15203
15204 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15205
15206         * loader.c (mono_loader_set_error_type_load): Log a warning to the
15207         console about the missing type.
15208         (mono_loader_set_error_method_load): Ditto.
15209
15210 2005-11-09  Miguel de Icaza  <miguel@novell.com>
15211
15212         * mono-config.c (mono_get_config_dir): Set the system defaults if
15213         none is specified.
15214
15215         * assembly.c (mono_set_dirs): New API entry point to set the
15216         assembly and the config directory in one call
15217
15218 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
15221         the ftnptr was created from a delegate in a domain other than the
15222         current domain. Fixes #75377.
15223
15224         * exception.h exception.c: Add mono_get_exception_not_supported ().
15225
15226 2005-11-08  Martin Baulig  <martin@ximian.com>
15227
15228         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
15229
15230 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
15231
15232         * security-manager.h: Added definitions to deal with strongname key 
15233         pairs bigger (and smaller) than 1024 bits.
15234         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
15235         adjust wrt the public key length being used.
15236
15237 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
15238
15239         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
15240           Windows build (r51396-51397).
15241
15242 2005-11-03  Martin Baulig  <martin@ximian.com>
15243
15244         * class.c (mono_class_setup_vtable_general): Also add generic
15245         methods to the vtable; fixes #76581.
15246
15247 2005-11-01  Miguel de Icaza  <miguel@novell.com>
15248
15249         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
15250         sure that we lookup GetString method from the System.Text.Encoding
15251         class, not the derived class or we get an empty method.
15252
15253         Fixed class #76612.
15254
15255 2005-10-25  Miguel de Icaza  <miguel@novell.com>
15256
15257         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
15258         if it has been previously set (embedders). 
15259
15260         Make mono_set_rootdir available also on Unix.
15261
15262 005-10-24  Robert Jordan  <robertj@gmx.net>
15263
15264         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
15265
15266 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15267
15268         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
15269         only calls which are made to native code use this flag.
15270
15271         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
15272
15273 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15274
15275         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
15276         Add support for FieldBuilders.
15277
15278 2005-10-29  Martin Baulig  <martin@ximian.com>
15279
15280         * mono-debug.c
15281         (mono_debug_using_mono_debugger): New public method; returns
15282         whether we're running inside the debugger.
15283
15284 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
15285
15286         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
15287         for Method/Constructor/FieldBuilders.
15288
15289 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15290
15291         * reflection.c (module_add_cattrs): Save custom attributes for global methods
15292         and fields as well.
15293
15294 2005-10-26  Martin Baulig  <martin@ximian.com>
15295
15296         * mono-debug-debugger.c
15297         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
15298
15299 2005-10-24  Raja R Harinath  <harinath@gmail.com>
15300
15301         * icall.c (base64_to_byte_array): Don't pass an out-of-range
15302         integer to isspace.
15303
15304 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15305
15306         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
15307         when passing valuetypes byref. Fixes #76502.
15308
15309 2005-10-19  Jackson Harper  <jackson@ximian.com>
15310
15311         * profiler.c: Don't put a . in front of types that are not in a
15312         namespace.
15313
15314 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15315
15316         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
15317
15318 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
15319
15320         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
15321         #76436.
15322         (mono_marshal_get_ldflda_wrapper): Fix a warning.
15323
15324 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15325
15326         * assembly.c metadata-internals.h icall.c: Define an additional
15327         parameter for mono_assembly_name_parse_full, so we can avoid creating
15328         S.R.AssemblyName.Version when no version info wasn't passed.
15329         
15330 2005-10-09  Miguel de Icaza  <miguel@novell.com>
15331
15332         * class.c (mono_type_get_full_name): Reimplement method that was
15333         removed. 
15334
15335         * image.c: Some docs
15336
15337 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15338
15339         * profiler.c (output_newobj_profile): Fix printing of Total memory
15340         on x86.
15341
15342 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15343
15344         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
15345
15346 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
15347
15348         * threads.c: remove debug output.
15349
15350 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15351
15352         * threads.c (mono_thread_manage): Fix crashes if more than 64
15353         threads need to be aborted. Hopefully fixes #75899.
15354
15355         * assembly.c (mono_stringify_assembly_name): New helper function.
15356
15357         * class.c: Use mono_stringify_assembly_name instead of the similar
15358         static function.
15359
15360         * assembly.h assembly.c: Add support for calling a postload search 
15361         hook if an assembly cannot be loaded.
15362
15363         * appdomain.c: Register new search hooks which call the AssemblyResolve
15364         events in AppDomain. Fixes #75231
15365
15366 2005-10-07  Martin Baulig  <martin@ximian.com>
15367
15368         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
15369         methods without debug info.
15370
15371 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15372
15373         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
15374         wrappers.
15375
15376 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15377
15378         * file-io.c: now that we return symlinks, use lstat and, when the file
15379         is a symbolic link, stat, to get the file attributes. Also avoid the
15380         conversion to/from utf16/external.
15381
15382 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
15383
15384         * class.c (mono_class_layout_fields): Compute klass->has_references
15385         correctly if an embedded valuetype is not yet initialized. Fixes
15386         #76331.
15387
15388 2005-10-04  Martin Baulig  <martin@ximian.com>
15389
15390         * metadata.c
15391         (mono_metadata_load_generic_param_constraints): New public
15392         function; splitted the constraints loading out from
15393         mono_metadata_load_generic_params().
15394
15395         * class.c (mono_class_create_from_typedef): Call
15396         mono_metadata_load_generic_param_constraints() after setting up
15397         the type and creating our parent; fixes #75329.
15398
15399 2005-10-04  Martin Baulig  <martin@ximian.com>
15400
15401         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
15402         non-dynamic parent classes.
15403
15404 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
15405
15406         * file-io.c : win32 build fix (ETXTBSY seems not found).
15407
15408 2005-10-04  Martin Baulig  <martin@ximian.com>
15409
15410         * reflection.c
15411         (mono_image_get_methodspec_token): Make the cache actually work;
15412         fixes #75974.
15413
15414 2005-10-04  Martin Baulig  <martin@ximian.com>
15415
15416         * class.c (mono_class_name_from_token): Removed the unneccessary
15417         `MonoGenericContext *' argument.
15418
15419 2005-10-04  Martin Baulig  <martin@ximian.com>
15420
15421         * loader.c
15422         (method_from_methodspec): Make the caching work again; fixes the
15423         performance regression from #76262.
15424
15425 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15426
15427         * file-io.c:
15428         * file-io.h:
15429         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
15430         GetFileSystemEntries that performs the same work but without going
15431         into io-layer, locking, etc.
15432
15433 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15434
15435         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
15436         ThreadState_Stopped as well. Fixes #76047.
15437
15438 2005-09-29  Martin Baulig  <martin@ximian.com>
15439
15440         * class.c
15441         (inflate_generic_context): If the new context has a `gmethod', set
15442         its `container' that that gmethod's `container'.
15443
15444         * metadata.c
15445         (mono_metadata_parse_generic_param): Simplify things;
15446         `generic_container = generic_context->container;' is just fine.
15447
15448         * loader.c (method_from_methodspec): Code cleanups.
15449
15450 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
15451
15452         * decimal.c: fix warning (and let gcc generate correct
15453         code on ARM with optimizations).
15454
15455 2005-09-28  Martin Baulig  <martin@ximian.com>
15456
15457         * loader.c
15458         (method_from_memberref): Added `MonoGenericContext *class_context'
15459         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
15460         (method_from_methodspec): If we're a memberref, use the enclosing
15461         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
15462
15463 2005-09-28  Martin Baulig  <martin@ximian.com>
15464
15465         * object.c (mono_runtime_invoke_array): Added support for
15466         MONO_TYPE_GENERICINST; fixes #75917.
15467
15468 2005-09-27  Martin Baulig  <martin@ximian.com>
15469
15470         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
15471         `k->byval_arg.type' to determine the actual type.
15472
15473         * loader.c (method_from_methodspec): Removed some hacks.
15474
15475 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15476
15477         * class-internals.h (mono_field_is_deleted): Do the test for
15478         rtspecialname before we check the actual name of the field. This
15479         prevents us from dereferencing a pointer into the string table,
15480         saving us from accessing a few pages
15481
15482         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15483         macros. This will allow a deadlock debugger to easily be plugged
15484         in.
15485
15486 2005-09-27  Martin Baulig  <martin@ximian.com>
15487
15488         * loader.c (method_from_methodspec): Create a "signature"
15489         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
15490
15491 2005-09-27  Martin Baulig  <martin@ximian.com>
15492
15493         * class.c
15494         (inflate_generic_class): Correctly set the new context's
15495         container.
15496
15497         * loader.c
15498         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
15499         instead of a `MonoGenericContext *'.
15500         (mono_method_signature_full): Take a `MonoGenericContainer *'
15501         instead of a `MonoGenericContext *'.
15502
15503         * metadata.c
15504         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
15505         instead of a `MonoGenericContext *'.
15506         (mono_metadata_parse_method_signature_full): Likewise.
15507
15508 2005-09-26  Martin Baulig  <martin@ximian.com>
15509
15510         * class.c
15511         (mono_class_from_generic_parameter): Set `klass->generic_container'
15512         (mono_class_from_generic_parameter): Likewise.
15513         (mono_bounded_array_class_get): We inherit the generic container
15514         from the element class.
15515
15516         * loader.c
15517         (find_method, find_method_in_class): Take a `MonoGenericContext *'
15518         argument rather than computing it here.
15519         (method_from_memberref): Correctly set the generic context before
15520         parsing the signature.  Fixes #75681.
15521
15522 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15523
15524         * object.c (mono_class_has_special_static_fields): Fix warnings.
15525
15526 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15527
15528         * assembly.c: Add parse_public_key function, to
15529         par the public keys. Also added mono_assembly_name_parse_full,
15530         to define it the parsed key should be freed or not.
15531         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
15532         to parse a long format assembly name.
15533         * metadata-internals.h: Keep mono_assembly_name_parse_full as
15534         private, since calling it to preserve the key requires
15535         freeing it manually.
15536         
15537 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
15538
15539         * locales.c : removed HAVE_ICU part.
15540
15541 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15542
15543         * object.c (mono_class_create_runtime_vtable): Avoid calling 
15544         field_is_special_static if the klass has no special static fields.
15545
15546         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
15547         (MonoCachedClassInfo): Likewise.
15548
15549         * object.c (mono_class_has_special_static_fields): New helper function.
15550
15551 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15552
15553         * class.c (mono_class_create_from_typedef): Don't call 
15554         interfaces_from_typedef_full for enums.
15555         (mono_class_create_from_typedef): Compute the base types of enums directly
15556         without calling mono_class_setup_fields ().
15557         (mono_class_find_enum_basetype): New helper function.
15558
15559         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
15560         one place inside the string heap.
15561         
15562 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
15563
15564         * class.c: locking fixes, code cleanups, some docs added.
15565         Allocate some data structures in the image mempool.
15566
15567 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15568
15569         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15570         the example code.
15571         
15572 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
15573
15574         * class-internals.h, class.c, reflection.c: reduce memory taken by
15575         MonoClass.
15576
15577 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
15578
15579         * metadata.c, metadata.h, loader.h: documentation updates, code and
15580         API cleanups.
15581
15582 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
15585         the example code.
15586
15587         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
15588         page faults caused by the runtime while reading metadata.
15589
15590 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15591
15592         * socket-io.c: the field names were changed 3 months ago and no one
15593         realized until bug #76077 got filed!
15594
15595 2005-09-20  Martin Baulig  <martin@ximian.com>
15596
15597         * icall.c (assembly_icalls): Removed some unused debugger icalls.
15598
15599 2005-09-20  Martin Baulig  <martin@ximian.com>
15600
15601         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
15602         write the rank into the class entry.
15603
15604 2005-09-20  Martin Baulig  <martin@ximian.com>
15605
15606         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
15607
15608 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15611
15612         * icall.c (custom_attrs_defined_internal): New icall.
15613
15614         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
15615         function.
15616         (mono_custom_attrs_construct_by_type): New helper function.
15617
15618 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
15619
15620         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
15621         terminate the resulting string. Fixes #76123.
15622
15623 2005-09-16  Martin Baulig  <martin@ximian.com>
15624
15625         * mono-debug.c
15626         (mono_debug_add_method): Ignore inflated methods for the moment.
15627
15628 2005-09-14  Martin Baulig  <martin@ximian.com>
15629
15630         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
15631
15632 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
15633
15634         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
15635         return a success/failure indication.
15636         (mono_metadata_interfaces_from_typedef_full): Ditto.
15637         (get_constraints): Ditto.
15638
15639 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * marshal.c (emit_marshal_array): Fix handling of null arrays.
15642         
15643         * marshal.c (emit_marshal_array): Add support for returning string
15644         arrays from delegates. Fixes #76063.
15645
15646         * marshal.c: Use the emit_ldloc/stloc macros where possible.
15647
15648 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15649
15650         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
15651         icall.
15652
15653 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * reflection.c icall.c: Fix after mono_get_exception_type_load
15656         signature change.
15657
15658         * assembly.c (mono_assembly_get_assemblyref): New helper function.
15659         (mono_assembly_load_reference): Use the new helper.
15660
15661         * class-internals.h (MonoLoaderError): New structure containing 
15662         information about type loading errors.
15663
15664         * class-internals.h loader.c: Add APIs to store per-thread loader
15665         error information.
15666
15667         * loader.c class.c: Set the loader error if needed.
15668
15669         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
15670
15671 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
15672
15673         * decimal.c: fixed to handle the broken ARM fp format.
15674
15675 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
15676
15677         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
15678         broken.
15679
15680 2005-09-06  Martin Baulig  <martin@ximian.com>
15681
15682         * domain.c (supported_runtimes): Added v2.0.50727.
15683
15684 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
15685
15686         * culture-info.h: reduce the size of some structures.
15687
15688 2005-09-05  Martin Baulig  <martin@ximian.com>
15689
15690         Reflect latest API changes in the August CTP.
15691
15692         * icall.c
15693         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
15694         ("MonoType.HasGenericArguments"): Removed.
15695         ("MonoMethod.BindGenericParameters"): Renamed to
15696         "MakeGenericMethod".
15697         ("MethodBuilder.BindGenericParameters"): Renamed to
15698         "MakeGenericMethod".    
15699
15700 2005-09-05  Martin Baulig  <martin@ximian.com>
15701
15702         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
15703
15704 2005-09-05  Martin Baulig  <martin@ximian.com>
15705
15706         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15707
15708         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
15709         generic_container is non-NULL.
15710
15711 2005-09-05  Martin Baulig  <martin@ximian.com>
15712
15713         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15714
15715         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
15716
15717 2005-08-29  Michal Moskal  <malekith@nemerle.org>
15718
15719         * reflection.c (encode_locals,
15720         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
15721         for large generic types.
15722
15723 2005-09-05  Martin Baulig  <martin@ximian.com>
15724
15725         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15726
15727         * class.c (mono_dup_array_type): New public method.
15728         (mono_metadata_signature_deep_dup): New public method.
15729         (dup_type): Correctly duplicate array and function types.
15730
15731 2005-09-05  Martin Baulig  <martin@ximian.com>
15732
15733         Applying a patch from Michal Moskal <malekith@nemerle.org>.
15734
15735         * reflection.c (get_default_param_value_blobs): Handle generic types
15736         and generic methods.
15737
15738 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
15739
15740         * class.c: Fixed error reporting (method/class were inversed) for 
15741         inheritance demands.
15742         * security-manager.c|h: Added the AppDomain when calling the managed
15743         System.Security.SecurityManager.InheritanceDemand method.
15744
15745 2005-09-01  Raja R Harinath  <rharinath@novell.com>
15746
15747         * reflection.c (encode_marshal_blob): 'marshaltype' and
15748         'marshaltyperef' are alternate sources for the custom marshaler
15749         name.
15750
15751 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
15752
15753         * class.c: fix creation of array classes with rank == 1
15754         (patch by Ankit Jain <jankit@novell.com>).
15755
15756 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
15757
15758         * object.c: fix check for creating the bound data for arrays vs
15759         szarrays.
15760
15761 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15762
15763         * object.c: configuration file name is now based on the executable name,
15764         not the image name. Fixes bug #75931.
15765
15766 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15767
15768         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
15769         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
15770
15771 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15772
15773         * rand.c: Use wincrypt.h instead of WinCrypt.h.
15774
15775 2005-08-24  Ankit Jain  <jankit@novell.com>
15776             Raja R Harinath  <rharinath@novell.com>
15777
15778         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
15779           called by it recursively.
15780           (mono_class_init): Remove special case in pending_init handling, since it's
15781           superseded by the fix to mono_class_from_typeref.
15782
15783 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15784
15785         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
15786         BROKEN_THREAD_START stuff.
15787
15788 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15789
15790         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
15791         trampoline.
15792
15793         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
15794         
15795         * object.c (mono_delegate_ctor): Replace the original function address with
15796         a delegate trampoline.
15797
15798 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
15799
15800         * icall.c: add boolean argument to base64_to_byte_array and 
15801         InternalFromBase64String to control whether a whitespace-only string
15802         is allowed (or should casue a FormatException to be thrown). We need
15803         this as the behavior has changed between MS.NET 1.x and 2.0, and we
15804         to match the MS behaviour in both profiles.
15805         * appdomain.c: Bump corlib version.
15806
15807 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15808
15809         This patch implements a big portion of publisher policy
15810         support, used to bind assembly versions and redirect
15811         one assembly from version A to version B.
15812
15813         * assembly.c:
15814         New GSList loaded_assembly_bindings, for storing the cached
15815         assembly bindings.
15816         (assembly_binding_maps_name): New static function for checking if a 
15817         assembly binding information maps an assembly name.
15818         (mono_assembly_binding_info_free): New function for freeing
15819         assembly binding information resources.
15820         (get_publisher_policy_info): New static function for retrieving 
15821         assembly binding information from a MonoImage.
15822         (compare_versions): New static function for comparing an assembly
15823         binding information data and the version of an assembly name.
15824         (check_policy_versions): New static function for checking if an
15825         assembly binding info mapping an assembly name is valid for it.
15826         (mono_assembly_load_publisher_policy): New static function for
15827         loading the 'policy.major.minor.MyAssembly' image for an assembly
15828         with an assembly name 'aname'.
15829         (mono_assembly_bind_version): New static function for updating
15830         assembly redirection.
15831         (mono_assembly_apply_binding): New static function for applying
15832         assembly binding.
15833         (search_binding_loaded): New static function for searching 
15834         loaded assembly binding infos in the cache domain.
15835         (mono_assembly_load_full): Don't apply assembly binding for
15836         reflection only assemblies.
15837
15838         * metadata-internals.h: Add MonoAssemblyBindingInfo,
15839         which contains information about assembly binding. Also
15840         declare signature for mono_config_parse_publisher_policy ()
15841         function, used to retrieve pub policy info.
15842         
15843         * mono-config.c:
15844         (publisher_policy_start): New static function used to parse publisher 
15845         policy config files.
15846         (publisher_policy_parser): New static MonoParseHandler containing 
15847         the functions used when parsing config files.
15848         (mono_config_parse_publisher_policy): New function for parsing
15849         publisher policy files.
15850         
15851 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15852
15853         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
15854
15855         * marshal.c (mono_delegate_free_ftnptr): Ditto.
15856
15857         * object.c (mono_get_addr_from_ftnptr): New helper function.
15858
15859         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
15860
15861         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15862
15863 2005-08-19  Dick Porter  <dick@ximian.com>
15864
15865         * threads.c, threads.h, appdomain.c, appdomain.h,
15866         profiler-private.h, monitor.c, object.c, object-internals.h,
15867         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
15868         store the thread ID, so it can hold a 64 bit value if needed.
15869
15870 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * reflection.c (mono_reflection_create_dynamic_method): Store the
15873         handle class into the method references as well so ldtoken works in
15874         dynamic methods.
15875
15876         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
15877         types.
15878
15879 2005-08-19  Ankit Jain <jankit@novell.com>
15880
15881         Fix #75847.
15882         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
15883           here rather than using the method signature of a arbitrary function
15884           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
15885           two arguments.
15886           Hack done with Harinath.
15887
15888 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15889
15890         * threadpool.c: disable printing stack traces when we get a exception
15891         in a threadpool thread. I need to do more testing to figure out which
15892         cases actually print this. Fixes bug #75828.
15893
15894 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15895
15896         * icall.c: there might be ignored whitespace after the last '='. This
15897         fixes length computation and bug #75840.
15898
15899 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
15900
15901         * assembly.c (mono_assembly_load_full): Consider .exe extension as
15902         well. Fixes #75809.
15903
15904         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
15905         #75784.
15906         
15907         * reflection.c (create_custom_attr_data): Ditto.
15908
15909 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
15910
15911         * locales.c, culture-info.h : removed RegionLCIDMap.
15912         * culture-info-tables.h : regenerated.
15913
15914 2005-08-16  Martin Baulig  <martin@ximian.com>
15915
15916         * class.c (mono_type_get_name_recurse): Small fix.
15917
15918 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
15919
15920         * locales.c : indentation fixie.
15921
15922 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
15923
15924         * object-internals.h,
15925           locales.h,
15926           locales.c,
15927           culture-info.h,
15928           icall.c : added RegionInfo table support.
15929         * culture-info-table.h : regenerated for region support.
15930
15931 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
15932
15933         * reflection.c (resolve_object): handle all kinds of MonoMethod
15934         including generic ones
15935
15936 2005-08-12  Ankit Jain <jankit@novell.com>
15937
15938         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
15939           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
15940
15941 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
15942
15943         * process.c: Don't close a thread handle when it's NULL. This is a
15944         workaround for bug #75733.
15945
15946 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15947
15948         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
15949
15950 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
15951
15952         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
15953
15954 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15955
15956         * threadpool.c: if a work item in the thread pool has a callback that
15957         catches a exception, don't propagate it after invoking the callback.
15958         Fixes bug #75336.
15959
15960 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15961
15962         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
15963
15964         * class-internals.h (MonoCachedClassInfo): Add some new fields.
15965
15966         * class.c (mono_class_init): Load field info lazily in the AOT case.    
15967
15968         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
15969
15970 2005-08-03  Ankit Jain  <jankit@novell.com>
15971
15972         Fix #75683.
15973         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
15974           PInvoke calling convention is 0.
15975
15976 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
15977
15978         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
15979         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
15980
15981 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
15982
15983         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
15984         to handle threads not started by the GC (patch by Michael Meeks
15985         <michael.meeks@novell.com>).
15986
15987 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
15988
15989         * reflection.c: Make buffer used in emitting types larger for some
15990         big generic types (patch by Michal Moskal).
15991
15992 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15993
15994         * mono-debug.c: Fix some (not all) alignment problems.
15995
15996 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
15997
15998         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
15999         Invoke mono_image_load_from_data_full passing the refonly
16000         parameter.
16001
16002         * assembly.c
16003         (mono_assembly_open_from_bundle): Add the refonly argument, 
16004         in order to pass it to other methods it calls to.
16005         (do_mono_assembly_open): Add the refonly argument, in order 
16006         to pass it to other methods it calls to.
16007         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
16008         the refonly parameter to it.
16009
16010         * image.c: Add loaded_images_refonly_hash and
16011         loaded_images_refonly_guid_hash to cache the reflection
16012         only loaded images.
16013         (mono_images_init): Initialize the hash tables used for
16014         caching the reflection only images.
16015         (load_modules): Invoke mono_image_open_full passing the refonly
16016         parameter to load the modules the correct way.
16017         (build_guid_table): Add the refonly argument, to re-build the 
16018         correct hash table.
16019         (do_mono_image_open): Added the refonly argument, in order to
16020         define it for the loaded image.
16021         (mono_image_loaded_full): New function, which receives an
16022         additional parameter to look for the image in the refonly or
16023         non-refonly section.
16024         (mono_image_loaded): Updated, using mono_image_loaded_full.
16025         (mono_image_loaded_by_guid_full): The same case that happens
16026         with mono_image_loaded_full.
16027         (mono_image_loaded_by_guid): Likewise.
16028         (register_image): Use the ref_only variable inside MonoImage
16029         to decide in which hash table store the current image.
16030         (mono_image_open_from_data_full): Rename
16031         mono_image_open_from_data to mono_image_open_from_data_full,
16032         adding the refonly argument, to define the ref_only variable 
16033         inside MonoImage.
16034         (mono_image_open_from_data): Return 
16035         mono_image_open_from_data_full.
16036         (mono_image_open_full): Rename mono_image_open to
16037         mono_image_open_full, receiving the new refonly argument,
16038         to pass it to inner methods.
16039         (mono_pe_file_open): Update this function, to open
16040         a MonoImage as a non-refonly image.
16041         (mono_image_close): Use the refonly variable inside
16042         MonoImage to remove the image from the correct caches.
16043
16044         * image.h: Add the signatures of mono_image_open_full,
16045         mono_image_open_from_data_full, mono_image_loaded_full,
16046         mono_image_loaded_by_guid_full.
16047
16048         * metadata-internals.h: Add the ref_only field to 
16049         MonoImage.
16050         
16051 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16052
16053         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
16054         Fix the last behavior, which used to load the assemblies and
16055         extract MonoReflectionAssemblyName information, instead of
16056         extract it from the metadata tables. Needed for Reflection
16057         Only assemblies.
16058         
16059 2005-07-29  Martin Baulig  <martin@ximian.com>
16060
16061         * mono-debug-debugger.c
16062         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
16063         not initialized.
16064
16065         * mono-debug.c
16066         (mono_debug_address_from_il_offset): Check whether we have
16067         debugging support before attempting to take the lock.
16068         (mono_debug_source_location_from_address): Likewise.
16069         (mono_debug_source_location_from_il_offset): Likewise.
16070         (mono_debug_il_offset_from_address): Likewise.
16071         (mono_debug_address_from_il_offset): Likewise.
16072
16073 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * class.c (mono_class_from_name_case): Add support for dynamic images.
16076         Fixes #75650.
16077
16078         * object.c (mono_class_compute_gc_descriptor): Add a workaround
16079         for #75479.
16080
16081 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16082         
16083         * reflection.c (mono_method_get_object): Fix warning.
16084
16085 2005-07-28  Martin Baulig  <martin@ximian.com>
16086
16087         * mono-debug.c
16088         (mono_debug_add_wrapper): Also write the wrapper type.
16089
16090 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16091
16092         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
16093         
16094         * class.c (mono_class_init): Avoid reading nested classes if the AOT
16095         data indicates the class has none.
16096
16097 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
16098
16099         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
16100         loader lock with the debugger lock. Prevents deadlocks for beagle.
16101
16102         Beagle can now run on an smp box for a weekend without any
16103         issues. Woohoo!
16104
16105 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
16106
16107         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
16108         in a module. Fixes #75629.
16109
16110 2005-07-26  Martin Baulig  <martin@ximian.com>
16111
16112         * mono-debug.c (mono_debug_add_wrapper): New static method.
16113         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
16114         interncall or a wrapper.
16115
16116         * mono-debug.h (MonoDebugWrapperData): New public typedef.
16117         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
16118         (MONO_DEBUGGER_VERSION): Bump to 51.
16119
16120         * mono-debug-debugger.c
16121         (mono_debugger_add_type): Removed this empty function.
16122         (mono_debugger_add_method): Likewise.
16123
16124 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16125
16126         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
16127         before accessing method->slot.
16128
16129 2005-07-21  Jb Evain  <jbevain@gmail.com>
16130
16131         * reflection.c (method_encode_clauses/class): Handle filters clauses.
16132         Fixes #75010.
16133
16134 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
16137         #75587.
16138
16139 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16140
16141         * image.h image.c: Add mono_image_get_guid () API function.
16142
16143 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
16144
16145         There were issues when multiple threads tried to load
16146         assemblies. A deadlock was created between assemblies_mutex and
16147         mono_domain_assemblies_lock. This fixes the issue by making the
16148         assembly ref counting be lock free. See bug 75586.
16149         
16150         * image.c (mono_image_close): The add ref function here was using
16151         Interlocked operations while the unref was using a mutex and a
16152         --. I don't think this was ever a bug that would be exposed in a
16153         non-pendantic way (ie, by an embedder doing a ref on one thread
16154         and an unref on another), but for the sake of correctness, this is
16155         now Interlocked.
16156
16157         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
16158         (mono_assembly_load_reference): Call mono_assembly_addref rather
16159         than touching the refcount ourselves.
16160         (mono_assembly_close): Use InterlockedDecrement to unref the
16161         assembly. Don't acquire the lock unless it is actually needed.
16162
16163 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16164
16165         * class.c (mono_class_layout_fields): Fix calculation of has_references
16166         for generic types.
16167
16168 2005-07-12  Martin Baulig  <martin@ximian.com>
16169
16170         Applying a patch from Michal Moskal <malekith@nemerle.org>.
16171
16172         * metadata.c
16173         (mono_type_hash): Provide better hashing for generic instances.
16174         (mono_generic_inst_hash): Improve hashing.
16175         (mono_generic_class_hash): Likewise.
16176
16177         * reflection.c (mymono_metadata_type_hash): Improve hashing for
16178         generic instances.
16179
16180 2005-07-12  Martin Baulig  <martin@ximian.com>
16181
16182         * reflection.c (mono_reflection_create_runtime_class): Remove the
16183         hack for generic type definitions and non-`Run' assemblies.
16184         (mono_reflection_bind_generic_parameters): Also use
16185         `klass->wastypebuilder' to check for TypeBuilders.
16186
16187 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * class.c (mono_class_layout_fields): Fix calculation of has_references
16190         for generic types.
16191
16192         * class.c (inflate_generic_class): Fix a leak.
16193         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
16194         for generic types.
16195
16196 2005-07-11  Martin Baulig  <martin@ximian.com>
16197
16198         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
16199         on error.
16200
16201 2005-07-11  Martin Baulig  <martin@ximian.com>
16202
16203         * loader.c (find_method): Also lookup in
16204         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
16205
16206 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16207
16208         * appdomain.c (mono_domain_unload): Don't free the error message
16209         before passing it to mono_get_exception_...
16210
16211         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
16212         
16213 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
16214
16215         * threads.c: try to better guess an available RT signal (bug #75387).
16216
16217 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16218
16219         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
16220         and CACHE_OBJECT.
16221
16222 2005-07-07  Martin Baulig  <martin@ximian.com>
16223
16224         * class.c (mono_type_get_name_full): Return NULL for
16225         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
16226         fixes #75408.
16227
16228 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
16231         exit the appdomain as well being aborted.
16232
16233         * threadpool.c: Create all threadpool threads inside the root appdomain, and
16234         change back to the root domain after calling managed code. This enables
16235         appdomains using threadpools to be unloaded.
16236
16237 2005-07-07  Martin Baulig  <martin@ximian.com>
16238
16239         * class-internals.h
16240         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
16241         into `MonoDynamicGenericClass' since we only need it for dynamic
16242         types.
16243
16244         * reflection.c (mono_class_bind_generic_parameters): We don't need
16245         to compute the `parent' here.
16246
16247 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
16248
16249         * culture-info-table.h : regenerated.
16250
16251 2005-07-06  Martin Baulig  <martin@ximian.com>
16252
16253         * icall.c
16254         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
16255
16256         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
16257
16258 2005-07-06  Martin Baulig  <martin@ximian.com>
16259
16260         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
16261         we're doing a signature-only comparision; fixes #74945.
16262
16263 2005-07-06  Martin Baulig  <martin@ximian.com>
16264
16265         * class-internals.h (MonoGenericClass): Moved some things out into
16266         a new `MonoInflatedGenericClass' type.  
16267         (MonoInflatedGenericClass): New type; the `klass' of a
16268         `MonoGenericClass' is now computed lazyly in
16269         mono_get_inflated_generic_class().      
16270
16271         * class.c (mono_get_inflated_generic_class): New public function.
16272         (mono_class_inflate_generic_method): Removed the unused
16273         `MonoClass *' argument.
16274         (setup_generic_vtable): Don't call mono_get_inflated_method() on
16275         all the methods.
16276         (mono_class_create_generic): Make this static and merge it with
16277         mono_class_create_generic_2(); we're now called automatically from
16278         mono_get_inflated_generic_class().
16279
16280         * loader.c (mono_method_signature): Call
16281         mono_get_inflated_method() here.
16282
16283 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
16284
16285         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
16286         type of fields with RVA.
16287
16288         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
16289         for this pseudo class.
16290         (my_mono_class_from_generic_parameter): Likewise.
16291         (mono_class_init): Allow interfaces to have cctors.
16292
16293 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
16296         lazily for AOT methods.
16297
16298 2005-07-05  Martin Baulig  <martin@ximian.com>
16299
16300         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
16301         returns FALSE for a successful match, not TRUE.
16302
16303 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16304
16305         * loader.c (mono_method_get_index): Optimize this a bit.
16306
16307 2005-07-04  Martin Baulig  <martin@ximian.com>
16308
16309         * class.c
16310         (class_compute_field_layout): Move the check for generic type
16311         definitions into mono_class_layout_fields().  Fixes #74684.
16312         (mono_class_from_generic_parameter): Correctly compute
16313         `klass->parent'; fixes #75457.
16314
16315         * reflection.c (register_assembly, register_module): Make sure
16316         `domain->rejobject_hash' is already created.
16317
16318 2005-07-02  Martin Baulig  <martin@ximian.com>
16319
16320         * class-internals.h
16321         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
16322         `MonoDynamicGenericClass'.      
16323
16324 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
16325
16326         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
16327         returned by a field getter is null, since null is a valid value.
16328
16329 2005-07-01  Martin Baulig  <martin@ximian.com>
16330
16331         * reflection.c (mono_reflection_generic_class_initialize): Update
16332         the `dgclass->fields [i].parent' to the correct class.
16333         (mono_image_get_fieldref_token): Use the declaring type, not the
16334         reflected type.
16335
16336 2005-07-01  Martin Baulig  <martin@ximian.com>
16337
16338         * loader.c (find_method): Also look in the interfaces; fixes #75429.
16339
16340 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
16341
16342         * threads.c (thread_cleanup): assert that thread != NULL
16343         (wait_for_tids_or_state_change): We were using the wrong variable
16344         when accessing wait->threads. `i' was always out of the bounds of
16345         the array.
16346
16347 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16348
16349         * loader.c: map user32 and kernel32 to libMonoSupportW
16350
16351 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16352
16353         * appdomain.c (unload_thread_main): Mark this as WINAPI.
16354
16355 2005-06-28  Martin Baulig  <martin@ximian.com>
16356
16357         * loader.c (method_from_methodspec): Fix #75334.
16358
16359 2005-06-28  Martin Baulig  <martin@ximian.com>
16360
16361         Fix #74953 - Arrays now implement the generic IList<T> interface
16362         on the 2.0 platform.
16363
16364         * class-internals.h (MonoDefaults): Added `generic_array_class'.
16365
16366         * reflection.c (mono_class_bind_generic_parameters): New public
16367         function; similar to mono_reflection_bind_generic_parameters(),
16368         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
16369
16370         * domain.c (mono_init_internal): Try to initialize.
16371         `mono_defaults.generic_array_class' here; this'll only succeed if
16372         we're using the 2.0 corlib.
16373
16374         * icall.c
16375         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
16376         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
16377         (mono_lookup_internal_call): Added support for nested classes.
16378
16379         * loader.c
16380         (mono_get_method_from_token): Set `result->signature->pinvoke' if
16381         we're an interncall and have generic arguments.
16382
16383         * class.c
16384         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
16385         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
16386         instance of System.Array.InternalArray<T> for arrays, so they
16387         implement the generic IList<T> interface.
16388
16389 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
16390
16391         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
16392         (chastamar@yahoo.com). Fixes #75374.    
16393
16394 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
16395
16396         * culture-info-table.h: regenerated.
16397
16398 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16399
16400         * icall.c: handle spaces correctly for base64 strings.
16401
16402 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16403
16404         * *.c: Kill some warnings.
16405
16406 2005-06-23  Duncan Mak  <duncan@novell.com>
16407
16408         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
16409         that this builds on Solaris 10 (x86).
16410
16411 2005-06-23  Martin Baulig  <martin@ximian.com>
16412
16413         * class.c
16414         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
16415         generic type definitions.
16416
16417 2005-06-23  Martin Baulig  <martin@ximian.com>
16418
16419         Fix #75331.
16420
16421         * metadata.c (mono_class_get_overrides): Renamed to
16422         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
16423         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
16424         pass it to mono_get_method_full().
16425
16426 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
16427
16428         * reflection.c (mono_reflection_create_runtime_class): take the
16429         mono_domain_lock in this method. Prevents deadlocks
16430
16431 2005-06-22  Martin Baulig  <martin@ximian.com>
16432
16433         * loader.c (method_from_methodspec): Fix #75330.
16434
16435 2005-06-22  Martin Baulig  <martin@ximian.com>
16436
16437         * reflection.c (type_get_qualified_name): Use
16438         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
16439         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
16440         argument; use it if we don't have an assembly name.
16441
16442 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
16443
16444         * object.c: In mono_message_init, set "copy out" flag for in
16445         parameters with the [Out] flag.
16446
16447 2005-06-21  Martin Baulig  <martin@ximian.com>
16448
16449         * class.c
16450         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
16451         and MONO_TYPE_PTR.
16452
16453 2005-06-21  Martin Baulig  <martin@ximian.com>
16454
16455         * class.c (mono_class_init): Don't initialize `class->fields' for
16456         generic instances since they're initialized again in
16457         compute_field_layout(). 
16458         (compute_field_layout): Set the field's `generic_info' here; fix
16459         #75320. 
16460
16461 2005-06-21  Martin Baulig  <martin@ximian.com>
16462
16463         * class-internals.h
16464         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
16465
16466         * metadata.c (mono_metadata_generic_method_equal): Also
16467         distinguish the `generic_class'; fixes #75334.
16468
16469 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16470
16471         * domain.c:
16472         * appdomain.c:
16473         * domain-internals.h:
16474         * reflection.c: 'domain_assemblies' field is now protected by its own
16475         lock. Don't call into managed code to run the AssemblyLoad event if we
16476         now there are no registered delegates for it.
16477
16478 2005-06-20  Martin Baulig  <martin@ximian.com>
16479
16480         * class.c (mono_class_is_assignable_from): Use a custom version of
16481         mono_class_has_parent() to make things work for generic instances;
16482         fix #75300.
16483
16484 2005-06-20  Martin Baulig  <martin@ximian.com>
16485
16486         * loader.c (method_from_methodspec): Apply a patch from
16487         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
16488
16489 2005-06-20  Martin Baulig  <martin@ximian.com>
16490
16491         * class.c (mono_class_init): Reverted Zoltan's last change; it
16492         breaks generics.
16493
16494 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16495
16496         * threads.c (wait_for_tids_or_state_change): Add missing locking.
16497
16498 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16499
16500         * socket-io.c: fix the index in the socket array for writable/error
16501         sockets. Fixes bug #75306.
16502
16503 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16504
16505         * class.c (mono_class_init): Allow interfaces to have static ctors.
16506
16507 2005-06-17  Martin Baulig  <martin@ximian.com>
16508
16509         * loader.c (method_from_methodspec): Use `context->container' when
16510         parsing the `gmethod->inst'.
16511
16512 2005-06-17  Martin Baulig  <martin@ximian.com>
16513
16514         * class.c (mono_type_get_name_recurse): Don't add the assembly
16515         name for type arguments.
16516
16517 2005-06-15  Martin Baulig  <martin@ximian.com>
16518
16519         * reflection.c (mono_image_get_inflated_method_token): Encode
16520         correct klass; fixes #75260.
16521
16522 2005-06-13 Michal Moskal <malekith@nemerle.org>
16523
16524         * icall.c: Make GetCorrespondingMethod/Constructor take
16525         MonoReflectionMethod method not MonoMethod. Removed
16526         MonoType.GetCorrespondingField, and make
16527         MonoGenericType.GetCorrespondingField take name not
16528         MonoClassField.
16529
16530 2005-06-13  Michal Moskal <malekith@nemerle.org>
16531
16532         * reflection.c (field_encode_signature, encode_locals):
16533          Make sizes of buffers for types larger (for big generic types).
16534          (create_generic_typespec,
16535          mono_reflection_sighelper_get_signature_local,
16536          mono_reflection_sighelper_get_signature_field):
16537          Add asserts for too small buffers.
16538
16539 2005-06-15  Martin Baulig  <martin@ximian.com>
16540
16541         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
16542         if our parent is not a dynamic type.
16543
16544 2005-06-15  Martin Baulig  <martin@ximian.com>
16545
16546         * class-internals.h (MonoTypeNameFormat): New enum.
16547
16548         * class.c
16549         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
16550         (mono_type_get_full_name): Removed.
16551         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
16552         argument instead of the boolean's.
16553
16554         * icall.c (ves_icall_System_MonoType_getFullName):
16555         Added `gboolean assembly_qualified'.    
16556
16557         * reflection.h
16558         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
16559
16560         * reflection.c (mono_reflection_parse_type): Parse the new type
16561         name format.
16562
16563 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16564
16565         * icall.c: no need to convert from utf16 to utf8 and then back again
16566         after the call to GetLogicalDrives.
16567
16568 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16569
16570         * icall.c: frombase64. Fix problems exposed by new tests.
16571
16572 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16573
16574         * icall.c: added internal calls for converting char [] and strings in
16575         base64 into byte [].
16576
16577 2005-06-10  Martin Baulig  <martin@ximian.com>
16578
16579         * class.c (mono_class_create_generic_2): Read the nested classes
16580         from the metadata rather than from `gklass->nested_classes' since
16581         `gklass' might not be initialized yet.
16582
16583 2005-06-09  Duncan Mak  <duncan@novell.com>
16584
16585         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
16586         all public headers. Fixes #74919.
16587
16588 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
16589
16590         * domain.c: The key for proxy_vtable_hash is now a pointer
16591         array. Added new GHashFunc and GCompareFunc functions for this.
16592
16593         * class.h: The list of interfaces in MonoRemoteClass is known in
16594         advance and can't grow (we create a new MonoRemoteClass if needed),
16595         so now the interface array can be allocated together with
16596         MonoRemoteClass.
16597         
16598         * object.c: Added a new method create_remote_class_key.
16599         Fixed mono_remote_class so it does not depend on
16600         mono_upgrade_remote_class.
16601         Removed extend_interface_array.
16602         Added new method clone_remote_class(), which makes a copy of a remote
16603         class and adds a new interface or class to it.
16604         mono_upgrade_remote_class() now creates a new remote class (or gets
16605         it from the cache) if an vtable upgrade is needed. In this way
16606         we make sure that other objects sharing the same remote class
16607         don't get the new vtable with unwanted interfaces.
16608         
16609         * object-internals.h:
16610         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
16611         
16612         * marshal.c: Track changes in mono_upgrade_remote_class().
16613
16614 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
16615         * icall.c: Add runtime methods for obtaining members of inflated
16616         class, which were created from supplied non-inflated members. It
16617         is used in internal Get{Method,Constructor,Field} methods in
16618         System.Type
16619
16620 2005-06-09  Martin Baulig  <martin@ximian.com>
16621
16622         * reflection.c
16623         (mono_reflection_bind_generic_method_parameters): Fix #75169.
16624
16625 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16626         * reflection.c (mono_image_basic_init): Define
16627         Version in MonoDynamicAssembly. 
16628         
16629 2005-06-08  Martin Baulig  <martin@ximian.com>
16630
16631         Fix #75136.
16632
16633         * loader.c
16634         (mono_method_signature_full): New public method; takes a
16635         `MonoGenericContext *'.
16636         (find_method): Use mono_method_signature_full() and pass the
16637         klass'es context to it.
16638
16639         * class.c (mono_class_is_inflated_method): Use
16640         mono_method_signature_full() and pass the context to it.
16641
16642 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
16643
16644         * object.c: add proper locking in mono_remote_class_vtable(),
16645         fixes possible memory corruption.
16646
16647 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
16648
16649         * marshal.c (mono_remoting_marshal_init): set
16650         initialized after initialization.
16651
16652 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
16653
16654         * locales.c : hush.
16655
16656 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
16657
16658         * object.c (extend_interface_array): fix really silly
16659         memory corrupting / comparison bug.
16660
16661 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16662
16663         * reflection.c: Functions added to support the creation
16664         of CustomAttributeData, which includes Attribute data
16665         used by ReflectionOnly methods.
16666
16667         * reflection.h:  mono_reflection_get_custom_attrs_data and
16668          mono_custom_attrs_data_construct added (functions exposed).
16669
16670          * icall.c: Added mono_reflection_get_custom_attrs_data
16671          as icall.
16672         
16673 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16674
16675         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
16676         lupus's request.
16677
16678 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
16679
16680         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
16681
16682         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
16683         dynamic DllImportAttribute.
16684
16685         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
16686         dynamic DllImportAttribute.
16687
16688         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
16689         Fixes #75162.
16690
16691 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16692
16693         * threads.c: avoid segfault when an unstarted thread is aborted.
16694
16695 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
16696
16697         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
16698         Returns the name and version of the runtime for reporting.
16699
16700 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16701
16702         * appdomain.c: bump corlib version.
16703         * object-internals.h: new field in MonoReflectionAssembly.
16704
16705 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16706
16707         * object-internals.h: Carlos forgot to add this field.
16708
16709 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
16710
16711         * icall.c: Added create_version to create instances
16712         of Version of MonoReflectionAssemblyName. This change helps
16713         the AssemblyName tests to keep running fine.
16714         
16715 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
16716   
16717         * object.c (mono_method_return_message_restore): A somehow less
16718         intrusive fix for #75138.
16719
16720 2005-06-03  Raja R Harinath  <rharinath@novell.com>
16721
16722         * object.c (mono_method_return_message_restore): Fix computation
16723         of expected number of out args.
16724
16725 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16726
16727         * reflection.c (mono_image_get_method_info): Fix the case when the
16728         charset is empty.
16729
16730 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
16731
16732         * object.c: Added missing null check in
16733           mono_method_return_message_restore.
16734
16735 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * reflection.c (mono_image_get_method_info): Handle the case when
16738         dllentry is empty.
16739
16740 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
16741
16742         * object.c: When creating the vtable for a proxy, take into account
16743         all inherited interfaces, not only the ones registered in
16744         iclass->interfaces. This fixs bug #74996.
16745         Also, in mono_method_return_message_restore, verify that the array
16746         of out args has the expected lengh.
16747
16748 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16749
16750         * socket-io.c: update the timeout in Poll when the call is interrupte.
16751
16752 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16753
16754         * socket-io.c: support abort/suspend in Select_internal after last
16755         change.
16756
16757 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16758
16759         * threadpool.c: remove warning.
16760
16761 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16762
16763         * icall.c:
16764         * socket-io.[ch]: Select_internal uses poll() now when available, thus
16765         removing the 1024 limit from select(). Runtime part of the fix for
16766         bug #71203.
16767
16768 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16769
16770         * socket-io.c: when resolving the addresses for the same
16771         host returned by gethostname(), get the local IPs from the interface
16772         list. Loopback addresses are discarded if the are interfaces up with
16773         non-loopback ones. Fixes bug #63265.
16774
16775 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
16776
16777         * appdomain.c, verify.c, object-internals.h, reflection.c:
16778         bumped corlib number to 36, and added new extra_flags field
16779         to ReflectionMethodBuilder and friends.  Fixes #75060.
16780
16781 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
16782
16783         * gc.c: register a new weak link only if the object is non-null
16784         (fixes bug#75047).
16785
16786 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16787
16788         * culture-info.h : short time pattern too.
16789
16790 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
16791
16792         * culture-info.h : expand long time pattern string length.
16793
16794 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16795
16796         * culture-info-table.h : update (more French date format; #72788).
16797
16798 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
16799
16800         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
16801         the method is static. Fixes #75029.
16802
16803 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
16804
16805         * reflection.c: Update the table_idx field of method builders after
16806         saving the module, since it can change. This is a workaround for
16807         bug #74914. 
16808
16809 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
16810
16811         * culture-info-table.h : update (additional French date format).
16812
16813 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * icall.c (ves_icall_type_Equals): Revert last change.
16816         
16817         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
16818
16819         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
16820
16821 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
16822
16823         * class-internals.h: Added executioncontext_class field to 
16824         MonoDefaults structure.
16825         * domain.c: Cache System.Threading.ExecutionContext class in 
16826         mono_defaults.
16827         * object.c: Capture the ExecutionContext for asynchroneous calls in
16828          mono_async_result_new.
16829         * object-internals.h: Added execution_context and original_context 
16830         fields to MonoAsyncResult. Added execution_context to MonoThread.
16831         * security-manager.c|.h: Added mono_get_context_capture_method to 
16832         return the capture method (if required by the security manager or by
16833         the framework version used).
16834         * threadpool.c: Apply capture (if present) ExecutionContext in 
16835         mono_async_invoke and revert to original context after it completes.
16836
16837 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
16838
16839         * culture-info-table.h : updated (real hacky solution for zh-CHT).
16840
16841 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
16842
16843         * culture-info-table.h : zh-CHT related workaround.
16844
16845 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16846
16847         * marshal.c (emit_marshal_custom): Add some error checking and call the
16848         methods in the ICustomMarshaler interface. Fixes #74875.
16849         
16850         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
16851         native->managed wrappers.
16852
16853 2005-05-12  Martin Baulig  <martin@ximian.com>
16854
16855         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
16856         here and use the loader lock.
16857
16858         * mono-debug.c: Properly lock when the debugger is not attached.
16859         (mono_debug_init): Release the initial lock if we're not running
16860         in the debugger.
16861
16862 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
16863
16864         * marshal.c (emit_marshal_custom): Pass through NULL values without
16865         calling the custom marshalling routines.
16866
16867         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
16868         conversion in structures. Fixes #74882.
16869
16870 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
16871
16872         * culture-info-table.h : zh-* cultures were missing.
16873
16874 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
16875
16876         * threads.c: Added a new event background_change_event which is signaled
16877         when a thread changes its background mode.
16878         Moved here several checks previously done in managed code. The checks
16879         require the thread lock, and using the thread lock in managed code
16880         can result in deadlocks.
16881         Merged Start_internal and Thread_internal into a single method. Now 
16882         Thread_internal does all work of creating and starting a thread.
16883         Added icalls for setting and getting the state of the object. Moved from
16884         managed code to avoid locking there.
16885         Added wait_for_tids_or_state_change() which is called instad of
16886         wait_for_tids when waiting for non-backround threads to end. This method
16887         will return if one of the threads ends or the background_change_event
16888         is signaled.
16889         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
16890         the background mode. This method signals the background_change_event
16891         event.
16892         * icall.c:
16893         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
16894         removed Start_internal.
16895         
16896 2005-05-11  Martin Baulig  <martin@ximian.com>
16897
16898         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
16899         to order of some fields to get proper alignment on 64-bit machines.
16900
16901 2005-05-11  Martin Baulig  <martin@ximian.com>
16902
16903         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
16904         changes as they're broken and completely fuck up the debugger.
16905
16906         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
16907
16908 2005-05-10  Martin Baulig  <martin@ximian.com>
16909
16910         * reflection.c (mono_reflection_generic_class_initialize): Don't
16911         call mono_class_setup_parent() here.
16912
16913 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16914
16915         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
16916         send/receive timeout use an integer in milliseconds. We were using a
16917         struct timeval.
16918
16919 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16920
16921         * locales.c:
16922         (internal_get_cultures): reserve the first slot of the array for the
16923         InvariantCulture, which will be filled in managed code.
16924
16925 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
16926
16927         * reflection.c (mono_image_fill_module_table): Initialize the
16928         GENERATION field as well.
16929
16930 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16931
16932         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
16933         Monitor.Enter on the object.
16934
16935 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16936
16937         * threads.c: Enable the wait for running threads when exiting.
16938         * icall.c: Suspend all threads before exiting.
16939
16940 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * assembly.c (mono_assembly_load_reference): Fix warning.
16943
16944 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16945
16946         * threadpool.c: changed the default number of threads per cpu. From now
16947         on, the default will be 20 + (5 * number of cpus) instead of 50.
16948
16949 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
16950
16951         * loader.c (mono_method_get_signature_full): Add locking here.
16952
16953 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
16954
16955         * appdomain.c: Moved methods for parsing and freeing assembly
16956         names to assembly.c.
16957         * assembly.c, domain-internals.h: Created public methods for parsing
16958         assembly names. Fixed mono_assembly_load_with_partial_name:
16959         it now finds the best match, taking into account the version,
16960         token and culture specified in the partial name. Also return
16961         the latest version if no version information is specified.
16962
16963 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
16964
16965         * threadpool.c: replace check for SocketAsyncCall class.
16966
16967 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16968
16969         * threadpool-internals.h:
16970         * Makefile.am: added threadpool-internals.h
16971
16972         * threadpool.c: call mono_unhandled_exception on exceptions not handled
16973         that happen in threadpool threads (tested on MS).
16974         (mono_thread_pool_remove_socket): new function that dispatch any pending
16975         AIO call on a socket that is closing. By now only epoll really needs it,
16976         as select/poll wake up when the socket closes.
16977
16978
16979         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
16980
16981 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
16982
16983         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
16984
16985 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
16986
16987         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
16988
16989 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
16990
16991         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
16992         has an abort request, convert it into a suspend request.
16993
16994 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
16995
16996         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
16997         warning for the usage of `UnmanagedFunctionPointerAttribute' which
16998         is not supported yet.
16999
17000 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17001
17002         * image.c: register assemblies loaded from data (bundles) in the loaded
17003         assemblies hash. Fixes bug #74772.
17004
17005 2005-04-29  Martin Baulig  <martin@ximian.com>
17006
17007         * class.c (mono_type_get_name_recurse): Update to the new naming
17008         schema from the latest .NET 2.x beta2.
17009         (mono_class_setup_vtable_general): If we're a generic instance,
17010         copy the vtable from our generic type definition and inflate all
17011         the methods in it.
17012
17013         * loader.c (find_method): Update to the new naming schema from the
17014         latest .NET 2.x beta2.
17015
17016 2005-04-29  Raja R Harinath  <harinath@gmail.com>
17017
17018         * class.c (mono_class_init): Add a mono_loader_unlock to the
17019         #74734 fix.
17020
17021 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17022
17023         * icall.c (ves_icall_System_Environment_Exit): Remove the 
17024         suspend_all_other_threads () call for the time being, since it can hang.
17025
17026         * threads.c (mono_thread_manage): Similarly, disable the waiting for
17027         the background threads to exit, since it can also hang.
17028
17029         * class.c (mono_class_init): Applied patch from Ankit Jain 
17030         (radical@gmail.com). Avoid pending init errors when a field refers
17031         to a nested class using a typeref. Fixes #74734.
17032
17033         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
17034         this for dynamic modules.
17035
17036 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17037
17038         * threads.c: don't wait for threads that are in the process of aborting
17039         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
17040         and waiting for background threads to finish. This makes xsp and
17041         mod-mono-server exit without random length delays and/or hangs.
17042
17043 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17044
17045         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
17046
17047 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
17048
17049         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
17050         dynamic types to prevent infinite loops. Fixes #74727.
17051
17052         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
17053         ..._is_assignable_to.
17054
17055 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
17056
17057         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
17058
17059 2005-04-25  Martin Baulig  <martin@ximian.com>
17060
17061         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
17062
17063         * domain.c
17064         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
17065
17066         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
17067
17068         * reflection.c (build_compressed_metadata): Set metadata header
17069         version to 2.0.
17070
17071 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17072
17073         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
17074         number into an integral and a decimal part. Fixes #70473.
17075
17076         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
17077
17078 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
17079
17080         * culture-info-table.h : reflected the latest locale-builder output.
17081
17082 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17083
17084         * threadpool.c: check for SuspendRequested too when deciding if
17085         mono_thread_interruption_checkpoint should be called.
17086
17087 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17088
17089         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
17090         * threads.c: remove interruption_mutex and use Interlocked instead. When
17091         suspending all the threads, wait for all the suspended events at once.
17092         If we're shutting down and get an APC that is going to be queued,
17093         call mono_thread_execute_interruption immediately, as the thread might
17094         be sleeping on a pthread condition or mutex.
17095
17096         * icall.c: call mono_runtime_set_shutting_down before suspending the
17097         threads.
17098
17099         Fixes bug #74693. And now xsp is happier when exiting.
17100
17101 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17102
17103         * loader.c (mono_stack_walk): Fix #74690.
17104
17105 2005-04-22  Martin Baulig  <martin@ximian.com>
17106
17107         * mono-debug.h (MonoDebugMethodJitInfo): Added
17108         `MonoDebugMethodJitInfo *jit'.
17109
17110         * mono-debug.c (mono_debug_read_method): Cache the
17111         MonoDebugMethodJitInfo in `address->jit'.
17112         (mono_debug_free_method_jit_info): New public method.
17113
17114 2005-04-22  Martin Baulig  <martin@ximian.com>
17115
17116         * class.c (mono_class_is_assignable_from): Disallow
17117         type parameter -> interface.
17118
17119 2005-04-21  Dick Porter  <dick@ximian.com>
17120
17121         * threads.c (mono_thread_create): Turn an assertion into an error.
17122
17123 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17124
17125         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
17126         
17127         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
17128         Fix some gcc 4.0 warnings.
17129
17130 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
17131
17132         * file-io.c: fix alt dir separator char on unix systems
17133         and cleanup (fixes bug #71214).
17134
17135 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
17136
17137         * marshal.c: Use CALLVIRT instead of CALL when dispatching
17138         a call to a remote domain, since the method may be an
17139         interface method in the client domain. This fixes bug #74192.
17140
17141 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17142
17143         * threadpool.c: recv/send are now performed before going back to managed
17144         code to save one transition.
17145
17146 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17147
17148         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
17149
17150         * metadata/threadpool.c: removed hack to workaround the bug above.
17151
17152         Fixes bug #74618.
17153
17154 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17155
17156         * reflection.c reflection.h: Fix handling of parameter defaults in
17157         dynamic methods. Also fixes handling of parameter attributes.
17158         Fixes #74609.
17159
17160         * mono-debug.c (mono_debug_close_image): Fix warning.
17161
17162 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17163
17164         * socket-io.h: replaced old unused field with new 'blocking'.
17165         * threadpool.c: restore socket blocking state on windows(tm).
17166
17167 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
17168
17169         * icall.c: don't return the codebase in the AssemblyName[] returned by
17170         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
17171         * object-internals.h: Removed FIXME (fields were presents) and fixed
17172         versioncompat declaration.
17173
17174 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17175
17176         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
17177         not closed, so don't cleanup when it happens.
17178
17179 2005-04-13  Chris Toshok  <toshok@ximian.com>
17180
17181         * mono-debug-debugger.h: change prototype for
17182         mono_debugger_lookup_type.
17183
17184         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
17185         this function, although it should probably be named
17186         mono_debugger_init_type.
17187
17188 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17189
17190         * threadpool.c: fix non-AIO case.
17191
17192 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
17195         the built-in profiler to measure just JIT compilation times.
17196
17197 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17198
17199         * threadpool.c: the epollfd might be closed by another thread at
17200         any time, so ignore EBADF at treat it as a "we're closing" sign.
17201
17202 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17203
17204         * threadpool.c: release the semaphores with a count equals to the number
17205         of working threads in both IO and regular pools. Fixed typo that messed
17206         up the count of IO pool threads. Don't initialize the pipe handles if
17207         we're using epoll.
17208
17209 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17210
17211         * threadpool.c: some systems don't like a NULL when deleting the socket
17212         from epoll.
17213
17214 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17215
17216         * threadpool.c: fix semaphore allocation.
17217
17218 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17219
17220         * threadpool.c: added epoll() based implementation for asynchronous IO
17221         that is used instead of the default poll() when available.
17222         It can be disabled by setting MONO_DISABLE_AIO.
17223
17224 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17225
17226         * threadpool.c: windows needs 'closesocket' and instead of returning
17227         0 when the stream is closed while in select, it returns -1. Fixes bug
17228         #74573.
17229
17230 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
17231
17232         * class.c (class_compute_field_layout): Fix the regression caused by
17233         the previous try.
17234
17235 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17236
17237         * threadpool.c: separate pool for socket async. IO.
17238         * threadpool.h: mono_max_worker_threads is not a global any more.
17239
17240 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17241
17242         * class.c (class_compute_field_layout): Fix #74549.
17243
17244 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17245
17246         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
17247         use 2 connected sockets instead.
17248
17249 2005-04-08  Miguel de Icaza  <miguel@novell.com>
17250
17251         * mono-config.c: Add new entry point for mkbundle
17252         mono_config_parse_memory. 
17253
17254 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17255
17256         * threadpool.c: removed another unused function.
17257
17258 2005-04-08  Ankit Jain  <radical@corewars.org>
17259
17260         * reflection.c (get_default_param_value_blobs): Add 'types'
17261         parameter to get the types encoded in the constant table.
17262         (mono_param_get_objects): Use the type from the constant table,
17263         not the type of the parameter, when creating default values.
17264         Handle null default values correctly.
17265
17266 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17267
17268         * file-io.c:
17269         * file-io.h:
17270         * threadpool.c:
17271         * threadpool.h:
17272         * icall.c:
17273         * socket-io.c: removed dead code for async IO.
17274
17275 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17276
17277         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
17278
17279         * threadpool.c: intercept socket async. calls and pass them to a thread
17280         that is polling and dispatching the job items to the threadpool as
17281         socket become ready. Fixes bugs #71217, #71933.
17282
17283         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
17284         between char and short/ushort arrays.
17285
17286         * socket-io.c: remove dead code.
17287
17288 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17289
17290         * locales.c,
17291           icall.c : removed InternalToUpper_Comp() and
17292           InternalToLower_Comp().
17293
17294 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
17295
17296         * char-conversions.h : The tables were incorrectly generated. Should
17297           be generated against invariant culture.
17298
17299 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17300
17301         * object.c (mono_runtime_invoke_array): Fix return value when 
17302         passing pre-created valuetype objects to ctors.
17303
17304         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
17305         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
17306         Fixes #74338.
17307
17308 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
17309
17310         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
17311         only used with --security and hides the wrong corlib version error.
17312
17313 2005-03-30  Joshua Tauberer  <tauberer@for.net>
17314
17315         * class.c: Changed mono_class_name_from_token so that types
17316         outside of a namespace don't have an initial period.  Improved
17317         the g_warning message used in _mono_class_get when loading
17318         fails.
17319         * assembly.c: In mono_assembly_load_reference, when an assembly
17320         can't be found, "No such file or directory" is misleading and
17321         unhelpful because a few paths were checked for the presence of
17322         the assembly.  When that happens (ENOENT), display a nicer
17323         message indicating the directories that were searched.  In all
17324         cases, the warning is made easier to read for non-hackers.
17325
17326 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17327
17328         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
17329         project/solution.
17330         * appdomain.h|domain.c: Removed inline from functions.
17331         * appdomain.c: Reduced warnings when compiling on windows.
17332         * icall.c: Fixed output_debug declaration to gunichar2*.
17333         * mono-config.c: Reduced warnings when compiling on windows.
17334         * rand.c: Added missing "windows.h". Added missing return value.
17335         * rawbuffer.c: Added missing winsock2.h for windows.
17336         * sysmath.h: Added mono-compiler.h header to allow/ease 
17337         compilation with non-GCC compilers.
17338         * threads.c: Fixed declarations to compile with VS.NET C compiler.
17339         Removed cast warnings.
17340
17341         Adapted from the work of J Lothian (for VC6).
17342
17343 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
17346         from default_path.
17347
17348 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17349
17350         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
17351         the 2.0 profile.
17352
17353 2005-03-27  Raja R Harinath  <harinath@gmail.com>
17354
17355         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
17356         has to be in $(exec_prefix).  $(prefix) is for arch-independent
17357         stuff, and it would probably use $(prefix)/share rather than
17358         $(prefix)/lib.
17359
17360 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17361
17362         * console-io.c: added 2 includes that might be missing.
17363
17364 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17365
17366         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
17367         profile.
17368
17369         * reflection.c (create_custom_attr): Allocate the params array using
17370         alloca so it gets GC tracking.
17371
17372 2005-03-23  Chris Toshok  <toshok@ximian.com>
17373
17374         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
17375         out some spew.
17376
17377 2005-03-24  Raja R Harinath  <rharinath@novell.com>
17378
17379         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
17380         changes to pick up any changes in prefix, etc.
17381
17382 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17383
17384         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
17385         
17386         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
17387         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
17388
17389 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17390
17391         * class-internals.h object-internals.h class.c reflection.c: Extend the
17392         mono_lookup_dynamic_token () function to return the class of the
17393         token as well. 
17394
17395         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
17396         well. Fixes #73848.
17397
17398 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17399
17400         * security-manager.c: Skip inheritance checks for intra-corlib
17401         class inheritance and method overrides. This skips a lot of checks
17402         and (anyway) permissions cannot work until corlib is loaded.
17403
17404 2005-03-23  Martin Baulig  <martin@ximian.com>
17405
17406         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
17407         MONO_TYPE_GENERICINST.  
17408
17409 2005-03-23  Martin Baulig  <martin@ximian.com>
17410
17411         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
17412
17413 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17414
17415         * class.c: added locking comments to some functions.
17416         Cache the interface offsets arrays (saves about 20 KB
17417         of runtime memory in a typical app).
17418         Reduce the time overhead in mono_class_setup_supertypes ().
17419
17420 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
17421
17422         * icall.c: speedup and fix leaks in GetMethodsByName and
17423         GetPropertiesByName.
17424
17425 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
17426
17427         * reflection.c: some locking fixes.
17428
17429 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
17430
17431         * metadata.c: added missing break in case statement.
17432
17433 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
17434
17435         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17436         typedbyref return values. Fixes #73941.
17437
17438 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17439
17440         * security-manager.c|h: Added demandunmanaged method and 
17441         suppressunmanagedcodesecurity class to MonoSecurityManager.
17442         Renamed aptc class to allowpartiallytrustedcallers.
17443
17444 2005-03-17  Martin Baulig  <martin@ximian.com>
17445
17446         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
17447
17448 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17449
17450         * file-io.c: disabled file async. IO using aio_*. It uses the
17451         threadpool now. Workaround for bug #73718.
17452
17453 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
17454
17455         * assembly.h, mono-config.c: added code to deal with bundled configs
17456         for bundled assemblies.
17457
17458 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
17459
17460         * *.c, private.h: cleanup, removing old private.h header file.
17461
17462 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17463
17464         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
17465         and throw_on_unmappable_char attributes.
17466
17467 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
17468
17469         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
17470         _ProcessName_internal.
17471
17472 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17473
17474         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
17475         #73631.
17476
17477         * icall.c threads.c threads-types.h: Remove slothash icalls as they
17478         are no longer used.
17479
17480 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * object.c (compute_class_bitmap): Add support for generics. Fixes
17483         #73527.
17484
17485 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17486
17487         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
17488
17489 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17490
17491         * filewatcher.c: commented out the code for windows watcher, as we don't
17492         use it (we use the managed implementation instead).
17493
17494 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
17495
17496         * object-internals.h (MonoThread): Remove 'unused1' field.
17497
17498         * appdomain.c: Bump corlib version.
17499
17500         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
17501
17502         * reflection.c (mono_reflection_create_runtime_class): Remove the
17503         AssemblyBuilder.Save optimization since it causes too many problems.
17504
17505 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
17506
17507         * exception.c|h: Added mono_get_exception_reflection_type_load to
17508         create a ReflectionTypeLoadException object.
17509         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
17510         to return NULL is a InheritanceDemand fails during reflection. Updated
17511         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
17512         ReflectionTypeLoadException if an InheritanceDemand fails during 
17513         reflection. Added icall mapping for GetLinkDemandSecurity.
17514         * security-manager.c|h: Added ves_icall_System_Security_
17515         SecurityManager_GetLinkDemandSecurity internal call to return the
17516         class and methods permissions set for a LinkDemand. Removed unused
17517         fields in MonoSecurityManager.
17518
17519 2005-03-10  Martin Baulig  <martin@ximian.com>
17520
17521         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
17522         it's a generic instance.
17523
17524 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
17525
17526         * reflection.c (mono_get_object_from_blob): Applied patch from
17527         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
17528
17529         * class.c (mono_class_is_assignable_from): Another try at fixing 
17530         #73469 without breaking anything.
17531
17532 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17533
17534         * class.c: (mono_class_is_assignable_from): Revert the last changes
17535         since they don't work with generics.
17536         
17537         * class.c (mono_class_is_assignable_from): Fix build bustage.
17538
17539         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
17540         the managed IsAssignableFrom method. Fixes #73469.
17541
17542         * reflection.c (mono_reflection_call_is_assignable_from): New helper
17543         function.
17544
17545 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * object.c (mono_load_remote_field_new): Fix returning uninitialized
17548         memory when the remoting callback does not sets the out arguments.
17549         Fixes #73007.
17550
17551         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
17552         by mistake.
17553
17554         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
17555
17556         * object-internals.h (MonoStackFrame): Sync with managed object layout.
17557
17558         * appdomain.c: Bump corlib version.
17559
17560 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
17563         function.
17564
17565         * threads.c (mono_thread_attach): Detect threads which are not started
17566         by the GC pthread wrappers.
17567
17568 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
17569
17570         * icall.c: Added new icall for RNG.
17571         * rand.c|h: Added new icall to open the RNG. This allows to share a 
17572         single handle on Linux to access /dev/urandom and fix #73183.
17573
17574 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17575
17576         * object.c: setting the new vtable in a transparent proxy object must
17577         not change the GC descriptor.
17578
17579 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17580
17581         * object.c: fixed compilation without GCJ support.
17582         * reflection.c: for runtime-created types ensure klass->has_references
17583         is correct (bug #73215).
17584
17585 2005-03-02  Martin Baulig  <martin@ximian.com>
17586
17587         * class.c (mono_class_is_assignable_from): Make this work if
17588         `oklass' is a generic instance; fixes #72831.
17589
17590 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17591
17592         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
17593         with hasthis set.
17594         
17595         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
17596
17597         * marshal.c: Reorganize native->managed marshalling code to also use
17598         the emit_marshal_... functions.
17599
17600 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17601
17602         * object.c: typed allocs have issues with bitmap sizes > 30,
17603         so check for max_set >= 30.
17604
17605 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
17606
17607         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
17608         managed code. Fixes #73012.
17609
17610         * metadata.h (MonoMarshalSpec): Add elem_mult field.
17611
17612         * metadata.c reflection.c: Load/Emit elem_mult as well.
17613         
17614         * metadata.h (MonoMarshalSpec): Add comment.
17615
17616         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
17617
17618         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
17619         num_elem to -1 if not given.
17620
17621         * object-internals.h (MonoReflectionMarshal): Add has_size field.
17622
17623         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
17624         given values.
17625
17626 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
17627
17628         * null-gc.c (mono_gc_free_fixed): Was not compilable.
17629
17630 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
17631
17632         * reflection.c (encode_marshal_blob): Encode param_num field as well.
17633
17634         * object-internals.h (MonoReflectionMarshal): Add param_num field.
17635
17636 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
17637
17638         * object.c: generalized the reference bitmap creation
17639         and added hooks for the new GC.
17640         * class-internals.c: removed the gc_bitmap field from MonoClass.
17641
17642 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17643
17644         * domain.c: help the compiler to produce better code
17645         in mono_jit_info_table_find ().
17646
17647 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17648
17649         * object.c: make all allocations look typed.
17650
17651 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17652
17653         * socket-io.c: load Mono.Posix if it's not loaded already
17654         (fixes bug#73033).
17655
17656 2005-02-24  Martin Baulig  <martin@ximian.com>
17657
17658         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
17659         * reflection.c (dup_type): Likewise.
17660
17661 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
17664         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
17665
17666 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17667
17668         * domain.c, threads.c, object-internals.h: make the critical thread
17669         local vars use the fast access mode (even when we're compiled in
17670         a lib). Provide accessors to be used by the jit during codegen.
17671
17672 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17673
17674         * appdomain.c: Changed hook functios behavior to include
17675         support for the reflection only assemblies. Some icalls were changed
17676         to support the mentioned assemblies too. Signatures of static methods
17677         try_assembly_resolve and real_load now have an additional parameter:
17678         refonly.
17679
17680         * assembly.c: General changes to mono_assembly_ methods to support
17681         reflection only api. Functions mono_assembly_open, mono_assembly_load,
17682         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
17683         suffix, to support an additional gbool parameter to specify whether
17684         the assembli is reflection only or not. Created some new hook functions 
17685         to add support for reflection only assemblies. Signatures of static 
17686         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
17687         have now an additional parameter: refonly.
17688
17689         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
17690         indicating whether the assembly is reflection only or not.
17691
17692         * exception.c: Add mono_get_exception_invalid_operation.
17693
17694         * icall.c: Throw an InvalidOperationException when trying to invoke
17695         a property/method/event, or trying to set/get the value of a field.
17696         Also add an icall to retrieve the ref_only flag to the
17697         MonoReflectionAssembly.
17698
17699 2005-02-23  Chris Toshok  <toshok@ximian.com>
17700
17701         Part of fix for #72827.
17702         * mono-debug.c (mono_debug_add_method): add lexical block data to
17703         the info we write.  Kind of a hack at the moment - we copy the
17704         lexical block info from the MonoDebugMethodInfo to the
17705         MonoDebugMethodJitInfo here, before writing it.
17706         (mono_debug_read_method): read the lexical block info.
17707
17708         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
17709
17710         * debug-mono-symfile.h: add lexical block support.
17711
17712         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
17713         support.
17714
17715 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * loader.c (mono_lookup_pinvoke_call): Fix warning.
17718
17719         * object.c (mono_runtime_free_method): Call mono_free_method () and
17720         put the TODOs there.
17721
17722         * loader.c (mono_free_method): Free up most memory allocated for 
17723         dynamic methods.
17724
17725 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17726
17727         * reflection.c: properly flag a Type argument to a
17728         named custom attr value (bug #72248).
17729
17730 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17731
17732         * reflection.c: reduce code duplication in named custom
17733         attribute encoding.
17734
17735 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
17736
17737         * reflection.c: properly encode custom attrs of type object
17738         (bug #72649).
17739
17740 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
17743
17744 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
17745
17746         * socket-io.c: load System.dll if it's not loaded already
17747         (bug #72850 and #70477).
17748
17749 2005-02-21  Martin Baulig  <martin@ximian.com>
17750
17751         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
17752         generic instances.
17753
17754 2005-02-21  Martin Baulig  <martin@ximian.com>
17755
17756         * reflection.c (mono_image_build_metadata): We also need to
17757         "fixup" the MethodImpl table after we computed the final method
17758         indices.  Call fixup_methodimpl() to do that.
17759         (fixup_methodimpl): New private method.
17760
17761 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
17762
17763         * assembly.c: special case mscorlib.dll (bug#72536),
17764         patch from Carlos Alberto Cortez.
17765
17766 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * threads-types.h threads.c: Fix build bustage.
17769
17770         * threads.c: Use a union for long<->double conversions.
17771
17772         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
17773         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
17774
17775         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
17776         containing the checkpoint call with NOT_TAKEN.
17777         
17778         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
17779         checkpoint before pushing the arguments, so they won't have to be
17780         spilled to stack.
17781
17782 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17783
17784         * domain.c, assembly.c, domain-internals.h: make some data
17785         const and relocation-free.
17786
17787 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17788
17789         * object.c, appdomain.c, class-internals.h: introduce the
17790         MonoClassRuntimeInfo structure to hold the info needed to
17791         use a class at runtime. Made mono_class_vtable() lock-free
17792         for all the appdomains.
17793
17794 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
17795
17796         * metadata-internals.h, image.c: introduce a per-image mempool to
17797         be used for memory that has the same lifetime as the image.
17798
17799 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
17800
17801         * domain.c: In mono_init_internal(), instead of selecting the first
17802         runtime version supported by an executable, get a list of all
17803         supported versions and select the one for which an mscorlib exists
17804         (since even if the runtime supports a given version, it doesn't mean
17805         that the framework for that version is installed).
17806         Modified get_runtimes_from_exe to support this behavior.
17807         In supported_runtimes, added information about additional system
17808         assembly versions.
17809         
17810         * assembly.c: Added support for more than one system assembly version
17811         per runtime version. Updated the assembly list.
17812         In mono_assembly_remap_version, removed the initial version check,
17813         since we don't know to which version we need to compare until we
17814         get the version set on which the assembly is based.
17815         Moved the code for loading corlib into the new method
17816         mono_assembly_load_corlib(), so it can be used by the initialization
17817         code.
17818         
17819         * domain-internals.h: Updated data structures and added declaration
17820         for mono_assembly_load_corlib.
17821
17822 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17823
17824         * reflection.c (resolve_object): Fix the creation of the signature in 
17825         the SignatureHelper case.
17826
17827         * assembly.c (mono_assembly_remap_version): Fix binary search.
17828         
17829 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
17830  
17831         * class.c: Added inheritance check when a method is overloaded (from a
17832         virtual method or when implementing an interface) and when a class is
17833         inherited. Added functions to set a failure for a class and to 
17834         retreive the exception from a failure.
17835         * class-internals.h: Added fields to MonoClass to keep the exception
17836         information status for inheritance (or other exceptions) to be thrown
17837         later (i.e. not at load time).
17838         * object.c: Throw the inheritance SecurityException when a type is to 
17839         be created with either class or method inheritance violations.
17840         * reflection.c|h: Fix when getting declsec from a class. Removed 
17841         unrequired code for class. Improved sanity in parameter naming.
17842         * security-manager.c|h: Added functions to check for class and method
17843         inheritance.
17844
17845 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17846
17847         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
17848         and has_finalize in dynamic types as well.
17849
17850 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
17851
17852         * culture-info-table.h : fixed currency format for en-GB (and so on).
17853
17854 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
17855
17856         * gc.c: ensure the GC handles never have 0 as a value.
17857
17858 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17859
17860         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
17861         a pointer to a struct to unmanaged code. Fixes #72625.
17862
17863 2005-02-16  Martin Baulig  <martin@ximian.com>
17864
17865         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
17866
17867 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
17870
17871 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17872
17873         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
17874
17875         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
17876         UnmanagedFunctionPointerAttribute, use it for determining calling convention
17877         etc. Fixes #71471.
17878
17879         * reflection.c (mono_custom_attrs_get_attr): New helper function.
17880
17881         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
17882
17883 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
17884
17885         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
17886         changes to make the current context a field in MonoThread.
17887
17888 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
17889
17890         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
17891         the last change.
17892         
17893         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
17894         extracted from mono_marshal_get_native_wrapper.
17895
17896         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
17897         to create wrappers around native functions.
17898
17899         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
17900         delegates for arbitrary function pointers. Fixes #71472.
17901
17902 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
17903
17904         * threads.c: cleaned up the code a little.
17905
17906 2005-02-15  Martin Baulig  <martin@ximian.com>
17907
17908         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
17909         the data table.
17910
17911         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
17912         allocate larger chunks if needed.
17913
17914 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17915
17916         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
17917         in by mistake.
17918
17919 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
17920
17921         * domain.c: keep the domains in an array and ensure the domain ids
17922         are kept small, so they can be used as indexes to domain-specific data
17923         with a small memory overhead.
17924
17925 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17926
17927         * icall.c: Handle byref types in Type icalls. Fixes #72544.
17928
17929 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
17930
17931         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
17932
17933 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17934
17935         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
17936
17937         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
17938         values.
17939
17940         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
17941         
17942 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17943
17944         * domain-internals.h: add the hashtable here.
17945
17946         * class-internals.h: Remove `info' from MonoMethod
17947
17948         * domain.c: Add a new hashtable, jit_trampoline_hash
17949
17950 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17951
17952         * object.c: don't set the value of static fields
17953         (fixes bug#72494).
17954
17955 2005-02-11  Martin Baulig  <martin@ximian.com>
17956
17957         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
17958         (mono_debug_add_method): Silently ignore the method if it's too big.
17959         (mono_debug_add_type): Likewise.
17960
17961 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
17962
17963         * threads.c, appdomain.c: remove #ifdefs from the code.
17964
17965 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17966
17967         * metadata-internals.h: Added flags to MonoAssembly to cache the most
17968         common security informations. This allows us to stay in unmanaged code
17969         when doing LinkDemand and it's special cases (except for the first 
17970         time for initialization). The flags a very much used with --security.
17971         * reflection.c|h: Added code to get declarative security attributes 
17972         for LinkDemand and InheritanceDemand. This required to refactor the
17973         existing code for Demand.
17974         * security-manager.c|h: Added new method fields for the special cases
17975         of LinkDemand.
17976
17977 2005-02-10  Martin Baulig  <martin@ximian.com>
17978
17979         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
17980         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
17981
17982 2005-02-10  Martin Baulig  <martin@ximian.com>
17983
17984         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
17985         debugging code; this is almost a complete rewrite.
17986
17987         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
17988
17989 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17990
17991         * domain.c, object.h: expose mono_string_equal () and 
17992         mono_string_hash ().
17993         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
17994         it's implemented in managed code.
17995
17996 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
17997
17998         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
17999         lo leak objects between appdomains.
18000
18001 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18002
18003         * assembly.c: old compilers compilation fix from 
18004         robertj@gmx.net (Robert Jordan).
18005
18006 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
18007
18008         * class-internals.h: Little reminder for the future.
18009
18010         * debug-helpers.c: Fix up wrapper_type_names
18011
18012 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18013
18014         * image.c, metadata-internals.h: when loading an image from a file,
18015         mmap all of it and use the same codepaths as when using a
18016         in-memory image: the code is simpler and we use less memory
18017         (both writable and readonly).
18018
18019 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18020
18021         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
18022         API to alloc runtime data structures that need to be tracked by the
18023         GC and contain pointers.
18024         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
18025         make the code more readable and eventually use a different GC.
18026
18027 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
18028
18029         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
18030         for out arguments.
18031         
18032 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
18033
18034         * object.c: In release_type_locks(), don't release the cctor lock
18035         if it has already been released. This fixes a crash in the
18036         thread5 test.
18037
18038 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18039
18040         * gc.c, marshal.c, icall.c: register a delegate for finalization
18041         only when the native function pointer has been allocated for it.
18042
18043 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18044
18045         * object.c: cleaned up some code, allocate objects that are
18046         pointer free with the atomic malloc variant. Allocate memory
18047         for static data from the mempool if it's pointer-free.
18048         Allocate the bounds array at the end of the array data, when needed.
18049         * object-internals.h, object.h: move a private function in a private
18050         header.
18051         * class.c: handle missing case in tracking references in fields.
18052
18053 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
18054
18055         * class.c, class-internals.h: keep track if a type has
18056         reference fields in either the instance or static fields.
18057
18058 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
18059
18060         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
18061         and renamed to MonoRuntimeInfo. Added fields to store the expected
18062         framework assembly version. Changed mono_get_framework_version and
18063         mono_get_runtime_version for a single mono_get_runtime_info method.
18064         
18065         * assembly.c: Added method to remap system assembly versions to the
18066         current executing runtime version. Removed old mapping code.
18067         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
18068         
18069         * icall.c, reflection.c: Track api changes.
18070
18071 2005-02-06  Miguel de Icaza  <miguel@novell.com>
18072
18073         * loader.c (method_from_memberref): Improve error reporting,
18074         produce the class name instead of the typeref/typedef index. 
18075
18076 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
18077
18078         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
18079
18080 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18081
18082         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
18083         stdcall and charset name mangling.  Reorganize the code and add
18084         some tracing stuff.
18085
18086 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18087
18088         * monodiet.c: More iters!
18089
18090         * marshal.c: Iter usage.
18091
18092         * icall.c: Iter usage.
18093
18094         * object.c: Use iters.
18095
18096         * debug-helpers.c: More iters
18097
18098 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18099
18100         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
18101         under win32.
18102
18103 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
18104
18105         * mono-debug-debugger.c: use iters
18106
18107         * class.c, class-internals.h: mono_class_setup_events is static
18108         now
18109
18110         * All callers: use iters
18111
18112 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18113
18114         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
18115         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18116
18117 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
18120
18121         * marshal.h: Add prototypes for ldfld/stfld_remote.
18122
18123         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
18124         this is called during startup.
18125         
18126 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18127
18128         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
18129         MonoThreadsSync struct private in monitor.c. Changed the way
18130         MonoThreadsSync is allocated so it's faster and there is no
18131         need to keep track of it with a finalizer and it uses less memory.
18132         This also finally allows us to allocate mono objects as ptrfree when
18133         there are no reference fields.
18134
18135 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
18136
18137         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
18138         disappearing link to the GC interface and use them to simplify
18139         the gchandles code.
18140
18141 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18142
18143         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
18144         stfld_remote which call mono_load/store_field_new. This allows methods
18145         calling ldfld/stfld wrappers to be AOTed.
18146
18147         * console-io.c: Include sys/filio.h under solaris.
18148         
18149         * console-io.c: Include curses.h if needed correctly.
18150
18151 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18152         
18153         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
18154         method->klass as well.
18155
18156         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
18157
18158         * class.c (mono_class_init): Switch on lazy initialization of 
18159         methods.
18160
18161         * class.c (mono_class_get_finalizer): Handle the case when the 
18162         finalizer is inherited.
18163
18164 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18165
18166         * console-io.c: <curses.h> is needed by term.h on solaris.
18167
18168 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
18169
18170         * icall.c, class-internals.h, monodiet.c, class.c: Remove
18171         mono_class_setup_properties where possible. Remove this ftn from
18172         the header file, and make it static.
18173
18174 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18175
18176         * loader.c: Add missing setup_... call.
18177
18178         * class.c: Add missing setup_... calls.
18179
18180         * class.c (mono_class_init): Switch on lazy initialization of 
18181         the generic vtable.
18182         
18183         * class.c (mono_class_init): Fix generics broken by the recent changes.
18184
18185         * monodiet.c (handle_type): Add missing setup_... calls.
18186
18187         * class.c: Back out garbage in previous patch.
18188         
18189         * class.c: Add missing setup_... calls.
18190
18191         * class.c (mono_class_get_method_from_name_flags): Avoid calling
18192         mono_class_setup_methods () if possible.
18193
18194         * class-internals.h (MonoClass): Add 'has_cctor' flag.
18195
18196         * class-internals.h (MonoCachedClassInfo): New structure.
18197
18198         * class.c: Initialize properties and events fields of MonoClass lazily.
18199
18200         * class.c: Add infrastructure for lazily initializing the methods and
18201         vtable fields of MonoClass. Not yet used.
18202
18203         * class.c (mono_class_get_finalizer): New helper function.
18204
18205         * class.c: Add infrastructure for loading some class related data from
18206         an AOT file.
18207
18208         * object.c: Add infrastructure for initializing the vtable from data
18209         in the AOT file.
18210
18211         * gc.c (run_finalize): Use mono_class_get_finalizer ().
18212
18213         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
18214         appropriate initialization function before accessing parts of the
18215         MonoClass structure.
18216
18217         * marshal.c: Fix warnings.
18218         
18219         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
18220
18221         * mono-debug-debugger.c (get_exception_message): Use 
18222         mono_class_get_method_from_name_flags ().
18223
18224 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
18225
18226         * reflection.c, appdomain.c: Replace a few manual searches that
18227         Zoltan missed. (Paolo approved this part of my initial patch).
18228
18229 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
18230
18231         * profiler.c: disable recording statistical events at report time.
18232
18233 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18234
18235         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
18236         to byteswap arrays of enum values, too (bug #72080).
18237
18238 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18239
18240         * appdomain.c (set_domain_search_path): Allow this to be called if
18241         domain->setup is not yet set.
18242
18243         * loader.c (mono_method_get_index): New helper function.
18244
18245         * loader.c reflection.c: Use mono_method_get_index ().
18246
18247         * class.c (mono_class_get_method_from_name_flags): New helper method.
18248
18249         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
18250         this.
18251
18252         * class.c (mono_class_get_cctor): New helper method.
18253
18254         * string-icalls.c object.c class.c marshal.c reflection.c: Use
18255         mono_class_get_method () to look up methods.
18256
18257 2005-02-01  Miguel de Icaza  <miguel@novell.com>
18258
18259         * console-io.c: Fix the build, this should work on Windows.
18260
18261 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
18262
18263         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
18264         be set to null to keep things valid
18265
18266 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18267
18268         * icall.c: added Console 2.0 icalls.
18269         * Makefile.am: added console-io.[ch]
18270         * console-io.[ch]: internal calls for Console 2.0 API.
18271
18272 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18273
18274         * class.c: make sure we consider all the interfaces
18275         when calculating max_interface_id (bug found by
18276         Jeroen Frijters running ikvm).
18277
18278 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18279
18280         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
18281         valuetype fields to null.
18282
18283         * object.c (set_value): Ditto. Fixes #71669.    
18284
18285 2005-01-31  Martin Baulig  <martin@ximian.com>
18286
18287         * metadata.c (mono_metadata_has_generic_params): New public
18288         function; checks whether something is a generic method.
18289
18290 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18291
18292         * appdomain.c: fix infinite recursion when adding assemblies.
18293
18294 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
18295
18296         * object.c: Fix small typo to return all items for Environment.
18297         GetCommandLineArgs.
18298
18299 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18300
18301         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
18302         reflection.c: more domain and assembly-unload related fixes
18303         and memory leaks plugs.
18304
18305 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18306
18307         * 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.
18308
18309 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18310
18311         * loader.c (mono_method_signature): Make this method lazy
18312         (mono_get_method_from_token): Don't computate the signature here.
18313
18314         Doing this saves quite a bit of memory. I got 90 kb on starting up
18315         monodoc. It should also save some disk reads on startup.
18316
18317         * *: MonoMethod->signature might be NULL now. You *MUST* use
18318         mono_method_signature.
18319
18320 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
18321
18322         * object.c (mono_runtime_get_main_args): Return an array from the
18323         current domain here. Fixes #71938.
18324
18325 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18326
18327         * monitor.c: formatting changes to comply with the
18328         mono coding style and remove #ifdefs from the code.
18329
18330 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18331
18332         * metadata.c, private.h: remove some unneeded data
18333         and use a more compact representation for table schemas.
18334
18335 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18336
18337         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
18338         to get a better distribution in hash tables.
18339         * *.c: use mono_aligned_addr_hash() where appropriate.
18340         * assembly.c: make var static.
18341
18342 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * domain-internals.h: Put MonoJitInfo on a diet.
18345
18346         * domain.c: Fix a warning.
18347
18348 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18349
18350         * gc.c: rework the gc handles code to reuse handles
18351         when freed.
18352
18353 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
18354
18355         * domain.c: fixed long standing bug in mono_string_equal() which
18356         was brought to light with the ldstr changes.
18357
18358 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18359
18360         * reflection.c: Remove warning by adding missing include for marshal.h
18361
18362 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
18363
18364         * domain.c, object.c: change the ldstr_table to hold
18365         MonoString* as keys: makes the runtime isinterned lookup
18366         faster and simplifies memory management.
18367
18368 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
18369  
18370         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
18371         possible to add imperative security checks before calling the icall.
18372         * reflection.c: Return security attributes on the original MonoMethod
18373         (and not the wrapped one). This fix permissions on icalls.
18374
18375 2005-01-25  Dick Porter  <dick@ximian.com>
18376
18377         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
18378         the check for mktime() support actually test the mktime() return
18379         value.  "Fixes" bug 71682, though the output is still different to
18380         MS.
18381
18382 2005-01-25  Martin Baulig  <martin@ximian.com>
18383
18384         * class.c (mono_class_is_assignable_from): Make this work for
18385         generic instances.
18386
18387 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
18388
18389         * marshal.c (mono_string_utf8_to_builder)
18390         (mono_string_builder_to_utf16): We might not have ownership of the
18391         string. In thise case, we need to create a new buffer.
18392
18393         * object-internals.h (mono_stringbuilder_capacity): sb->str might
18394         be null, in which case, use the default capacity.
18395
18396 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
18397
18398         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
18399         GC events to the profiler.
18400
18401 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
18402
18403         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
18404         if you don't want the GC to run.
18405
18406 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
18407
18408         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
18409         start providing a GC API and keeping different implementations in
18410         their own file.
18411         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
18412
18413 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18414
18415         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
18416         mmap rather than allocating a huge buffer.
18417         (mono_debug_close_mono_symbol_file): Free the buffer allocated
18418         above.
18419
18420 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18421
18422         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
18423         and CheckExecutionRights.
18424         * reflection.c|h: Keep the index of the declarative security to be 
18425         used, instead of the pointer, when AOT compiler is used. Also add 
18426         class initialization when requesting demands.
18427         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
18428         CheckExecutionRights. Both properties are now FALSE by default, and
18429         unmodifiable, unless the --security option is used.
18430
18431 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18432
18433         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
18434         reflection.c: properly refcount images and assemblies, many leaks fixed.
18435
18436 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18437
18438         * threadpool.c: increase the timeout for threads in the thread pool to
18439         10s.  Fixes bug #67159.
18440
18441 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
18442
18443         * class-internals.h: Sun's compiler insists on explicit
18444         signed on bit fields to handle then correctly.
18445
18446 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
18447
18448         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
18449         Make the size of the array fit only the number of invalid path
18450         chars that we have.
18451
18452         * class.c (_mono_class_get): Improve the error reporting when a
18453         class referenced is not found, to assist debugging. 
18454
18455 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
18456
18457         * threads.c: fix off-by-one error.
18458         * domain.c: free data allocated in the domain.
18459
18460 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * reflection.c (mono_method_body_get_object): Fill out exception info
18463         as well.
18464
18465         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
18466         structure.
18467         
18468 2005-01-19  Martin Baulig  <martin@ximian.com>
18469
18470         * loader.c (mono_get_method_constrained): Make this work again.
18471
18472 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
18473
18474         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
18475         guint16 to match the managed side.
18476
18477         * reflection.c (mono_reflection_body_get_object): Fill out local
18478         variables array.
18479
18480         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
18481         as well.
18482
18483         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
18484         'local_var_sig_token'.
18485
18486 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
18489         System.Drawing.
18490
18491         * reflection.c (mono_method_body_get_object): Handle abstract and
18492         runtime methods.
18493
18494 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
18495
18496         * marshal.c, loader.c, class-internals.h, reflection.c:
18497         store the emthod data for a wrapper in an array instead of a list.
18498
18499 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
18500
18501         * marshal.c: change the code to allocate memory more
18502         conservatively for method wrappers.
18503
18504 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18505
18506         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
18507         fields from MonoClass to the marshal info structure where they belong.
18508
18509 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
18510
18511         * class.c, object.c, class-internals.h, marshal.c: rearrange
18512         some fields and tweak some types to lower memory usage.
18513
18514 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * threads.c (signal_thread_state_change): Handle the case when the
18517         target thread is the current thread.
18518
18519         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
18520
18521         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
18522         emit_ptr_to_object_conv. 
18523
18524         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
18525         marshalling. Fixes #71352.
18526
18527 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18528
18529         * metadata.h, blob.h: move table enum to blob.h so it can be included
18530         in any header.
18531         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
18532         cut the size of MonoImage/MonoDynamicImage.
18533
18534 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18535
18536         * profiler.c (mono_profiler_install_simple): Fix default arguments.
18537
18538 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
18539
18540         * reflection.c, reflection.h, icall.c: add a function to check
18541         if an attribute type is defined for a metadata object.
18542
18543 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
18544
18545         * object-internals.h: Added some needed fields from StringBuilder class.
18546         * marshal.c: Set the maxCapacity when creating a StringBuilder.
18547
18548 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18549
18550         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
18551         threads before shutting down the runtime.
18552
18553         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
18554
18555 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18556
18557         * object-internal.h, threads.c: implement stacksize and 
18558         parameterized thread start functionality (requires
18559         matching corlib). Marked broken code for later removal.
18560
18561 2005-01-12  Martin Baulig  <martin@ximian.com>
18562
18563         * class-internals.h (MonoGenericClass): Moved the `initialized'
18564         flag to MonoDynamicGenericClass, removed `init_pending'.
18565         (MonoGenericInst): Added `is_reference' flag.
18566
18567 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
18568
18569         * reflection.c (mono_image_create_pefile): Only set the pe_offset
18570         inside the MSDOS header. Fixes #71201.
18571
18572         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
18573         gc thread.
18574         (mono_domain_finalize): Ditto.
18575
18576 2005-01-12  Martin Baulig  <martin@ximian.com>
18577
18578         * class.c (mono_get_shared_generic_class): Use the cache for
18579         non-dynamic generic classes.
18580
18581         * class-internals.h (mono_class_create_generic_2): Removed
18582         function prototype, this function is now static inside class.c.
18583
18584         * class.c (mono_class_create_generic_2): Made this static, only
18585         call it from mono_class_init() and mono_class_setup_parent().
18586         (collect_implemented_interfaces_aux): Call mono_class_init() on
18587         the interfaces we collect.
18588         (mono_class_setup_vtable): Call mono_class_init (class->parent).
18589
18590 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
18593         it a real thread handle.
18594
18595         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
18596         MonoJitExceptionInfo, since each catch clause needs its own variable.
18597         
18598 2005-01-11  Dick Porter  <dick@ximian.com>
18599
18600         * image.c (mono_pe_file_open): New variant on mono_image_open()
18601         that does not set up the CLI metadata; used for FileVersionInfo so
18602         it can get the data for windows binaries too.
18603         
18604         * process.c (process_read_string_block): Don't read off the end of
18605         the StringTable block.
18606
18607         These both fix bug 70766.
18608
18609 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
18610
18611         * gc.c: set some fields to NULL at GC cleanup time.
18612         * threads.c: if we quit the main thread, call exit ().
18613
18614 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18615
18616         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
18617
18618 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
18619
18620         * threads.h, threads.c, object.c: added accessor and settor for
18621         main_thread. Handle it specially when exiting from it: wait
18622         for other foreground threads to exit.
18623
18624 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18625
18626         * process.c, verify.c: remove some bloat.
18627
18628 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18629
18630         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
18631         the calling convention to cdecl under win32.
18632
18633 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
18634
18635         * object.c (mono_object_get_size): New function to get the size of
18636         an object instance.
18637
18638         * profiler.c (simple_allocation): Use above.
18639
18640 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
18641
18642         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
18643         ves_icall_System_AppDomain_getRootDomain (as it's not required to
18644         get an appdomain by it's id and we can't assume the root's id is 0).
18645         * domain-internals.h: Change the function prototype to match.
18646         * icall.c: Change the icall table for AppDomain.
18647
18648 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
18649
18650         * locales.c (string_invariant_compare_char): Only compute
18651         GUnicodeTypes in the case where we need them.  Test for ordinality
18652         first and return if so.
18653
18654         From the commit:
18655
18656                 /*
18657                  * FIXME: here we must use the information from c1type and c2type
18658                  * to find out the proper collation, even on the InvariantCulture, the
18659                  * sorting is not done by computing the unicode values, but their
18660                  * actual sort order.
18661                  */
18662
18663 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18664
18665         * loader.c: for P/Invoke methods, allow the "Internal" shared
18666         library name to refer to the calling process symbol namespace.
18667
18668 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18669
18670         * Makefile.am: Add the security manager to the build.
18671         * security-manager.c|h: New. Initialization of the security manager.
18672
18673 2005-01-07  Dick Porter  <dick@ximian.com>
18674
18675         * threads.c: 
18676         * monitor.c: Update thread state during Monitor and WaitHandle
18677         waits.  Fixes bug 71031.
18678
18679 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * reflection.c (property_encode_signature): Correctly handle when the
18682         property has no methods.
18683
18684 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18685
18686         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
18687         
18688         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
18689         fields from mb, not rmb. Fixes #71017.
18690
18691         * marshal.c (emit_ptr_to_str_conv): Add support for 
18692         ByValTStr -> string conversion. Fixes #71015.
18693
18694         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
18695
18696         * mempool.c (mono_mempool_contains_addr): New helper function.
18697
18698 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18699
18700         * metadata.c (mono_metadata_compute_size): Fix size calculation of
18701         HasSematics encoded fields.
18702         
18703         * metadata.c (mono_type_to_unmanaged): Improve error message for 
18704         invalid string marshalling.
18705
18706         * metadata.c: Fix warnings.
18707         
18708 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18709
18710         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
18711         profiler support.
18712
18713 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18714
18715         * domain.c object.c domain-internals.h: Revert part of r38077 since the
18716         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
18717         tests.
18718
18719 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18720
18721         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
18722         so methods containing these can be AOTed.
18723
18724 2005-01-03  Martin Baulig  <martin@ximian.com>
18725
18726         * loader.c (find_method): Removed the hack for generic instances.
18727         (method_from_memberref): If our parent is a generic instance, pass
18728         its generic type definition to find_method() and then inflate the
18729         method.
18730         (mono_get_method_constrained): Pass the generic type definition to
18731         find_method() and inflate the method later.
18732
18733         * class-internals.h (MonoStats): Added `generic_class_count'.
18734
18735         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
18736         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
18737
18738         * reflection.c (mono_custom_attrs_from_params): Don't ignore
18739         generic type definitions.
18740
18741 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * loader.c icall.c: Fix warnings.
18744
18745 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
18746
18747         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
18748         blittable types. Fixes #70864.
18749
18750 2004-12-29  Martin Baulig  <martin@ximian.com>
18751
18752         * icall.c
18753         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
18754
18755         * reflection.c (mono_method_get_object): Create a
18756         "System.Reflection.MonoGenericMethod" for inflated methods; don't
18757         call mono_get_inflated_method().
18758
18759         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
18760
18761 2004-12-27  Martin Baulig  <martin@ximian.com>
18762
18763         * class-internals.h (MonoMethod): Added `is_inflated' flag.
18764         (MonoMethodInflated): Added `inflated' field.
18765
18766         * class.c (mono_class_inflate_generic_method): Don't really
18767         inflate the method here; just set the `is_inflated' flag in the
18768         MonoMethod.
18769         (mono_class_get_inflated_method): Actually inflate the method here
18770         if it's not already inflated; we use the MonoMethodInflated's new
18771         `inflated' field as a cache.
18772
18773 2004-12-26  Martin Baulig  <martin@ximian.com>
18774
18775         * class.c
18776         (inflate_generic_class): Moved some code out of inflate_generic_type().
18777         (mono_class_inflate_generic_method): If we're already inflated,
18778         inflate the context and use the declaring method; ie. make sure
18779         the declaring method of an inflated method is always the generic
18780         method definition.
18781         (mono_class_create_from_typedef): Create
18782         `class->generic_container->context->gclass'.
18783
18784 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18785
18786         * metadata-internals.h, marshal.c, reflection.c: More
18787         MonoGHashTable->GHashTable.
18788
18789         * domain-internals.h, class.c: Change MonoGHashTable's into
18790         GHashTables for some cases where no gc stuff is used
18791
18792         All users: update apis
18793
18794 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
18795
18796         * metadata.c (builtin_types): Make this `const'. Makes this get
18797         put into the shareable section.
18798         (mono_metadata_init): Casts to make gcc happy.
18799
18800 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
18801
18802         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
18803
18804 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
18805
18806         * icall.c: Added an internal call to retrieve the position and length
18807         of assembly-level declarative security attributes (RequestMinimum, 
18808         RequestOptional and RequestRefuse). This is used by the Assembly class
18809         to re-create the corresponding permission sets.
18810
18811 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18812
18813         * marshal.c: fix the stelemref wrapper to be type correct
18814         (and faster).
18815
18816 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18817
18818         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
18819         to do key & 0x7fffffff. Hashtable already does this. It just
18820         results in longer code.
18821
18822 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18823
18824         * appdomain.c: Bump corlib version.
18825         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
18826         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
18827         * reflection.c|h: Add functions to get declarative security infos
18828         (blob position and length) for assemblies, classes and methods.
18829
18830 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
18831
18832         * reflection.c: sort the constant table (bug #70693).
18833
18834 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
18835
18836         * object-internals.h, threads.c, domain.c: add accessors for
18837         the MonoThread and MonoDomain tls keys.
18838
18839 2004-12-18  Martin Baulig  <martin@ximian.com>
18840
18841         * class.c (inflate_generic_type): If we're inflating a generic
18842         instance, set `ngclass->context->container = context->container';
18843         ie. the container we inflated into.
18844
18845         * metadata.c (mono_metadata_parse_generic_param): Reflect above
18846         inflate_generic_type() changes.
18847
18848 2004-12-17  Martin Baulig  <martin@ximian.com>
18849
18850         * class-internals.h
18851         (MonoGenericClass): Replaced `MonoType *generic_type' with
18852         `MonoClass *generic_class'.  Removed `dynamic_info'; if
18853         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
18854         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
18855
18856 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * exception.c (mono_exception_from_token): New helper function.
18859
18860 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18861
18862         * assembly.c (mono_assembly_load_with_partial_name): Call 
18863         mono_assembly_loaded before invoking the preload hooks. Fixes
18864         #70564.
18865
18866         * object-internals.h (MonoThread): Change culture_info and 
18867         ui_culture_info into an array.
18868
18869         * threads.c: Cache culture info objects from more than one appdomain.
18870
18871         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
18872         current UI culture.
18873
18874 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18875
18876         * threads.h threads.c appdomain.c: Clear the culture_info field of
18877         all threads during unloading if they point to an object in the dying
18878         appdomain.
18879
18880 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
18881
18882         * culture-info.h (TextInfoEntry): New struct
18883         * object-internals.h: sync with managed
18884         * locales.c: fill the `text_info_data' field
18885         * culture-info-tables.h: update
18886
18887 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
18888
18889         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
18890         collector.
18891
18892 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
18893
18894         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
18895         (ves_icall_ModuleBuilder_getMethodToken): Ditto
18896
18897 2004-12-12  Martin Baulig  <martin@ximian.com>
18898
18899         * mono-debug-debugger.c (write_type): If we're an enum and the
18900         builtin types have already been initialized, call mono_class_init().
18901
18902 2004-12-11  Martin Baulig  <martin@ximian.com>
18903
18904         * metadata.c (mono_metadata_load_generic_params): Added
18905         `MonoGenericContainer *parent_container' argument; automatically
18906         compute `container->is_method'; pass the correct owner to
18907         get_constraints().      
18908
18909         * reflection.c (compare_genericparam): Sort the GenericParam table
18910         according to increasing owners. 
18911
18912 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18913
18914         * profiler.c: allow disabling the default profiler.
18915
18916 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
18917
18918         * decimal.c, icall.c: allow disabling System.Decimal support.
18919
18920 2004-12-09  Marek Safar <marek.safar@seznam.cz>
18921
18922         * reflection.c: Add support for null attribute arguments.
18923
18924 2004-12-09  Martin Baulig  <martin@ximian.com>
18925
18926         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
18927         names to get rid of compiler warnings.
18928
18929 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18930
18931         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
18932         mono_marshal_load_type_info (). Fixes #69625.
18933         (mono_marshal_get_ptr_to_struct): Likewise.
18934
18935 2004-12-08  Martin Baulig  <martin@ximian.com>
18936
18937         * mono-debug.h: Bumped version number to 47.
18938
18939         * mono-debug-debugger.c
18940         (mono_debugger_event_handler, mono_debugger_event): Take two
18941         guint64 arguments insteed of a gpointer and a guint32.  
18942
18943 2004-12-08  Martin Baulig  <martin@ximian.com>
18944
18945         * debug-mono-symfile.h
18946         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
18947         `address' to `native_offset'.
18948
18949 2004-12-08  Martin Baulig  <martin@ximian.com>
18950
18951         * class.c (mono_class_create_from_typespec): Only inflate if we
18952         either have `context->gclass' or `context->gmethod'.
18953
18954 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18955
18956         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
18957
18958         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
18959
18960         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
18961
18962         * reflection.c (mono_assembly_get_object): Remove the workaround put
18963         in for the release.
18964         
18965         * appdomain.c: Use the corlib_internal field from MonoAssembly.
18966
18967         * appdomain.c: Bump corlib version.
18968
18969         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
18970         be visible in other appdomains.
18971
18972 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
18973
18974         * threads.c: Interlocked inc and dec for longs were messed up,
18975         use a KISS based impl for this. Fixes 70234
18976
18977 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18978
18979         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
18980
18981 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
18982
18983         * icall.c: fix to follow policy not to allow struct
18984         arguments in icalls.
18985
18986 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18987
18988         * process.c: make the patch that handles spaces in file paths work
18989         on mono/windows too.
18990
18991 2004-12-06  Martin Baulig  <martin@ximian.com>
18992
18993         * class.c (mono_class_create_generic): Call
18994         mono_class_setup_supertypes() if we're dynamic.
18995         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
18996
18997 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18998
18999         * object-internals.h: Add new fields to MonoThread.
19000
19001         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19002
19003         * icall.c threads-types.h threads.c: Add new icalls.
19004
19005         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
19006
19007         * object-internals.h (MonoReflectionAssembly): Sync object layout with
19008         managed side.
19009
19010         * appdomain.c: Bump corlib version.
19011
19012         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
19013         internal assemblies. Fixes #69181.
19014
19015 2004-12-05  Martin Baulig  <martin@ximian.com>
19016
19017         * class.c (mono_class_inflate_generic_signature): Make this a
19018         no-op if `context' is NULL or we don't have any type parameters;
19019         also copy `sentinelpos'.        
19020
19021 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
19022
19023         * image.c: Add unbox_wrapper_cache.
19024
19025         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
19026
19027         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
19028         function generator.
19029         
19030         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
19031         Fixes #70173.
19032
19033         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
19034         
19035 2004-12-04  Martin Baulig  <martin@ximian.com>
19036
19037         * loader.c (mono_method_get_signature_full): New public function;
19038         like mono_method_get_signature(), but with an additional
19039         `MonoGenericContext *' argument.
19040
19041         * class.c (mono_class_inflate_generic_signature): Formerly known
19042         as inflate_generic_signature(); make this public.
19043
19044 2004-12-04  Martin Baulig  <martin@ximian.com>
19045
19046         * metadata.c
19047         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
19048         instead of a `MonoGenericContainer *'.  
19049         (mono_metadata_parse_array_full): Likewise.
19050         (mono_metadata_parse_signature_full): Likewise.
19051         (mono_metadata_parse_method_signature_full): Likewise.
19052         (mono_metadata_parse_generic_inst): Likewise.
19053         (mono_metadata_parse_generic_param): Likewise.
19054         (mono_metadata_parse_mh_full): Likewise.
19055         (mono_type_create_from_typespec_full): Likewise.
19056
19057 2004-12-03  Martin Baulig  <martin@ximian.com>
19058
19059         * class-internals.h (MonoGenericContainer): Replaced the
19060         `MonoGenericContext * pointer with a `MonoGenericContext'
19061         structure and made it the first element.
19062
19063 2004-12-03  Martin Baulig  <martin@ximian.com>
19064
19065         * class.c
19066         (inflate_generic_type): Set the `context->container' when creating
19067         a new MonoGenericContext.
19068         (mono_class_inflate_generic_method): Likewise.
19069         (mono_class_create_from_typespec): Just use `context->container'
19070         to get the container.
19071
19072         * loader.c (method_from_methodspec): Set `context->parent' from
19073         `context->container' - and if that's a method container, use its
19074         parent.  Also set the `context->container' when creating a new
19075         MonoGenericContext.
19076         (mono_get_method_from_token): Use just `context->container' to get
19077         the container.
19078
19079         * metadata.c (do_mono_metadata_parse_generic_class): Also set
19080         `gclass->context->container'.
19081
19082         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
19083         the `context->container' when creating a new MonoGenericContext.
19084
19085 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
19086
19087         * reflection.c (compare_genericparam): Sort params with identical
19088         owner by their number. Fixes gen-111 on sparc.
19089
19090 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
19093         around the domain changes.
19094
19095         * appdomain.c (mono_domain_unload): Handle the case when the thread
19096         calling Unload is itself being aborted during unloading. Fixes #70022.
19097
19098         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
19099
19100         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
19101         checkpoint_func as an icall so it gets a wrapper.
19102         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
19103         in the cross-appdomain wrappers too.
19104
19105         * threads.c (mono_thread_has_appdomain_ref): Make this public.
19106
19107         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
19108
19109         * reflection.c: Fix some memory leaks.
19110         
19111 2004-12-02  Martin Baulig  <martin@ximian.com>
19112
19113         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
19114
19115         * metadata.c (generic_class_cache): New static hashtable.
19116         (mono_metadata_lookup_generic_class): New public method.
19117
19118 2004-12-02  Martin Baulig  <martin@ximian.com>
19119
19120         * class.c (mono_class_create_from_typedef): Call
19121         mono_class_setup_parent() and mono_class_create_mono_type() before
19122         parsing the interfaces.
19123
19124 2004-12-02  Martin Baulig  <martin@ximian.com>
19125
19126         * metadata.c (generic_inst_cache): New static hashtable.
19127         (mono_metadata_lookup_generic_inst): New public function.
19128         (mono_metadata_inflate_generic_inst): New public function.
19129         (mono_metadata_parse_generic_inst): New public function.
19130         (do_mono_metadata_parse_generic_class): Use the new
19131         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
19132         since this'll also use the cache.
19133
19134         * reflection.c (mono_reflection_bind_generic_method_parameters):
19135         Use mono_metadata_lookup_generic_inst() to use the new cache.
19136
19137         * class.c (inflate_mono_type): Use
19138         mono_metadata_inflate_generic_inst() to inflate a generic
19139         instance; this'll also use the new cache.
19140
19141         * loader.c (method_from_methodspec): Use
19142         mono_metadata_parse_generic_inst() and
19143         mono_metadata_inflate_generic_inst() rather than parsing it
19144         manually, so we can use the new cache.
19145
19146 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19147
19148         * threads.c (wait_for_tids): Do not incorrectly free threads when 
19149         the wait times out.
19150
19151 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19152
19153         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
19154         iter->args based on whether parameters are passed in registers (i.e.
19155         MONO_ARCH_REGPARMS is defined)
19156
19157 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
19160         the exception message. Fixes #70070.
19161         (method_from_methodspec): Fix warnings.
19162
19163 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19164
19165         * process.c: (complete_path) return the path quoted
19166
19167 2004-12-01  Martin Baulig  <martin@ximian.com>
19168
19169         * class-internals.h (MonoGenericInst): New structure.
19170         (MonoGenericClass): Replaced `type_argc', `type_argv' and
19171         `is_open' with `MonoGenericInst *inst'.
19172         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
19173         `is_open' with `MonoGenericInst *inst'.
19174
19175 2004-11-30  Martin Baulig  <martin@ximian.com>
19176
19177         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
19178
19179         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
19180         to `generic_class_cache'.
19181
19182         * metadata.c
19183         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
19184         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
19185         (mono_generic_inst_is_valuetype): Renamed to
19186         mono_generic_class_is_valuetype().
19187
19188         * class-internals.h
19189         (MonoGenericInst): Renamed to MonoGenericClass.
19190         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
19191         (MonoClass): Renamed `generic_inst' to `generic_class'.
19192         (MonoGenericContext): Renamed `ginst' to `gclass'.
19193
19194         * object-internals.h
19195         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
19196
19197         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
19198         mono_reflection_generic_class_initialize().
19199
19200         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
19201         now known as "System.Reflection.MonoGenericClass".
19202         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
19203
19204 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
19205
19206         * class-internals.h: Added a flag field to MonoClass to cache the
19207         declarative security attributes actions associated with the class.
19208         * domain-internals.h: Added booleans to MonoJitInfo to cache the
19209         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
19210         applicable to the JITted method.
19211         * reflection.c|h: Added functions to extract (as flags) which security
19212         actions are available (declaratively) for a method, class or assembly.
19213         * metadata.c|h: Added functions to search the declarative security
19214         table in the metadata.
19215         
19216 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
19217
19218         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
19219         EXPORTEDTYPES are already in the class name cache, so there is no
19220         need to add extra code here to look at them. Just removes a bit of
19221         cruft.
19222
19223         (ves_icall_System_Environment_get_TickCount): No need for #if
19224         WINDOWS. We already have the code in io-layer.
19225
19226 2004-11-28  Martin Baulig  <martin@ximian.com>
19227
19228         * loader.c
19229         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
19230         Fixes gen-112.cs.
19231
19232 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
19233
19234         * assembly.c (do_mono_assembly_open): Instead of having a
19235         conditional WITH_BUNDLE, incorporate support for bundles here, by
19236         having a global `bundles' variable holding a pointer to the actual
19237         bundles. 
19238
19239         (mono_register_bundled_assemblies): New API call used by the
19240         bundle code. 
19241
19242         See mkbundle.1 for details.
19243         
19244 2004-11-27  Martin Baulig  <martin@ximian.com>
19245
19246         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
19247         the vtable for generic methods.
19248
19249 2004-11-26  Martin Baulig  <martin@ximian.com>
19250
19251         * metadata.c
19252         (mono_metadata_generic_method_hash): New public function.
19253         (mono_metadata_generic_method_equal): Likewise.
19254
19255         * class-internals.h
19256         (MonoGenericContainer): Added `GHashTable *method_hash'.
19257
19258         * reflection.c (ReflectionMethodBuilder): Added
19259         `MonoGenericContainer *generic_container'.
19260         (reflection_methodbuilder_to_mono_method): Don't create a new
19261         MonoGenericContainer each time we're called.
19262         (mono_reflection_bind_generic_method_parameters): Use
19263         `container->method_hash' to cache the results so we don't create a
19264         different method if we're called several times with the same
19265         arguments.
19266
19267         * loader.c (method_from_methodspec): Use the new
19268         `container->method_hash' here, too.
19269
19270 2004-11-26  Martin Baulig  <martin@ximian.com>
19271
19272         * class.c (inflate_generic_signature): Correctly compute
19273         `res->has_type_parameters'.
19274         (mono_class_vtable): Use the `has_type_parameters' flag to
19275         determine whether we're a generic method.
19276
19277         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
19278
19279 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19280
19281         * object.c (mono_runtime_run_main): Fix a small memory leak.
19282
19283 2004-11-25  Martin Baulig  <martin@ximian.com>
19284
19285         * class.c (set_generic_param_owner): Fixed the loop.
19286
19287 2004-11-25  Martin Baulig  <martin@ximian.com>
19288
19289         * object.c (mono_class_vtable): Don't create any JIT wrappers for
19290         generic methods.
19291
19292 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
19295         names. Fixes #69787.
19296
19297 2004-11-24  Martin Baulig  <martin@ximian.com>
19298
19299         * class.c (mono_class_create_generic_2): If we don't have a
19300         `ginst->parent', inflate `gklass->parent' to get our parent.
19301
19302 2004-11-24  Martin Baulig  <martin@ximian.com>
19303
19304         * reflection.c (compare_genericparam): Correctly sort the
19305         GenericParam table; fixes #69779.
19306
19307 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
19308
19309         * reflection.c: When writing a PE file, don't create a huge
19310         buffer in memory. Just write the arrays we have to the file.
19311         This reduces memory usage.
19312
19313         * metadata-internals.h: MonoDynamicStream pefile is no longer used
19314         globally.
19315
19316 2004-11-17  Martin Baulig  <martin@ximian.com>
19317
19318         * class.c (mono_class_init): Don't setup `class->parent' for
19319         dynamic instances; moved this to mono_class_generic_2().
19320         (mono_class_create_generic): Also set `klass->inited' for dynamic
19321         generic instances.
19322         (mono_class_create_generic_2): Don't do anything for dynamic
19323         generic instances.  Set `klass->parent' here and also call
19324         mono_class_setup_parent() here. 
19325
19326         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
19327         `MonoType *parent' argument; set `ginst->parent' before calling
19328         mono_class_create_generic_2(), so we set the correct parent.
19329
19330 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
19331
19332         * reflection.c: allow getting attributes from ModuleBuilder
19333         (used by ikvm).
19334
19335 2004-11-17  Martin Baulig  <martin@ximian.com>
19336
19337         * class.c (mono_class_create_from_typedef): If a type parameter is
19338         inherited from an outer class, set its owner to that class.
19339
19340 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
19341
19342         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
19343           for (int*) written size. This fixes bug #69592.
19344
19345 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19346
19347         * icall.c: Added IsAuthenticodePresnet internal call.
19348         * image.c|h: New function that check a MonoImage for an Authenticode
19349         signature in the certificate PE data directory.
19350         * security.c|h: New internal call to ask the runtime if an 
19351         Authenticode signature seems referenced in the PE header.
19352
19353 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
19356
19357         * reflection.c (mono_image_create_pefile): Free the assembly streams
19358         after writing out the assembly file.
19359
19360         * object.c (mono_runtime_run_main): Fix small memory leak.
19361
19362         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
19363         property access modifiers. Fixes #69389.
19364
19365 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19366
19367         * domain.c, object.c, object-internals.h, domain-internals.h,
19368         object.h, marshal.c: keep dynamic code info per domain.
19369
19370 2004-11-15  Martin Baulig  <martin@ximian.com>
19371
19372         * class.c (mono_type_get_name_recurse): Put type arguments in
19373         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
19374         see bug #68387.
19375
19376 2004-11-15  Martin Baulig  <martin@ximian.com>
19377
19378         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
19379         (mono_class_setup_vtable): When computing `the_cname' for a
19380         generic instance, don't include the namespace since we'd otherwise
19381         add it twice.
19382
19383 2004-11-15  Martin Baulig  <martin@ximian.com>
19384
19385         * class.c (mono_class_create_generic): Changed return type to void.
19386         (mono_class_create_generic_2): New public function; setup
19387         `class->method', `class->field' and `class->interfaces' here
19388         instead of in mono_class_init().
19389
19390         * class.h (mono_class_create_generic): Moved to class-internals.h.
19391
19392 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
19393
19394         * reflection.c (mono_image_create_pefile): take a file HANDLE.
19395         rather than writing to memory, write to this file. Right now,
19396         we are just writting into a buffer, and copying that. However
19397         we can avoid the buffer later.
19398
19399         (mono_dynamic_stream_reset): new function
19400
19401         * icall.c, object-internals.h: update for the above.
19402
19403 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
19404
19405         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
19406         have been using gc'd memory. First it is slower, unlikely
19407         the comment in the source code said, secondly, it increases
19408         our footprint to do it in the gc.
19409
19410         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
19411         the method so that it does not have to copy to managed code.
19412
19413 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19414
19415         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
19416
19417 2004-11-12  Martin Baulig  <martin@localhost>
19418
19419         * reflection.c (mono_image_create_token): Allow generic method
19420         definitions here, since they may appear in an `.override'; see
19421         gen-98/gen-99 for an example.
19422
19423 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
19424
19425         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
19426         #69365.
19427
19428         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
19429         descriptive.
19430
19431 2004-11-11  Martin Baulig  <martin@ximian.com>
19432
19433         * class.c (mono_class_setup_vtable): In an explicit interface
19434         implementation, the method name now includes the arity.
19435
19436 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
19437
19438         * object.c (mono_array_full_copy): Fix warning.
19439
19440 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
19441
19442         * appdomain.c: Removed look_for_method_by_name(). Use the new method
19443         mono_class_get_method_from_name() instead.
19444         
19445         * class-internals.h: Added two new types of wrappers. 
19446         Added MonoRemotingTarget enum. Added new trampoline function type, which
19447         takes an additional MonoRemotingTarget value as parameter, so it is
19448         possible to request a trampoline for a specific target.
19449         
19450         * class.c: Added new mono_class_get_method_from_name() method.
19451         
19452         * class.h: In MonoRemoteClass, we can have now to vtables, one for
19453         general remoting sinks and one specific for cross domain calls.
19454         
19455         * debug-helpers.c: Added new wrapper names.
19456         
19457         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
19458         of a remote class.
19459         
19460         * image.c: Porperly delete value objects form the remoting invoke hashtable.
19461         
19462         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
19463         with several other methods (mono_marshal_get_xappdomain_dispatch,
19464         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
19465         and others) can generate a fast remoting wrapper for cross domain calls.
19466         More information can be found in docs/remoting.
19467         Other changes: Removed mono_find_method_by_name, and used
19468         mono_class_get_method_from_name instead.
19469         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
19470         is stored in the remoting invoke hashtable.
19471         
19472         * marshal.h: published the new method for getting the xdomain wrapper,
19473         and also added a method for getting the adequate wrapper for a given
19474         method and target.
19475         
19476         * object-internals.h, object.c: Added a couple of methods for capying and
19477         cloning arrays.
19478         Modified mono_install_remoting_trampoline, which takes the new remoting
19479         trampoline that has a remoting target as parameter.
19480         mono_class_proxy_vtable now also takes a remoting target as parameter, and
19481         will return the most suitable vtable for the target.
19482         Added mono_remote_class_vtable, which returns the vtable of a remote class
19483         (which can be the normal remoting vtable or the xdomain vtable).
19484         
19485         * threads.c: the xdomain invoke and dispatch wrappers must also be
19486         protected against interruptions.
19487
19488 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19489
19490         * icall.c: use memmove in BlockCopyInternal when the source and
19491         destination arrays are the same.
19492
19493 2004-11-09  Martin Baulig  <martin@ximian.com>
19494
19495         * class-internals.h (MonoGenericContainer): Removed `method' and
19496         `signature', replaced them with `is_method' and `is_signature'
19497         flags.  Added `context'.
19498
19499         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
19500         instead of a `MonoGenericContainer *'.
19501
19502         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
19503         for dynamic type parameters.
19504         (mono_metadata_load_generic_params): Setup `container->context'.
19505
19506         * reflection.c (mono_reflection_setup_generic_class): Setup
19507         `tb->generic_container->context'.
19508         (do_mono_reflection_bind_generic_parameters): Use
19509         mono_class_inflate_generic_type() to correctly inflate types,
19510         rather than using our own hack just for MONO_TYPE_VAR.
19511
19512 2004-11-09  Martin Baulig  <martin@ximian.com>
19513
19514         * class.c (mono_class_inflate_generic_method): Small fix; don't
19515         crash here.
19516
19517         * icall.c
19518         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
19519         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
19520         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
19521         (ves_icall_Type_BindGenericParameters): Likewise.
19522         (ves_icall_Type_get_IsGenericInstance): Likewise.
19523         (ves_icall_Type_GetGenericParameterPosition): Likewise.
19524         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
19525         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
19526         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
19527
19528 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19529
19530         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
19531         assembly versions and public key tokens. Fixes #69113.
19532
19533 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
19534
19535         * metadata.c: fix bug introduced with the type cache changes
19536         on 2004-11-06.
19537
19538 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
19541         the MonoClass pointer instead of the token in exception clauses.
19542         * reflection.c: updates for the above and make the code not depend
19543         on the structure of MonoExceptionClause.
19544
19545 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19546
19547         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19548         Add support for dynamic assemblies. Fixes #69114.
19549
19550         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
19551
19552 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19553
19554         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
19555         since most only those methods use it. the code member of
19556         MonoMethodPInvoke was dead, so that can be removed too. Also,
19557         remove inline_count (again, not used), and move slot so that it
19558         can share bits with some other flags. This saves 8 bytes in the
19559         structure and gives us about 50 kb back for mcs helloworld.cs
19560
19561         * *.[ch]: Do naming changes for the above.
19562
19563         * loader.c (mono_method_get_header): Lazily init the header
19564         on first access.
19565         (mono_get_method_from_token): don't init the header here
19566         (mono_free_method): the header may never be allocated
19567
19568         Overall, this saves 150 kb of unmanaged allocations
19569         for mcs helloworld.cs. That accounts for 10% of the unmanaged
19570         memory at runtime.
19571         
19572         * loader.c, loader.h (mono_method_get_header): new accessor.
19573
19574         * *.[ch]: use the above method. Prepares us to lazily load
19575         the header.
19576
19577         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
19578         three warnings, which are actual bugs (see 69206).
19579
19580         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
19581         unused. Saves a cool 4 bytes / method.
19582
19583 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
19584
19585         * metadata.c (builtin_types): Add types for System.Object here.
19586         (mono_metadata_parse_type_full): Cache MonoType*'s that are
19587         for a class or valuetype from klass->this_arg or klass->byval_arg.
19588
19589         On mcs for a hello world, this gets us down from 21836 MonoType's
19590         to 14560.
19591
19592         (mono_metadata_free_type): Account for the above change.
19593
19594 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
19597         exception instead of asserting if name is null.
19598         (ves_icall_System_AppDomain_GetData): Ditto.
19599
19600 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
19603         EnumBuilder.
19604
19605         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
19606         Return NULL when the domain does not have entry_assembly set.
19607
19608         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
19609         Add a 'resource_modules' argument.
19610         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
19611
19612         * reflection.c (mono_reflection_create_runtime_class): Move setting
19613         of wastypebuilder here, so mono_get_type_object () returns a MonoType
19614         for enums too.
19615
19616         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
19617         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
19618         Throw an ArgumentNullException if 'ptr' is null.
19619
19620         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
19621         assemblies here. Fixes #69020.
19622
19623 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19624
19625         * reflection.c (build_compressed_metadata): Fix the previous patch for
19626         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
19627         the stack.
19628
19629 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * assembly.c (mono_assembly_names_equal): Allow a match if one of
19632         the cultures is false. Fixes #69090.
19633
19634         * reflection.c (build_compressed_metadata): Fix invalid memory read 
19635         detected by valgrind.
19636         
19637         * reflection.c (mono_reflection_get_type): Avoid triggering a 
19638         TypeResolve multiple times for the same type. Fixes #65577.
19639
19640 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
19641
19642         * marshal.c: Avoid using ldftn to call managed functions. It is
19643         much slower than just a call.
19644
19645         * reflection.c (mono_module_get_object): free the basename we
19646         allocate here from glib.
19647         
19648         * reflection.c (ensure_runtime_vtable): make sure to free
19649         overrides.  Also, we were allocating an array of MonoMethod not an
19650         array of MonoMethod*.
19651
19652         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
19653
19654         * image.c (mono_image_close): free image->guid here.
19655
19656 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * reflection.c: Fix some spec conformance issues with the PE file
19659         structures so mcs compiled apps run on the Net 2.0 beta.
19660
19661 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
19664         Implement this. Fixes #67264.
19665
19666         * debug-helpers.h debug-helpers.c marshal.c: Move 
19667         mono_find_method_by_name to debug-helpers.c.
19668
19669 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * object.c (mono_release_type_locks): type_initialization_hash is
19672         a GHashTable.
19673
19674         * reflection.c object.c object-internals.h: Fix warnings.
19675
19676         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
19677         without accessors. Fixes #61561.
19678
19679         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
19680         application base from the root domain if not set. Fixes #65641.
19681         (mono_runtime_init): Fix warning.
19682
19683 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19684
19685         * appdomain.c: call mono_thread_pool_init.
19686         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
19687         of worker threads based on the number of CPUs and the environment
19688         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
19689         for non-windows (windows) systems.
19690
19691 2004-10-27  Chris Toshok  <toshok@ximian.com>
19692
19693         * mono-debug-debugger.c (write_class): don't call mono_class_init
19694         here, as even with the check for (!klass->init_pending), we get
19695         into a situation where we're hitting cycles in class
19696         initialization.  Fixes #68816.
19697
19698 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * image.c: Avoid overwriting values in the loaded_images_hash when an
19701         assembly is loaded multiple times. Fixes #61152.
19702
19703         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
19704         so multiple satellite assemblies for the same name can be loaded.
19705         Fixes #68259.
19706
19707         * mono_domain_assembly_preload: Actually return the loaded assembly, 
19708         not NULL.
19709
19710         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
19711         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
19712
19713         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
19714         pending finalizers are not invoked after the appdomain has been 
19715         unloaded. Fixes #67862.
19716
19717 2004-10-22  Martin Baulig  <martin@ximian.com>
19718
19719         * mono-debug-debugger.c
19720         (mono_debugger_runtime_invoke): Don't box valuetypes.
19721
19722 2004-10-22  Chris Toshok  <toshok@ximian.com>
19723
19724         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
19725         don't hide private methods.
19726
19727 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
19728
19729         * icall.c: Allows the runtime to "share" (when known) the public key
19730         token of an assembly. This avoid the need to recalculate the token 
19731         (from the public key) in managed code.
19732
19733 2004-10-21  Chris Toshok  <toshok@ximian.com>
19734
19735         * debug-helpers.c (append_class_name): argh, revert last patch.
19736         
19737 2004-10-21  Chris Toshok  <toshok@ximian.com>
19738
19739         * debug-helpers.c (append_class_name): use '+' as the delimiter,
19740         not '/', so that it matches what the debugger uses to look up
19741         methods.
19742
19743 2004-10-21  Martin Baulig  <martin@ximian.com>
19744
19745         * mono-debug-debugger.c (mono_debugger_throw_exception): New
19746         public method; this is called each time an exception is thrown and
19747         allows the debugger to use exception catch points.
19748
19749 2004-10-21  Martin Baulig  <martin@ximian.com>
19750
19751         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
19752         the stack pointer and the exception object in some struct and pass
19753         that to the debugger.
19754
19755 2004-10-21  Chris Toshok  <toshok@ximian.com>
19756
19757         * mono-debug-debugger.c (do_write_class): add instance/static
19758         event support.  We don't expose "raise" or "other" yet.
19759         (event_is_static): new method.
19760
19761 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
19762
19763         * mono-debug-debugger.c
19764         (mono_debugger_handle_exception): Remove
19765         bogus return value for fussy compilers.
19766
19767 2004-10-20  Martin Baulig  <martin@ximian.com>
19768
19769         * mono-debug-debugger.c
19770         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
19771         (mono_debugger_handled_exception): Likewise.
19772
19773 2004-10-20  Martin Baulig  <martin@ximian.com>
19774
19775         * mono-debug-debugger.h (MonoDebuggerEvent): Added
19776         MONO_DEBUGGER_EVENT_EXCEPTION.
19777
19778         * mono-debug-debugger.c (mono_debugger_handle_exception): New
19779         public function to send the debugger a notification for an
19780         exception and inform it about a catch/finally clause.
19781
19782 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
19785         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
19786         fix 2.95 build. 
19787
19788         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
19789
19790 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
19793         marshalled as [In,Out]. Fixes #58325.
19794
19795 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * reflection.c (mono_method_body_get_object): Implement some fields.
19798
19799 2004-10-12  Martin Baulig  <martin@ximian.com>
19800
19801         * reflection.c (mono_reflection_bind_generic_parameters): Small
19802         fix, correctly retrieve our parent from a generic instance.
19803
19804 2004-10-12  Martin Baulig  <martin@ximian.com>
19805
19806         * metadata.c (mono_metadata_generic_param_equal): We always have
19807         an owner.
19808
19809         * class.c
19810         (mono_class_from_generic_parameter): We need to have an owner.
19811         (my_mono_class_from_generic_parameter): Likewise.
19812
19813         * reflection.c (mono_reflection_setup_generic_class): Renamed to
19814         mono_reflection_create_generic_class() and added a new
19815         mono_reflection_setup_generic_class().  
19816         (mono_reflection_initialize_generic_param): If we're a nested
19817         generic type and inherited from the containing class, set our
19818         owner to the outer class.
19819
19820 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
19821
19822         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
19823
19824         * reflection.c (mono_method_body_get_object): New function to create
19825         a MethodBody object.
19826
19827         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
19828
19829 2004-10-11  Martin Baulig  <martin@ximian.com>
19830
19831         * metadata.c (_mono_metadata_type_equal): Renamed to
19832         do_mono_metadata_type_equal() and made static.
19833
19834 2004-10-11  Martin Baulig  <martin@ximian.com>
19835
19836         * appdomain.c: Bump corlib version number to 28.
19837
19838 2004-10-10  Martin Baulig  <martin@ximian.com>
19839
19840         * class-internals.h
19841         (MonoGenericInst): Added `MonoGenericContainer *container'.
19842         (MonoGenericMethod): Likewise.
19843         (MonoGenericContext): Likewise.
19844         (MonoGenericParam): Added `MonoGenericContainer *owner'.
19845
19846         * metadata.c
19847         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
19848         (do_mono_metadata_parse_generic_inst): Likewise.
19849         (mono_metadata_parse_type_full): New public method.  This is the actual
19850         mono_metadata_parse_type() implementation - with an additional
19851         `MonoGenericContainer *' argument.
19852         (mono_metadata_parse_array_full): Likewise.
19853         (mono_metadata_parse_signature_full): Likewise.
19854         (mono_metadata_parse_method_signature_full): Likewise.
19855         (mono_metadata_parse_mh_full): Likewise.
19856         (mono_type_create_from_typespec): Likewise.
19857         (mono_metadata_interfaces_from_typedef_full): New public method;
19858         this is similar to the other _full() methods, but we take a
19859         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
19860         (mono_metadata_parse_generic_param): Take an additional
19861         `MonoGenericContainer *' argument and lookup the MonoGenericParam
19862         from that container.
19863         (mono_metadata_generic_param_equal): New static method to compare
19864         two type parameters.
19865         (_mono_metadata_type_equal): New static method; takes an
19866         additional `gboolean signature_only' argument - if true, we don't
19867         compare the owners of generic parameters.
19868         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
19869         with a TRUE argument - do a signature-only comparision.
19870
19871         * loader.c: Use the new _full() methods and pass the
19872         MonoGenericContainer to them.
19873
19874         * object-internals.h (MonoReflectionTypeBuilder): Added
19875         `MonoGenericContainer *generic_container' field.
19876         (MonoReflectionMethodBuilder): Likewise.
19877
19878 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19879
19880         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
19881         case initial images of dynamic assemblies.
19882
19883         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
19884
19885         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
19886
19887         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
19888         length of event->other array.
19889         (typebuilder_setup_events): Ditto.
19890
19891         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
19892         'assembly_by_name' and add an 'assemblies' list.
19893
19894         * assembly.h assembly.c: Add a new search hook for determining whenever
19895         an assembly is already loaded. Use this instead of searching in the
19896         loaded_assemblies list.
19897
19898         * domain.c appdomain.c: Implement the new search hook so loaded 
19899         assemblies are now scoped by appdomain. Fixes #67727.
19900
19901 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * threads.c (mono_thread_attach): Initialize synch_lock field so
19904         mono_thread_detach works again.
19905
19906         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
19907         'lib' too. Fixes #63130.
19908
19909 2004-10-06  Jackson Harper  <jackson@ximian.com>
19910
19911         * culture-info-tables.h: regenerated.
19912
19913 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
19916         implemented by other interfaces in the result. Fixes #65764.
19917         
19918         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
19919         Handle unloadable modules without crashing.
19920
19921         * image.c (load_modules): Revert the previous patch since modules must
19922         have a fixed index inside the array.
19923         
19924         * image.c (load_modules): Don't include native modules in the modules
19925         array.
19926
19927 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * reflection.h: Add param_defaults field.
19930
19931         * reflection.c: Add support for parameter defaults in dynamic methods.
19932         Fixes #64595.
19933
19934         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
19935         an empty string when a type has no namespace. Fixes #64230.
19936
19937 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
19938
19939         * tabledefs.h: Added "internal" security actions to support non-CAS
19940         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
19941         Note: they do not seems to be used anymore in 2.0 (new metadata format)
19942
19943 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
19946         constructor of abstract class. Fixes #61689.
19947
19948 2004-10-04  Martin Baulig  <martin@ximian.com>
19949
19950         * class-internals.h (MonoGenericContainer): New type.
19951         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
19952         `MonoGenericContainer *generic_container'.
19953         (MonoClass): Replaced `gen_params' and `num_gen_params' with
19954         `MonoGenericContainer *generic_container'.
19955
19956         * metadata.c (mono_metadata_load_generic_params): Return a
19957         `MonoGenericContainer *' instead of a `MonoGenericParam *';
19958         removed the `num' argument.
19959
19960 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
19963         for dynamic images.
19964
19965         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
19966         machine fields.
19967
19968         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
19969
19970         * reflection.c: Save pe_kind and machine values into the generated
19971         image file.
19972
19973         * appdomain.c: Bump corlib version number.
19974
19975         * object-internals.h: Reorganize layout of LocalBuilder.
19976
19977         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
19978         New helper function.
19979
19980         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
19981         created MonoType for dynamic types. Fixes #66180.
19982
19983 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
19984
19985         * threadpool.c: the ares hashtable needs a critical section around it.
19986         this prevents some nasty segfaults
19987
19988 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19989
19990         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
19991         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
19992         bug 67324).
19993         
19994 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
19995
19996         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
19997         
19998 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19999
20000         * image.c: Always canonicalize image file names, to avoid loading
20001         the same assembly twice when referenced using a relative path.
20002
20003 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
20004
20005         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
20006
20007         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
20008
20009         * marshal.c: Fix warnings.
20010
20011 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
20012
20013         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
20014         attempting to marshal the delegate_trampoline as the method_addr.
20015         This patch has a static hashtable of marshalled delegates so that 
20016         we can map delegate_trampoline addresses back to delegates.  This
20017         allows a delegate passed to managed code to be passed back into native
20018         code.  Fixes #67039
20019
20020 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
20023
20024         * reflection.c (method_encode_code): Align method headers properly.
20025         Fixes #66025.
20026
20027 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20028
20029         * marshal.c: In the runtime invoke wrapper, reset the abort
20030         exception if it is cached. This avoids the automatic rethrowal of 
20031         the exception after the catch of the wrapper. Also check for pending
20032         interruptions before calling the managed method. This is done using
20033         the new method emit_thread_force_interrupt_checkpoint, since the
20034         normal checkpoint method is ignored when running the invoke wrapper.
20035         * object.c: If the abort exception is rethrown, set the abort_exc
20036         field of the thread, so it will be rethrown aftere every catch.
20037         * threadpool.c: Only run an interruption checkpoint if what has been
20038         requested is a stop of the thread (aborts will be ignored).
20039         * threads.c: By default, a thread will now never be interrumped while
20040         running the runtime invoke wrapper (this ensures that runtime_invoke
20041         will always return to the caller if an exception pointer is provided).
20042         There is a new special method mono_thread_force_interruption_checkpoint()
20043         to force an interruption checkpoint even if running a protected
20044         wrapper, which is used by the same runtime invoke wrapper to do a check
20045         at a safe point.
20046
20047 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
20048
20049         * object.c, object-internals.h: Implemented mono_release_type_locks,
20050         which releases the cctor locks held by a thread.
20051         * threads.c, threads.h: In thread_cleanup, release cctor locks held
20052         by a thread. Added mono_thread_exit() method to be used to safely stop
20053         a thread.
20054
20055 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20056
20057         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
20058         Move null check before dereference.  Avoid indexing beyond the end
20059         of the 'modules' array.
20060
20061 2004-09-28  Raja R Harinath  <rharinath@novell.com>
20062
20063         * metadata-internals.h (MonoImage): Add module_count field.
20064         * image.c (load_modules): Set image->module_count.
20065         (mono_image_load_file_for_image): Use image->module_count.
20066         * reflection.c (mono_image_load_module): Append to image->modules array 
20067         of dynamic assembly.
20068         (mono_module_get_object): Fix loop to actually increment index.
20069         Use image->module_count.
20070         * assembly.c (mono_assembly_load_references): Use image->module_count.
20071         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
20072         Likewise.
20073
20074 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
20075
20076         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
20077         Avoid assert on generic types.
20078
20079 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
20080
20081         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
20082
20083         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
20084
20085         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
20086         function to convert a MarshalSpec structure to its managed counterpart.
20087
20088         * reflection.c: Fix warnings.
20089         
20090         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
20091         field.
20092
20093         * icall.c (mono_create_icall_signature): Fix build.
20094
20095 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * icall.c: Add MakePointType icall.
20098
20099         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
20100         warnings.
20101
20102 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20103
20104         * threadpool.c: reuse allocated slots in the queue.
20105
20106 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
20109
20110         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
20111
20112         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
20113         previous change.
20114
20115         * tabledefs.h: Add constants for pinvoke attributes BestFit and
20116         ThrowOnUnmappableChar.
20117
20118         * icall.c (ves_icall_Type_GetPacking): New icall.
20119
20120 2004-09-24  Martin Baulig  <martin@ximian.com>
20121
20122         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
20123
20124 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20125
20126         * appdomain.c:
20127         (mono_domain_set): allow setting a domain that is being unloaded.
20128         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
20129         being unloaded.
20130
20131 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
20134         the GetCustomAttributes icall.
20135
20136 2004-09-23  Martin Baulig  <martin@ximian.com>
20137
20138         * object-internals.h (MonoReflectionGenericParam): Replaced
20139         'has_ctor_constraint', `has_reference_type' and `has_value_type'
20140         with `guint32 attrs'.
20141
20142 2004-09-23  Martin Baulig  <martin@ximian.com>
20143
20144         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
20145
20146 2004-09-23  Martin Baulig  <martin@ximian.com>
20147
20148         * object-internals.h (GenericParameterAttributes): New enum.
20149
20150 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
20153         
20154         * class.c (init_events): Fill out event->other field.
20155
20156         * class.c: Fix warnings.
20157
20158         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
20159
20160 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20161
20162         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
20163         walk which doesn't supply the IL offset.
20164
20165 2004-09-22  Martin Baulig  <martin@ximian.com>
20166
20167         * reflection.c (mono_reflection_setup_internal_class): If we're
20168         System.ValueType, System.Object or System.Enum, set
20169         `klass->instance_size' and create the vtable.
20170         (mono_reflection_create_internal_class): If we're an enum type,
20171         get the base class from our current corlib.
20172
20173 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * reflection.h (MonoResolveTokenError): New type.
20176
20177         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
20178         icall.
20179
20180         * icall.c: Add an 'error' argument to the ResolveToken icalls.
20181
20182 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
20183
20184         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
20185         Support also calling constructors, but only for already allocated objects.
20186
20187 2004-09-17  Geoff Norton <gnorton@customerdna.com>
20188
20189         * reflection.c (type_get_qualified_name): If the klass is null
20190         return the typename to avoid a NullRefEx.
20191         (encode_cattr_value): Get the qualified name of the boxed type,
20192         not the underlying enumtype.  Fixes #62984.
20193
20194 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
20195
20196         * marshal.c: Fix problems with previous checkin.
20197
20198 2004-09-21    <vargaz@freemail.hu>
20199
20200         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
20201         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
20202
20203         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
20204
20205 2004-09-21  Geoff Norton <gnorton@customerdna.com>
20206
20207         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
20208         should only return a type for pointers, arrays, and passbyref types.
20209         Fixes bug #63841.
20210
20211 2004-09-21  Martin Baulig  <martin@ximian.com>
20212
20213         * domain.c (mono_debugger_check_runtime_version): New public
20214         function.
20215
20216         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
20217
20218 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
20219
20220         * reflection.c: Added missing sort to the declarative security 
20221         attributes table. MS implementation stops seeing the attributes if the
20222         token number regress in the table (as shown by ildasm and permview).
20223
20224 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * object-internals.h (MonoReflectionModule): Add 'token' field.
20227         
20228         * reflection.c (mono_reflection_get_token): Add support for Module
20229         and Assembly.
20230         (mono_module_get_object): Set 'token' field.
20231         (mono_module_file_get_object): Set 'token' field.
20232
20233         * icall.c: Add new Assembly and Module icalls.
20234
20235         * appdomain.c: Bump corlib version.
20236
20237 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
20238
20239         * loader.h loader.c class.h class.c: Add helper functions for obtaining
20240         tokens of metadata objects.
20241
20242         * reflection.h reflection.c (mono_reflection_get_token): New function
20243         to obtain the token of a metadata object.
20244
20245         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
20246
20247 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
20248
20249         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
20250         
20251         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
20252
20253 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
20254
20255         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
20256         * object-internals.h: Added 3 MonoArray* members to MonoReflection
20257         AssemblyBuilder to access the permissions set in the class lib.
20258         * reflection.c: Added security attributes encoding step in 
20259         mono_image_build_metadata.
20260         * tabledefs.h: Added new security actions defined in 2.0:
20261         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
20262
20263 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20264
20265         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
20266         macro parameter.
20267
20268 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
20269  
20270         * locales.c: nullify the ICU_collator member of CompareInfo when it is
20271           finalized. There where random SIGSEVs at program termination, when
20272           an object being finalized was trying to do a string comparison and
20273           the current culture was already finalized.
20274  
20275 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20276
20277         * threads.c: call thread_cleanup before finishing the thread if we get
20278         there.
20279
20280 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
20281
20282         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
20283         assemblies from the parent. Fixes #65665.
20284
20285 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
20286
20287         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
20288         modifiers.
20289
20290 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
20291
20292         * reflection.h: add prototype for mono_get_dbnull_object
20293         * reflection.c: add prototypes for get_default_param_value_blobs 
20294         and mono_get_object_from_blob for fussier compilers
20295
20296 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
20297  
20298         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
20299         false deadlock checks in class initialization.
20300  
20301 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * image.c (mono_image_addref): Fix comment.
20304
20305         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
20306         possible.
20307
20308 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
20309
20310         * reflection.c (mono_param_get_objects): Modified to return
20311         ParameterInfo.DefaultValue object.
20312
20313         (get_default_param_value_blobs):
20314         (mono_get_object_from_blob):
20315         (mono_get_dbnull_object): New helper routines. 
20316
20317         * object.c (mono_get_constant_value_from_blob): New helper routine
20318         carved out from get_default_field_value ()
20319
20320         * object-internals.h (mono_get_constant_value_from_blob): Added
20321         function declaration.
20322
20323 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
20324
20325         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
20326         referenced assemblies. Fixes #62135.
20327
20328         * exception.h exception.c (mono_get_exception_file_not_found2): New
20329         helper function.
20330
20331 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
20332
20333         * class.h class.c: Add mono_type_get_underlying_type ().
20334
20335 2004-09-09  Geoff Norton <gnorton@customerndna.com>
20336
20337         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
20338         Fix GetTypes() to support dynamically created assemblies.
20339
20340 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
20341
20342         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
20343         
20344         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
20345         previous patch.
20346
20347         * reflection.h reflection.c loader.c: Allow dynamic construction of
20348         pinvoke methods. Fixes #65571.
20349         
20350         * reflection.c (mono_reflection_get_type): Revert previous change since
20351         it causes regressions.
20352
20353 2004-09-08  Martin Baulig  <martin@ximian.com>
20354
20355         * class.c (class_compute_field_layout): Don't call
20356         mono_class_layout_fields() for open generic instances.
20357
20358 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
20359         * threads.c appdomain.c: fix typo in GC macro
20360
20361 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20362
20363         * threads.c: don't call mono_thread_detach() in start_wrapper(),
20364         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
20365
20366 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * image.c (mono_image_close): Applied patch from 
20369         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
20370         assembly is loaded multiple times from data.
20371         
20372         * image.c (mono_image_open): Fix warning.
20373
20374 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20375
20376         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
20377         once. Fixes #58334.
20378         
20379         * reflection.c (mono_reflection_create_runtime_class): Initialize
20380         klass->nested_classes. Fixes #61224.
20381
20382 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20383
20384         * threads.c: sched_yield() on exit, to allow threads to quit.
20385
20386 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20387
20388         * object.c (mono_unhandled_exception): Remove leftover debug code.
20389
20390 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
20391
20392         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
20393
20394 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20395
20396         * marshal.c (emit_marshal_array): Really null terminate string arrays.
20397         
20398         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
20399
20400 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * marshal.c (emit_marshal_array): Null terminate string arrays.
20403         
20404         * marshal.c (raise_auto_layout_exception): Fix warning.
20405
20406         * reflection.c (mono_param_get_objects): Initialize the default value
20407         with DBNull.Value, not null. Fixes #62123.
20408
20409 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
20410
20411         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
20412         throw an exception with a cute explanation.
20413
20414 2004-09-06  Dick Porter  <dick@ximian.com>
20415
20416         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
20417         Close the new process's thread handle, as we don't use it.  The
20418         handle stays around forever otherwise.
20419
20420 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * object.c (arith_overflow): Fix warning.
20423
20424         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
20425         calling conventions in method refs. Fixes #65352.
20426
20427         * reflection.c: Fix warnings.
20428
20429 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20430
20431         * icall.c: Add a new icall for Array.Clear
20432
20433 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
20434
20435         * object.c: When allocating an array, we have to throw
20436         an overflow exception if any of the lengths are < 0.
20437
20438 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20439
20440         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
20441         properly. Also move implementation of string array marshalling to 
20442         managed code. Fixes #42316.
20443
20444 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20445
20446         * assembly.c: provide more information when loading an assembly fails.
20447
20448 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20449
20450         * filewatcher.c: don't expect the development fam package to be
20451         installed.
20452
20453 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
20454
20455         * marshal.c: Make a copy of the signature cookie since it will be
20456         freed by the caller.
20457         
20458         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
20459
20460         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
20461
20462         * metadata.c (mono_metadata_free_marshal_spec): New function to free
20463         marshal specs.
20464
20465         * marshal.c: More refactoring.
20466         
20467         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
20468         smaller functions.
20469
20470 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
20471
20472         * object.c: In mono_message_invoke, fill the output parameter array after
20473           calling the managed method (it was done before the call). This fixes
20474           bug #59299.
20475
20476 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
20479         as well.
20480
20481 2004-09-02  Martin Baulig  <martin@ximian.com>
20482
20483         * class.c (mono_class_instance_size): Don't allow generic type
20484         definitions or open generic instances.
20485         (mono_class_array_element_size): If we're a value type, call
20486         mono_class_instance_size() on the original class.
20487
20488         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
20489         handle generic instances.
20490
20491         * mono-debug-debugger.c (write_type): Handle generic instances
20492         like classes.
20493
20494 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
20497         the allocation request fails. Fixes #65089.
20498
20499         * object.c (mono_runtime_free_method): Do not call mono_free_method.
20500         
20501         * object.c (mono_runtime_free_method): New function to free a dynamic
20502         method.
20503
20504         * marshal.c (mono_delegate_free_ftnptr): New function to free the
20505         delegate trampoline.
20506
20507         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
20508         with hasthis as dynamic,
20509
20510         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
20511
20512         * domain.c (mono_jit_info_table_remove): New function to remove an
20513         entry from the jit info table.
20514
20515         * class-internals.h (MonoMethod): Add 'dynamic' field.
20516
20517         * loader.c: Fix warnings.
20518
20519 2004-09-01  Martin Baulig  <martin@ximian.com>
20520
20521         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
20522         instead of mono_debugger_lock() because the latter one is a no-op
20523         unless running in the debugger.
20524
20525 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * class.c (class_compute_field_layout): Classes with auto-layout or
20528         reference fields are not blittable.
20529         
20530 2004-09-01  Dick Porter  <dick@ximian.com>
20531
20532         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
20533         mono_image_get_filename() to get the assembly location.
20534
20535         * icall.c:
20536         * metadata.h: Fix compile warnings
20537
20538 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
20539
20540         * class.c (class_compute_field_layout): System.Object is blittable.
20541
20542         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
20543         as in/out. Fixes #59909.
20544
20545 2004-09-01  Martin Baulig  <martin@ximian.com>
20546
20547         * metadata.h (MONO_TYPE_ISREFERENCE): Call
20548         mono_metadata_generic_inst_is_valuetype() if we're a generic
20549         instance to check whether our underlying type is a reference type.
20550
20551 2004-09-01  Martin Baulig  <martin@ximian.com>
20552
20553         * metadata.c (mono_type_size): If we're a generic instance, call
20554         mono_class_value_size() for value types.
20555
20556 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
20557
20558         * marshal.c: Implement more custom marshalling functionality. Fixes
20559         #64915.
20560
20561 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20562
20563         * mono-debug.c, debug-mono-symfile.c: add some locking love.
20564
20565 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
20568
20569         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
20570
20571         * icall.c: Fix some warnings.
20572
20573         * threads.c (abort_appdomain_thread): Fix unref errors.
20574         (mono_thread_current): Fix THREAD_DEBUG define.
20575
20576 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20577
20578         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
20579
20580         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
20581
20582 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
20585         string arrays.
20586
20587 2004-08-28  Martin Baulig  <martin@ximian.com>
20588
20589         * metadata.c
20590         (mono_metadata_generic_inst_is_valuetype): New public function.
20591
20592         * metadata.h (MONO_TYPE_ISSTRUCT): Call
20593         mono_metadata_generic_inst_is_valuetype() if we're a generic
20594         instance to check whether our underlying type is a valuetype.
20595
20596 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20597
20598         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
20599         #63768.
20600
20601 2004-08-25  Martin Baulig  <martin@ximian.com>
20602
20603         * loader.c (mono_get_method_from_token): Abstract methods can also
20604         be generic and thus have type parameters.
20605
20606         * metadata-internals.h
20607         (MonoDynamicImage): Added `GPtrArray *gen_params'.
20608
20609         * reflection.c (mono_image_get_generic_param_info): Don't create a
20610         metadata row, just add an entry to the `gen_params' array.
20611         (build_compressed_metadata): Sort the `gen_params' array and then
20612         actually create the metadata.
20613
20614 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20615
20616         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
20617
20618 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
20621
20622 2004-08-24  Martin Baulig  <martin@ximian.com>
20623
20624         * class.cs (mono_class_is_subclass_of): Like an interface, a
20625         generic instance also derives from System.Object.
20626
20627 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20628
20629         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
20630         custom modifiers to be in any order. Fixes #61990.
20631
20632 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20633
20634         * object.c: Register mono_object_new_fast icall.
20635         
20636         * object.c (mono_class_get_allocation_ftn): Return to calling
20637         mono_object_new_fast, since it seems faster to compute the object 
20638         size in unmanaged code than passing it as a parameter.
20639
20640         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
20641
20642         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
20643         this function with Boehm as the oom handler, so we don't have to check
20644         the result of GC_malloc.
20645
20646         * object.c: Remove checks for oom.
20647
20648         * object.h object.c (mono_class_get_allocation_ftn): New function to
20649         return the icall which can be used to allocate an instance of a given
20650         class. 
20651
20652         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
20653
20654         * class-internals.h: Add 'enabled' field.
20655
20656 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
20657
20658         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
20659
20660 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
20661         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
20662         value 0x0010.
20663
20664 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20665
20666         * appdomain.c: use the Tls function for appdomain too,
20667         at Zoltan's request. Actually return in mono_context_get
20668
20669         * appdomain.c, profiler.c, threads.c: use __thread
20670
20671 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * appdomain.c threads.c: Call GC_CreateThread on windows.
20674
20675         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
20676         multiple libraries since this don't work on windows.
20677
20678 2004-08-18  Martin Baulig  <martin@ximian.com>
20679
20680         * class-internals.h
20681         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
20682         MonoMethodHeader.
20683
20684         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
20685         MonoMethodNormal since we also need it for abstract and interface
20686         methods.
20687
20688         * reflection.c
20689         (build_compressed_metadata): Sort the GenericParam table.
20690         (mono_image_create_token): Added `gboolean create_methodspec'
20691         argument; this is false when generating a MethodImpl token.
20692         (reflection_methodbuilder_to_mono_method): Abstract and interface
20693         methods may also have generic parameters.
20694
20695 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20696
20697         * appdomain.c: thread local alloc
20698
20699 2004-08-17  Martin Baulig  <martin@ximian.com>
20700
20701         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
20702
20703         * icall.c
20704         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
20705         argument.
20706
20707         * class.c (mono_type_get_full_name): New public function.
20708         (mono_type_get_name): Don't include the type arguments.
20709
20710 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * Makefile.am: Build static versions of libmetadata and libmonoruntime
20713         for inclusion into the mono executable.
20714
20715 2004-08-16  Martin Baulig  <martin@ximian.com>
20716
20717         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
20718         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
20719
20720 2004-08-14  Martin Baulig  <martin@ximian.com>
20721
20722         * class.c (dup_type): Also copy the `byref' field.
20723
20724 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20725
20726         * reflection.c (create_dynamic_mono_image): Revert the last change 
20727         since it breaks bootstrap.
20728
20729 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20730
20731         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
20732
20733         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
20734         not free them with g_free.
20735
20736 2004-08-11  Martin Baulig  <martin@ximian.com>
20737
20738         * reflection.c (mono_reflection_setup_internal_class): Also call
20739         mono_class_setup_mono_type() if we already have a `tb->type.type'.
20740
20741 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
20742
20743         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
20744         called during default (first) AppDomain creation. Keep track of
20745         Evidence when loading assemblies.
20746
20747 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20748
20749         * opcodes.c, opcodes.h: reduce runtime relocations.
20750
20751 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20752
20753         * culture-info.h, locales.c: fixes and chages to sue the new
20754         optimized format of the locale data.
20755         * culture-info-tables.h: regenerated.
20756
20757 2004-08-06  Geoff Norton <gnorton@customerdna.com>
20758         
20759         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
20760
20761 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
20762
20763         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
20764         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
20765         * domain-internals.h: icall declaration.
20766         * icall.c: icall registration.
20767         * object-internals.h: New fields in MonoAssembly for CAS.
20768
20769 2004-08-05  Duncan Mak  <duncan@ximian.com>
20770
20771         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20772         CEE_LDELEM_ANY.
20773
20774 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
20775
20776         * reflection.c: fix to deal with object[] arrays in custom ctors
20777         (bug #62550).
20778
20779 2004-08-05  Martin Baulig  <martin@ximian.com>
20780
20781         * class.c (mono_class_array_element_size): Added support for
20782         generic instances and correctly handle "recursive" types.
20783
20784 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20785
20786         * assembly.c: Fix warnings.
20787
20788 2004-08-04  Martin Baulig  <martin@ximian.com>
20789
20790         * class.c
20791         (mono_type_get_name_recurse): Added `gboolean include_arity'
20792         argument specifying whether or not we should include the generic
20793         arity in the type name.
20794         (_mono_type_get_name): New static function.
20795         (mono_class_setup_vtable): If we're a generic instance, don't
20796         include the generic arity in the names of explicit method
20797         implementations.        
20798
20799 2004-08-03  Martin Baulig  <martin@ximian.com>
20800
20801         * class.c (mono_type_get_name_recurse): Enclose the generic type
20802         arguments in `<', '>'.
20803
20804 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20805
20806         * gc.c: make GC warning messages use the trace API, they are just
20807         noise to most of the users.
20808
20809 2004-08-03  Martin Baulig  <martin@ximian.com>
20810
20811         * debug-mono-symfile.c (read_string): Correctly read the string.
20812
20813 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20814
20815         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
20816         
20817         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
20818         icalls.
20819         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
20820
20821 2004-07-30  Martin Baulig  <martin@ximian.com>
20822
20823         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
20824         Reflect latest symbol writer changes.   
20825
20826 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20827
20828         * object.c: always create an object if null is passed
20829         to Invoke() where a valuetype is expected.
20830
20831 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20832
20833         * marshal.c (mono_marshal_init): make managed
20834         signatures match native ones better for 64bits.
20835
20836 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20837
20838         * appdomain.c: hack to build correctly the private bin path on windows.
20839         Fixes bug #61991.
20840
20841 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20842
20843         * assembly.c: Load mscorlib from the correct framework directory
20844           (mono/<version>/mscorlib.dll).
20845         * appdomain.h: Added prototypes for new functions.
20846         * internals.h: Added some prototypes.
20847         * domain.c: When initializing the runtime, get from the executable and
20848           the configuration files the runtime version that the app supports.
20849           Added support methods for reading app.exe.config. Added list of versions
20850           supported by the JIT. Added two new methods: mono_init_from_assembly,
20851           which initializes the runtime and determines the required version from
20852           the provided exe file, and mono_init_version, which initializes
20853           the runtime using the provided version.
20854         * icall.c: Get machine.config from version-specific directory.
20855         * reflection.c: When generating an image, embed the version number
20856           of the current runtime.
20857
20858 2004-07-28  Dick Porter  <dick@ximian.com>
20859
20860         * socket-io.c
20861         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
20862         returned sockaddr size before creating the remote address object.
20863         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
20864         61608.
20865
20866 2004-07-28  Dick Porter  <dick@ximian.com>
20867
20868         * locales.c (string_invariant_compare_char): Fix invariant char
20869         compares between upper and lower cases.  Fixes bug 61458.
20870
20871 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
20872         
20873         * marshal.c: actually cache stelem.ref wrappers.
20874         
20875 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20876
20877         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
20878         sections and remove the mono_cli_rva_map () function.
20879
20880 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20881
20882         * debug-mono-symfile.c: fix one more endianess issue, from a patch
20883         by Geoff Norton (<gnorton@customerdna.com>).
20884
20885 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
20886
20887         * class.c: fix class loads for pointer types (typeof(int) !=
20888         typeof(int*)).
20889
20890 2004-07-27  Martin Baulig  <martin@ximian.com>
20891
20892         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
20893         reading the debugging information from an external ".mdb" file.
20894
20895 2004-07-24  Martin Baulig  <martin@ximian.com>
20896
20897         * reflection.c (mono_image_get_type_info): Only write a class
20898         layout entry if we actually have a size or a packing size.
20899
20900 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20901
20902         * reflection.c (type_get_fully_qualified_name): 
20903         insert cast to get type checking of ?: with non-gcc compilers
20904
20905 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
20906
20907         * rand.c: use g_getenv for both lookups of
20908         MONO_EGD_SOCKET
20909
20910 2004-07-17  Martin Baulig  <martin@ximian.com>
20911
20912         * reflection.c (mono_reflection_bind_generic_method_parameters):
20913         Set `gmethod->reflection_info'.
20914
20915 2004-07-17  Martin Baulig  <martin@ximian.com>
20916
20917         * class.c (mono_class_create_from_typedef): Insert the newly
20918         created class into the hash table before computing the interfaces
20919         since we could be called recursively.
20920
20921 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20922
20923         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
20924         function to implement stelem.ref in managed code
20925         * class-internals.h, debug-helpers.c: a new wrapper type
20926         for the above.
20927
20928 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
20929
20930         * gc.c: allow GC handles to work even when no GC is compiled in.
20931         Fix part of bug #61134 (GetAddrOfPinnedObject).
20932
20933 2004-07-13  Peter Williams  <peter@newton.cx>
20934  
20935         * process.c (complete_path): Make sure we don't attempt to execute
20936         directories.
20937  
20938 2004-07-12  Geoff Norton <gnorton@customerdna.com>
20939
20940         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
20941           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
20942           and will add/subtract the hour if needed
20943
20944 2004-07-12  Martin Baulig  <martin@ximian.com>
20945
20946         * reflection.c (mono_field_get_object): If we have
20947         `field->generic_info', take the attributes from
20948         `field->generic_info->generic_type'.    
20949
20950 2004-07-12  Martin Baulig  <martin@ximian.com>
20951
20952         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
20953         This function must be called before initializing the runtime.
20954         (mono_debug_init_1): New function; call this after initializing
20955         the runtime, but before loading the assembly.  It tells the
20956         debugger to load corlib and the builtin types.
20957
20958         * mono-debug-debugger.c: Did some larger changes in the debugging
20959         code; support recursive class declarations, make sure we actually
20960         add all classes.
20961
20962 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20963
20964         * debug-helpers.c: undo my previous patch and fixed the real issue in
20965         ../mini/exceptions-x86.c
20966
20967 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20968
20969         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
20970         when no HOME env. variable was set and a NullRef was thrown in a .cctor
20971         called from other .cctors.
20972
20973 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
20974
20975         * loader.c: Removed the mono_loader_wine_init hack now that we are
20976         doing a managed version of Windows.Forms.
20977
20978 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20979
20980         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
20981         threadpool.c, threads.c: remove static data from rootset.
20982
20983 2004-07-09  Dick Porter  <dick@ximian.com>
20984
20985         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
20986         Don't do any more processing if the matched length was 0.  It was
20987         increasing the size of the string before.  Fixes bug 61167.
20988
20989 2004-07-09  Dick Porter  <dick@ximian.com>
20990
20991         * socket-io.h:
20992         * socket-io.c
20993         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
20994         Add support for SO_PEERCRED if its available.
20995
20996 2004-07-09  Peter Bartok <pbartok@novell.com>
20997         * loader.c: winelib.exe.so error message is now only displayed if
20998         MONO_DEBUG is set. To help us avoid questions when people are trying
20999         out the new Managed.Windows.Forms.
21000
21001 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
21004         for isinst and castclass wrappers.
21005
21006         * class-internals.h icall.c: Move registration and lookup of JIT icalls
21007         to libmetadata from the JIT, so they could be used by the marshalling
21008         code and the interpreter.
21009
21010         * marshal.c: Register marshalling related JIT icalls here instead of
21011         in mini.c. Use CEE_MONO_ICALL instead of the family of 
21012         CEE_MONO_PROC<x> opcodes to call marshalling functions.
21013
21014         * metadata.h: Remove unneeded marshalling conversions.
21015
21016         * opcodes.c: Update for new opcodes.
21017         
21018 2004-07-08  Martin Baulig  <martin@ximian.com>
21019
21020         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
21021         (mono_debug_get_domain_data): Make this function static.
21022
21023 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21024
21025         * gc.c, object.h: add nice GC handle API for embedders.
21026
21027 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21028
21029         * reflection.c: more changes for the new api
21030
21031         * object.c: When we reflect on a field w/ a constant value, it
21032         will not have a memory location, so we must access metadata. Also,
21033         allow easier reading of strings so that we can read them from
21034         the constant data.
21035
21036         * class.c (mono_class_layout_fields): no need for literal fields here.
21037
21038         * class-internals.h: api changes for const fields
21039
21040         * icall.c (ves_icall_get_enum_info): use new apis for const fields
21041
21042 2004-07-06  Martin Baulig  <martin@ximian.com>
21043
21044         * mono-debug.h: Increment version number to 44.
21045
21046         * mono-debug.c (mono_debug_add_wrapper): The second argument is
21047         now a gpointer, rewrote this whole method.
21048
21049         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
21050         function.  Add information about the wrapper in a new "misc table".
21051
21052         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
21053         for the new misc table.
21054
21055 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21056
21057         * metadata-internals.h image.c: Add a cache for helper signatures.
21058
21059         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
21060
21061 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
21064         delegates from a delegate. Fixes #61033.
21065         
21066         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
21067         marshalling of stringbuilder arrays. Fixes #59900.
21068
21069 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21070
21071         * icall.c: Add EnumBuilder:setup_enum_type icall.
21072
21073 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21074
21075         * icall.c: Added a new icall for the property version of
21076         OffsetOfStringData.
21077
21078 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21079
21080         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
21081         it has a constant size across platforms.
21082
21083         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
21084         stack trace.
21085
21086 2004-06-29  Martin Baulig  <martin@ximian.com>
21087
21088         * mono-debug.c (mono_debug_add_method): Protect the whole function
21089         in mono_debugger_lock(), not just parts of it.
21090
21091 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21092
21093         * reflection.c: make sure padding bytes in heaps are zeroed.
21094
21095 2004-06-24  David Waite  <mass@akuma.org>
21096
21097         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
21098         image.c, loader.c, locales.c, marshal.c, metadata.c,
21099         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
21100         string-icalls.c, threads.c: change to C90-style comments from C99 /
21101         C++ -style
21102
21103 2004-06-24  Dick Porter  <dick@ximian.com>
21104
21105         * threads.c
21106         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
21107         return createdNew.  Fixes bug 60412.
21108
21109         * threads-types.h: 
21110         * icall.c: Add createdNew parameter to CreateMutex icall
21111
21112 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21113
21114         * reflection.c, object-internals.h: save default value in params.
21115
21116 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21117
21118         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
21119         no need to build a new path combining that with the application base.
21120         Fixes bug #60442.
21121
21122 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21123
21124         * reflection.c: fixed minor standard compliance issues.
21125
21126 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
21127
21128         * reflection.c: fixed issue with encoding some custom attributes
21129         (arrays in properties and fields, bug #60411).
21130
21131 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21132
21133         * reflection.c: fix start address when copying the public key token.
21134
21135 2004-06-23  Martin Baulig  <martin@ximian.com>
21136
21137         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
21138         the `exc' object in a static object to put it into the GC's root set.
21139
21140 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21141
21142         * reflection.c: make mono_reflection_setup_internal_class ()
21143         callable a second time to setup a new parent class.
21144
21145 2004-06-23  Dick Porter  <dick@ximian.com>
21146
21147         * threads.c: Check for WAIT_IO_COMPLETION return values.
21148
21149 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
21150
21151         * appdomain.c: Removed the g_free on the public key token. Now copy 
21152         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
21153         * assembly.c: Added public key token string value when loading 
21154         assemblies. Fix bug #60439.
21155         * icall.c: Added missing informations (like public key) in 
21156         GetReferencedAssemblies. Fix #60519.
21157         * image.h: Changed definition for public key token from const char*
21158         public_tok_value to guchar public_key_token [17];
21159         * reflection.c: Updated for changes to public key token.
21160
21161 2004-06-22  Lluis Sanchez Gual
21162
21163         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
21164         for the field in base classes.
21165
21166 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21167
21168         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
21169         mark headers as not supported, they are installed only for use by the
21170         debugger.
21171
21172 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
21173
21174         * *.c, *.h: avoid namespace pollution in public headers.
21175
21176 2004-06-21  Martin Baulig  <martin@ximian.com>
21177
21178         * exception.c (mono_get_exception_security): It's in
21179         "System.Security", not in "System".
21180
21181         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
21182         the exception classes.
21183
21184 2004-06-21  Martin Baulig  <martin@ximian.com>
21185
21186         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
21187         Protect the exception object from being finalized.
21188
21189 2004-06-21  Martin Baulig  <martin@ximian.com>
21190
21191         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
21192         public function.
21193
21194 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
21195
21196         * reflection.c: Load the assembly in mono_reflection_type_from_name,
21197         if it was not loaded before. Fix parts of #60439.
21198
21199 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
21200
21201         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
21202         code that was broken since Ben's change: wrappers are now
21203         dependent on the method signature only again.
21204
21205 2004-06-21  Martin Baulig  <martin@ximian.com>
21206
21207         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
21208         added interface support.
21209
21210 2004-06-21  Martin Baulig  <martin@ximian.com>
21211
21212         * class.c (mono_vtable_get_static_field_data): New public method.
21213
21214 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
21215
21216         * filewatcher.c : Windows build fix to be compliant with API changes.
21217
21218 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21219
21220         * class.h, class.c: more accessors.
21221         * metadata.h, metadata.c: prepare for hiding MonoType and
21222         MonoMethodSignature: people should use the accessors from now on
21223         outside of the tree.
21224
21225 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21226
21227         * *.c, *.h: more API cleanups.
21228
21229 2004-06-18  Jackson Harper  <jackson@ximian.com>
21230
21231         * assembly.c: Trace loading assemblies.
21232         * loader.c: Trace loading native libraries.
21233         * mono-config.c: Trace loading config files.
21234         
21235 2004-06-18  Dick Porter  <dick@ximian.com>
21236
21237         * locales.c: Tell ICU the lengths of strings, it can cope with
21238         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
21239
21240 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21241
21242         * image.c: swapped name/filename;
21243
21244 2004-06-18  Martin Baulig  <martin@ximian.com>
21245
21246         * mono-debug-debugger.c (write_class): Write the parent class at
21247         the end of the header.
21248
21249 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
21250
21251         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
21252
21253 2004-06-17  Raja R Harinath  <rharinath@novell.com>
21254
21255         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
21256         (bundle_obj): New conditional define.
21257         (BUILT_SOURCES): Remove.
21258         ($(bundle_srcs)): Make parallel-make safe.
21259         (libmonoruntime_la_LIBADD): Make unconditional.
21260         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
21261         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
21262
21263 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
21264
21265         * culture-info-tables.h: It was inconsistent with the latest
21266           supp info files.
21267
21268 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
21269
21270         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
21271         be loaded.
21272
21273         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
21274         with gcc 2.95.
21275
21276 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
21277
21278         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
21279         cleaned up public header threads.h.
21280
21281 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21282
21283         * Makefile.am, *.c, *.h: more API cleanups.
21284
21285 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21286
21287         * Makefile.am: removed monosn from compilation.
21288         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
21289         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
21290         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
21291         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
21292         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
21293         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
21294
21295 2004-06-15  Jackson Harper  <jackson@ximian.com>
21296
21297         * assembly.c: Make locales lower case when searching the GAC for
21298         assemblies. gacutil will always make locales lowercase when
21299         installing so this effectively makes them case insensitive.
21300         
21301 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
21302
21303         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
21304         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
21305           parameter which allows to choose whether the wait can be interrupted or 
21306           not. Also added the method mono_monitor_enter(), which locks the monitor
21307           using an infinite wait and without allowing interruption.
21308           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
21309           interrupted.
21310         * object.h: Added new fields in MonoThread. suspend_event holds the event
21311           used to susped/resume the thread. synch_lock is the lock object to use for
21312           modifying the thread state.
21313         * threads.c: Use the new synch_lock object for locking, instead of "this",
21314           which can generate deadlocks.
21315           Moved thread state change in Thread.Sleep and Thread.Join from managed
21316           to unmanaged code. This avoids a deadlock when the thread was suspended
21317           just after acquiring the thread lock.
21318           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
21319           Implemented Thread.Suspend using an event instead of ThreadSuspend,
21320           which is not fully implemented in the io-layer.
21321         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
21322
21323 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
21324
21325         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
21326         threads-types.h: more API cleanups.
21327
21328 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21329
21330         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
21331         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
21332         threadpool.c, threads.c: first pass at the exported API cleanup.
21333
21334 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21335
21336         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
21337
21338 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21339
21340         * icall.c: added internalGetHome.
21341
21342 2004-06-14  Dick Porter  <dick@ximian.com>
21343
21344         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
21345         possible to return successfully when '.' or '..' were the only
21346         entries in a directory, but were skipped.  The MonoIOStat was not
21347         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
21348         Fixes bug 59574.
21349
21350 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21351
21352         * reflection.c: make binaries run on .Net 1.1 by default.
21353
21354 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21355
21356         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
21357
21358 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
21359
21360         * marshal.c: keep track of struct size with explicit layout
21361         (bug #59979).
21362
21363 2004-06-12  Martin Baulig  <martin@ximian.com>
21364
21365         * mono-debug-debugger.c: Comment out a debugging g_message().
21366
21367 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
21368
21369         * reflection.c, reflection.h: do not free custom attrs that are cached.
21370         * icall.c: use braces to make code clearer.
21371
21372 2004-06-11  Martin Baulig  <martin@ximian.com>
21373
21374         * class.h (MonoInflatedField): New type.
21375         (MonoClassField): Replaced `MonoType *generic_type' with
21376         `MonoInflatedField *generic_info'.
21377
21378         * icall.c
21379         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
21380
21381 2004-06-11  Martin Baulig  <martin@ximian.com>
21382
21383         * reflection.c (mono_image_create_method_token): Correctly encode
21384         varargs methods.
21385
21386 2004-06-11  Martin Baulig  <martin@ximian.com>
21387
21388         * metadata.c (mono_metadata_parse_method_signature): When parsing
21389         a MethodDef which has VarArgs, also set sentinelpos if we don't
21390         have any parameters.
21391
21392 2004-06-11  Martin Baulig  <martin@ximian.com>
21393
21394         * verify.c (mono_method_verify): In CEE_CALL, use
21395         mono_method_get_signature() to get the method's signature, unless
21396         we're a PInvoke method.
21397
21398 2004-06-10  Jackson Harper  <jackson@ximian.com>
21399
21400         * assembly.c: Use <path>/lib/mono/gac for the extra paths
21401         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
21402         logical name as the supplied path is just a prefix to the gac not
21403         the direct path to it.
21404         
21405 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
21406
21407         * reflection.c: make the token for a created method match
21408         the token of the MethodBuilder it was created from
21409         (IKVM requires this behaviour now).
21410
21411 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
21412
21413         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
21414         reflection.c, socket-io.c: leak fixes.
21415
21416 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21417
21418         * icall.c: handle sentinel pos in vararg methods in position different
21419         from 0.
21420
21421 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21422
21423         * culture-info-tables.h: freshly generated.
21424
21425 2004-06-09  Martin Baulig  <martin@ximian.com>
21426
21427         * loader.c (mono_get_method_constrained): Call `mono_class_init
21428         (constrained_class)'.   
21429
21430 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
21431
21432         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
21433         any methods. Fixes #59629.
21434
21435 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21436
21437         * culture-info-tables.h: reflecting locale-builder updates.
21438
21439 2004-06-08  Dick Porter  <dick@ximian.com>
21440
21441         * object.h:
21442         * locales.c: Fixed compile warnings, including a real bug in
21443         CompareInfo_internal_compare.
21444         
21445 2004-06-08  Dick Porter  <dick@ximian.com>
21446
21447         * locales.c
21448         (ves_icall_System_Globalization_CompareInfo_internal_index):
21449         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21450         Double-check the resuls of usearches, because ICU currently
21451         ignores most of the collator settings here.  Fixes bug 59720.
21452         
21453 2004-06-08  Dick Porter  <dick@ximian.com>
21454
21455         * locales.c
21456         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
21457         Fix memory leak and segfault-causing typo.  No idea how this one
21458         lasted so long without being noticed.
21459
21460 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
21461
21462         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
21463         any methods. Fixes #59629.
21464
21465 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21466
21467         * assembly.c:
21468         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
21469         own the critical section before). Removed dead code (that's done
21470         in the preload hook).
21471
21472         (mono_assembly_load_with_partial_name): call the preload hook.
21473
21474 2004-06-08  Martin Baulig  <martin@ximian.com>
21475
21476         * metadata.c (mono_metadata_signature_alloc): Default
21477         `sentinelpos' to -1.
21478
21479         * reflection.c (mono_image_get_array_token): Likewise.
21480
21481 2004-06-08  Martin Baulig  <martin@ximian.com>
21482
21483         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
21484
21485         * metadata.c (mono_metadata_parse_method_signature): When parsing
21486         a MethodDef which has VarArgs, set sentinelpos.
21487
21488         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
21489         `gint16' since we're using -1 for non-varargs methods.
21490
21491         * reflection.c
21492         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
21493         (method_encode_signature): Added varargs support.
21494         (method_builder_encode_signature): Likewise.
21495         (mono_image_get_varargs_method_token): New static method.
21496         (mono_image_create_method_token): New public method; this is
21497         called via an icall instead of mono_image_create_token() when
21498         calling a varargs method.       
21499
21500 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
21501
21502         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
21503
21504 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21505
21506         * culture-info-tables.h : Reflecting the latest locale-builder that
21507           fixed empty array representation ({} to {0}).
21508
21509 2004-06-07  Jackson Harper  <jackson@ximian.com>
21510
21511         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
21512         looking up extra gac paths. This allows MONO_GAC_PATH to act
21513         exactly like a prefix.
21514         
21515 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21516
21517         * reflection.c (mono_reflection_type_from_name): Make a copy of the
21518         type name before modifying it. Fixes #59405.
21519
21520 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
21521
21522         * culture-info.h: added fields for "all datetime patterns".
21523         * locales.c: (  ves_icall_System_Globalization_CultureInfo
21524           _construct_datetime_format ()): fill xxx_patterns fields.
21525         * object.h: added fields for "all datetime patterns" to
21526           MonoDateTimeFormatInfo.
21527         * culture-info-tables.h: reflecting locale-builder updates.
21528
21529 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
21532         the event has no add and remove methods. Fixes #59629.
21533
21534 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
21535
21536         * object.c: Fixed possible integer overflow when allocating large
21537         strings.
21538
21539 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21540
21541         * culture-info-tables.h: reflecting locale-builder updates.
21542
21543 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
21544
21545         * culture-info-tables.h: reflecting locale-builder updates.
21546
21547 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
21548
21549         * culture-info-tables.h: reflecting locale-builder updates.
21550
21551 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
21552
21553         * threads.c: Made Thread.Sleep abortable.
21554
21555 2004-06-02  Martin Baulig  <martin@ximian.com>
21556
21557         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
21558
21559         * debug-mono-symfile.h: Bumped symbol file version number to 37.
21560
21561 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
21562
21563         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
21564
21565 2004-05-30  Jackson Harper  <jackson@ximian.com>
21566
21567         * reflection.c: Do not hardcode assembly versions or public key
21568         tokens anymore. All of this except the corlib section was dead
21569         code anyways.
21570         
21571 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21572
21573         * object.c (mono_runtime_invoke_array): Automatically create boxed
21574         objects for byref valuetypes if needed. Fixes #59300.
21575         
21576         * object.c (mono_method_return_message_restore): Handle 
21577         MONO_TYPE_OBJECT as well.
21578
21579 2004-05-28  Jackson Harper  <jackson@ximian.com>
21580
21581         * reflection.c: The modified type encoding was causing build
21582         problems. Reverted for now.
21583         
21584 2004-05-28  Jackson Harper  <jackson@ximian.com>
21585
21586         * reflection.c/h: Take an assembly ref so that we dont create
21587         fully qualified names when encoding types in the same assembly as
21588         the custom attribute being emitted.
21589         * appdomain.c: Increment version number.
21590         
21591 2004-05-26  Duncan Mak  <duncan@ximian.com>
21592
21593         * icall.c
21594         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
21595         Set the full version number (major, minor, build, revision).
21596
21597 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
21598
21599         * marshal.c (emit_struct_conv): increment src/dst after blit
21600         (mono_marshal_get_managed_wrapper,
21601         mono_marshal_get_native_wrapper): make sure we have marshalling
21602         info before marshalling params (info computation affects
21603         blittable)
21604
21605         * class.c (class_compute_field_layout): correctly deal with
21606         blittable
21607         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
21608         value types (as per what windows dows by default)
21609         (mono_class_setup_mono_type): System.ValueType is blittable
21610         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
21611         blittable
21612
21613         * marshal.c (mono_marshal_load_type_info): flag types  as
21614         non-blittable if the native layout doesn't match the managed
21615         layout
21616
21617 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21618
21619         * appdomain.c: don't add stuff in the private search path that is
21620         above the application base. If application base is not set, there's
21621         no private search path.
21622
21623 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21624
21625         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
21626         byref struct arguments in native->managed marshalling.
21627
21628 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
21629
21630         * marshal.c (mono_marshal_get_runtime_invoke): correctly
21631         cache methods using signature (special case for methods
21632         that are value type or string class)
21633         
21634         * image.c (mono_image_close): clean up allocated GSList's
21635         in runtime_invoke_cache.
21636
21637 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21638
21639         * mono-config.c: set the correct path for mono_cfg_dir on windows when
21640         there's no MONO_CFG_DIR environment variable defined.
21641
21642 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21643
21644         * threads.c: windows version must be >= 0x0500 to include OpenThread.
21645
21646 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
21647
21648         * threadpool.c: Really wait for 500ms after the async call, even if the wait
21649           is interrumped.
21650         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
21651           before waiting for it, and call CloseHandle after the wait to unref it.
21652           This will make sure that handles are not disposed too early.
21653
21654 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21655
21656         * appdomain.c:
21657         * appdomain.h:
21658         * icall.c: removed
21659         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
21660         needed now.
21661
21662         * object.c: se the application_base only for the domain that runs
21663         Main. Fixes bug #59216,
21664
21665 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21666
21667         * appdomain.c:
21668         * object.c: only the domain in which Main is run have
21669         SetupInformation.ConfigurationFile set, so moved a few lines from
21670         appdomain.c to object.c.
21671
21672 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21673
21674         * appdomain.c: we tried to load [name].(dll|exe), but according
21675         to bug #57710, we must also try [culture]/[name].(dll|exe) and
21676         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
21677         There's a test case attached to bug #58922.
21678
21679 2004-05-27  Dick Porter  <dick@ximian.com>
21680
21681         * icall.c:
21682         * file-io.c: Implemented icalls for locking and unlocking regions
21683         in a file.
21684         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
21685         FALSE on error (fixes both compiler warning and real bug.)
21686
21687 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
21688
21689         * culture-info-tables.h: reflecting locale-builder updates.
21690
21691           (Added missing ChangeLog entry for 05/26)
21692
21693 2004-05-27  Jackson Harper  <jackson@ximian.com>
21694
21695         * locales.c: Fix some cut and paste errors.
21696         
21697 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21698
21699         * mono-config.c: set the correct path for config. directory on windows.
21700
21701 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21702
21703         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
21704           on win32.
21705
21706 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
21709         from pinvoke functions.
21710         
21711         * marshal.c (mono_ftnptr_to_delegate): Implement this.
21712
21713 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
21714
21715         * culture-info-tables.h: reflecting locale-builder updates.
21716
21717 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
21718
21719         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
21720         #59086.
21721
21722 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
21723
21724         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
21725         * icall.c: Modified icalls for RNG.
21726         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
21727         Windows (CryptoAPI).
21728
21729 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21730
21731         * locales.c: Fix build.
21732
21733 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
21734
21735         * culture-info-tables.h: reflecting locale-builder updates.
21736
21737 2004-05-25  Jackson Harper  <jackson@ximian.com>
21738
21739         * locales.c: When creating the current culture use the $LANGs
21740         specific culture. So DateTimeFormat and NumberFormat entries are created.
21741         
21742 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
21743
21744         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
21745         a char array as parameter.
21746
21747 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
21748
21749         * image.c: In mono_image_open(), always use an absolute path name to
21750           look for already loaded images.
21751
21752 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
21753
21754         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
21755         missing in the windows build (like older cygwin include files).
21756
21757 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
21758
21759         * icall.c: Fixed check for possible integer overflow in Buffer_
21760         BlockCopy icall. Replaced comments style // by /* */.
21761
21762 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21763
21764         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
21765         
21766         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
21767         check after MONO_VTADDR. Fixes pinvoke2.exe.
21768
21769         * marshal.h marshal.c metadata.h: Add beginnings of support for
21770         ftnptr -> delegate marshalling.
21771
21772 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21773
21774         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
21775         * threads.c: Fix warnings.
21776
21777 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21778
21779         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
21780         * icall.c: Registered icalls for Suspend and Resume.
21781         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
21782           Thread.Abort.
21783         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
21784         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
21785         * process.c: Use WaitForSingleObjectEx.
21786         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
21787           checkpoints.
21788         * threads.c, threads.h: Make use of new Ex wait methods. Improved
21789           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
21790           for Suspend and Resume. Added new mono_thread_stop, used for stoping
21791           background threads. Added basic support for Abort in Windows.
21792           Start new threads using a managed delegate invoke wrapper. This wrapper
21793           has an interruption checkpoint that is needed since an interruption
21794           can be requested before the thread leaves the unmanaged code that starts 
21795           the thread.
21796         * marshal.c: Added interruption checkpoint after every native call, and
21797           also before managed calls for wrappers called from unmanaged code to
21798           go into managed code.
21799         * object.h: Added new field in MonoThread to keep track of interruption
21800           requests.
21801
21802 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21803
21804         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
21805         calls.
21806
21807 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21808
21809         * appdomain.c:
21810         * assembly.c:
21811         * gc.c:
21812         * locales.c:
21813         * mono-config.c:
21814         * rand.c: getenv -> g_getenv (windows!)
21815
21816         * process.c: complete_path is also used on non-windows platforms.
21817
21818 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21819
21820         * icall.c: new signature for Process_Start.
21821
21822         * process.[ch]: new signature for Process_Start. If we're on windows
21823         and UseShellExecute is false, we have to search for the program by
21824         ourselves if we don't get a full path.
21825
21826 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21827
21828         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
21829         marshalling and call CleanUpNativeData if needed. Fixes #58646.
21830
21831 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21832
21833         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
21834         Fixes bug #58373.
21835
21836 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21837
21838         * process.c: use double quotes to quote program name and arguments on
21839         windows. Fixes bug #58575.
21840
21841 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21842
21843         * file-io.c: don't return "." and ".." when using windows Find*File.
21844
21845 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
21846
21847         * marshal.c: Don't pass wrappers to message init because method 
21848         addressed used to lookup metadata. part of remoting[2|3] fix.
21849
21850 2004-05-15  Jackson Harper  <jackson@ximian.com>
21851
21852         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
21853         path is essentially the same as MONO_PATH except that it points to
21854         GACs instead of lib directories.
21855         * loader.h: The user gac is gone so we dont need function to
21856         enable/disable it.
21857         * mono-config.c: user gac option is now gone.
21858         
21859 2004-05-15  Jackson Harper  <jackson@ximian.com>
21860
21861         * culture-info.h: Make defines more consistent, add calendar data
21862         to the culture info table.
21863         * culture-info-tables.h: Add basic calendar data. Basically
21864         everyone gets default gregorian until all the data is
21865         updated.
21866         * locales.c: Use the new consistent defines. Set calendar data for
21867         culture info objects.
21868         * object.h: add a field for calendar data to CultureInfo
21869         
21870 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21871
21872         * image.c: image->runtime_invoke_cache is keyed on signatures now.
21873         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
21874         a signature.
21875         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
21876         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
21877         an extra param that is the pointer of the method to invoke. The IL for
21878         the invoke method is no longer specific to the method, but to the
21879         signature of the method. Thus, we can share the same code for multiple
21880         methods. This reduces the number of methods that have to be compiled.
21881
21882 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
21885
21886         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21887
21888         * icall.c: Optimize Buffer.BlockCopy.
21889
21890 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21891
21892         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
21893         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
21894         quote). Changed them to "MMMM yyyy".
21895
21896 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
21897
21898         * rand.c
21899         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
21900
21901 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
21902
21903         * reflection.h: Updated after changes to managed structures.
21904
21905         * appdomain.c: Bump corlib version.
21906
21907 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21908
21909         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
21910         windows.
21911
21912 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21913
21914         * Makefile.am: link to ../os/libmonoos.la on windows.
21915
21916         * assembly.c:
21917                 -If MONO_DEBUG, warn about non-existing directories in
21918                 MONO_PATH.
21919                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
21920                 compile time variable.
21921                 -Removed init_default_path and call mono_set_rootdir from
21922                 libmonoos.a instead (windows only).
21923
21924         * assembly.h: declare mono_assembly_getrootdir().
21925
21926         * domain.c:
21927         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
21928
21929         * loader.c: s/getenv/g_getenv/
21930
21931 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
21934
21935         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
21936
21937         * metadata.h: Add new marshalling conversions.
21938
21939         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
21940         function.
21941
21942         * reflection.c (mono_reflection_get_type): Lookup the type in all
21943         modules of a multi-module assembly. Fixes #58291.
21944
21945 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21946
21947         * threads.c: Before aborting a background, set the StopRequested
21948         state.  This avoids throwing the Abort exception.
21949         In mono_thread_manage, don't continue with the shutdown until all
21950         aborted threads have actually stopped.
21951
21952 2004-05-10  Jackson Harper  <jackson@ximian.com>
21953
21954         * locales.c: Remove the modifier from culture names.
21955         
21956 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21957
21958         * Makefile.am: monosn is not installed any more. It has been deprecated
21959         in favor of sn.
21960
21961 2004-05-07  Jackson Harper  <jackson@ximian.com>
21962
21963         * locales.c
21964         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
21965         Fix array construction, add bailout if the length is 0.
21966
21967 2004-05-07  Dick Porter  <dick@ximian.com>
21968
21969         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
21970         machine doesn't have a DNS entry.  Patch by Urs Muff
21971         (umuff@quark.com), fixes bug 57928.
21972
21973 2004-05-06  Jackson Harper  <jackson@ximian.com>
21974
21975         * reflection.c: Handle null PublicTokens properly. alloc mem for
21976         assembly names culture so we dont crash when freeing it.
21977         
21978 2004-05-06  Jackson Harper  <jackson@ximian.com>
21979
21980         * assembly.c: Check the usergac when loading with partial names.
21981         
21982 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21983
21984         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
21985         does nothing for now (not required for Linux/Windows) but the class
21986         library can call it (and a newer or modified runtime could need it).
21987         * icall.c: Registred icall.
21988
21989 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21990
21991         * loader.c: prints a message on module loading error we set MONO_DEBUG
21992         environment variable.
21993
21994 2004-05-05  Jackson Harper  <jackson@ximian.com>
21995
21996         * appdomain.c: Handle PublicKeyToken=null properly.
21997         
21998 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
21999
22000         * environment.c|h: Added icall ves_icall_System_Environment_
22001         GetOSVersionString to get the current OS version as a string.
22002         * icall.c: Registred icall.
22003
22004 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
22005
22006         * object.c: in mono_object_get_virtual_method(), take into account that
22007         non-virtual methods don't have a slot in the vtable. Check needed when
22008         the object is a proxy.
22009
22010 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
22013         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
22014
22015         * object.c (mono_class_compute_gc_descriptor): Fix warning.
22016
22017         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
22018         passed when a valuetype is expected.
22019
22020         * object.c (mono_unhandled_exception): Only set the exit code if the
22021         exception happens in the main thread. Fixes thread5.exe.
22022
22023         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
22024         invalid names. Fixes #58047.
22025
22026 2004-05-03  Jackson Harper  <jackson@ximian.com>
22027
22028         * assembly.c: This line was committed accidently and is unneeded.
22029         
22030 2004-05-03  Jackson Harper  <jackson@ximian.com>
22031
22032         * icall.c: Add new icall for Assembly::LoadWithPartialName
22033         * assembly.c/.h: new function that probes the GAC to load partial
22034         assembly names by Paolo Molaro.
22035         
22036 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22037
22038         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
22039         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
22040         (type_get_fully_qualified_name): Added PublicKeyToken when building a
22041         full type name.
22042
22043 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22044
22045         * appdomain.c: fixed check for 'neutral' culture and removed warning.
22046         * reflection.c: fix bug when parsing a full type name and Version is not
22047         the last thing in the string.
22048
22049 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
22050
22051         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
22052         crashes when it is freed.
22053
22054 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22055
22056         * assembly.c: print the compat warning to stderr.
22057
22058 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
22059
22060         * assembly.c (mono_assembly_load_references): Add a compatibility
22061         hack to run old applications that might be still referencing the
22062         3300-based assemblies, only do this for System.xxx.
22063
22064 2004-05-01  Jackson Harper  <jackson@ximian.com>
22065
22066         * appdomain.c: If the culture is neutral we set it to "".
22067         
22068 2004-04-29  Jackson Harper  <jackson@ximian.com>
22069
22070         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
22071
22072 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
22073  
22074         * string-icalls.c: added low overhead function for copying chars
22075         * icall.c: added needed icall for the above function
22076  
22077 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22078
22079         * icall.c: fix return value of get_global_assembly_cache.  Implemented
22080         Environment.GetLogicalDrives.
22081
22082 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
22083
22084         * rand.c: try and talk to egd or prngd
22085         for random bytes if opening devices fail.
22086
22087 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
22090         alignment for the type using the native alignment of its members 
22091         instead of using klass->min_align.
22092
22093         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
22094
22095 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22096
22097         * file-io.c:
22098         * socket-io.c: added check for sys/aio.h.
22099
22100 2004-04-28  Dick Porter  <dick@ximian.com>
22101
22102         * threads.c: Don't abort a thread thats already aborting, when
22103         terminating everything.
22104
22105 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22106
22107         * icall.c: added 2 new async calls for Socket.
22108
22109         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
22110         IO on *nix systems.
22111
22112         * threadpool.c: removed unused variable.
22113
22114 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
22117
22118 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
22119
22120         * locales.c: put back string_invariant_tolower () and
22121         string_invariant_toupper ().
22122
22123 2004-04-26 David Waite <mass@akuma.org>
22124
22125         * file-io.h:
22126         * socket-io.h:
22127         * threads.h:
22128         * unicode.h: remove comma from end of enumeration declarations
22129
22130 2004-04-26 David Waite <mass@akuma.org>
22131
22132         * debug-mono-symfile.h:
22133         * decimal.c:
22134         * mono_debug.h:
22135         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
22136
22137
22138 2004-04-26  Jackson Harper  <jackson@ximian.com>
22139
22140         * appdomain.c: Increment version number.
22141         
22142 2004-04-26  Jackson Harper  <jackson@ximian.com>
22143
22144         * appdomain.c: Set assembly references public token value when
22145         PublicKeyToken is specified, not the hash_value. Free public token
22146         values when free assembly name data. Previously the public key
22147         token was hex decoded, however we are using hex encoded public key
22148         tokens, so this is not neccasary.
22149         * assembly.c: Lookup assemblies in the gac if their public token
22150         value is set. Add function to allow enabling user gac
22151         lookups. Specify whether or not the assembly was loaded from the
22152         GAC. Compare full assembly names when checking the cache for
22153         assemblies (Temporarily disabled see comment in code). Remove
22154         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
22155         specifies trace-loader they get extra info to stdout on the
22156         loading of assemblies.
22157         * image.h: Add a field for an assembly references public token
22158         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
22159         whether an assembly has been loaded from the GAC.
22160         * image.c: Remove a corlib -> mscorlib name mapping.
22161         * loader.h: Add function to enable/disable the user gac.
22162         * mono-config.c: Check if the usergac is enabled in the config
22163         file.
22164         * icall.c: New icall to determine whether or not an assembly has
22165         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
22166         * tabldefs.h: Add constant for assemblyref flag that specifies a
22167         full public key is used instead of a public token.
22168         * reflection.c: Remove mscorlib -> corlib mappings. Set
22169         PublicTokenValue instead of hash value. This value is a hex
22170         string so it does not need to be expanded.
22171
22172 2004-04-26  Martin Baulig  <martin@ximian.com>
22173
22174         * mono-debug-debugger.c (mono_debugger_initialize): Set
22175         `mono_debugger_initialized' before calling mono_debug_lock().
22176
22177 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
22178
22179         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
22180           InternalToUpper/InternalToLower.
22181         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
22182           removed invariant culture shortcut.  This is now done in managed code.
22183         * locales.c: (string_invariant_toupper/tolower) removed.
22184
22185 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22186
22187         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
22188         Added Poll internal call.
22189
22190         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
22191         call for Poll. Select was too heavy for polling a single socket.
22192
22193         * threadpool.[ch]: added mono_threadpool_cleanup.
22194         * threads.c: use it. Don't use Thread_Abort on windows.
22195
22196 2004-04-23  Martin Baulig  <martin@ximian.com>
22197
22198         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
22199
22200 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
22201
22202         * icall.c: Registred new icalls for key pair protection and added an
22203         icall for Environment.GetFolderPath on Windows.
22204         * security.c|h: Added new icalls for key pair protection.
22205
22206 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22207
22208         * socket-io.c: don't display the non-supported family warning for known
22209         families. Now this is not displayed on windows when checking support
22210         for IPv4/IPv6.
22211
22212 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22213
22214         * class.c: don't display the layout warning for static fields.
22215
22216 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
22217
22218         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
22219         * locales.c, locales.h: Added new icalls for culture-specific
22220         Char.ToLower and Char.ToUpper.
22221
22222 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22223
22224         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
22225         by David Waite.
22226
22227 2004-04-20  Martin Baulig  <martin@ximian.com>
22228
22229         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
22230         of the type name before passing it to mono_reflection_type_from_name().
22231
22232 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22233
22234         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
22235         encodings here. Fixes #56965.
22236
22237 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
22238
22239         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22240         fix test on strstr result not that I can see anything that
22241         relies on the result.
22242
22243 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22244
22245         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
22246         Fixes #57081.
22247
22248         * marshal.c (mono_marshal_get_string_encoding): New helper function.
22249
22250         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
22251         function to determine which marshalling to use for strings. Fixes
22252         #56965.
22253
22254         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
22255
22256         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
22257
22258 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
22259
22260         * icall.c: #include mono-config.h
22261
22262 2004-04-15  Jackson Harper  <jackson@ximian.com>
22263
22264         * culture-info-tables.h: Fix date formats for en-US culture.
22265         
22266 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
22267
22268         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
22269         ThreadPool.SetMinThreads.
22270         * threadpool.c: Implemented ThreadPool.GetMinThreads and
22271         ThreadPool.SetMinThreads.
22272
22273 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22274
22275         * mono-config.c: also load the .config file in the directory
22276         where the assembly was found.
22277
22278 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22279
22280         * assembly.c: load per-assembly config files.
22281         * icall.c: decrapified code to get the config dir and moved to
22282         mono-config.c.
22283         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
22284         per-assembly config files. When doing a dll map lookup give precedence
22285         to the per-assembly data.
22286
22287 2004-04-14  Martin Baulig  <martin@ximian.com>
22288
22289         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
22290         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
22291         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
22292
22293         * mono-debugger-debugger.c: While the debugger is locked, remember
22294         whether the symbol tables have changes and send one single
22295         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
22296
22297 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22298
22299         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
22300
22301         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
22302         function.
22303
22304         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
22305         account when marshalling string arrays. Fixes #56965.
22306
22307 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
22308
22309         * icall.c: Add new icalls mapping for security.
22310         * security.c|h: Add internal calls for WindowsIdentity,
22311         WindowsImpersonationContext and WindowsPrincipal.
22312
22313 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
22314
22315         * class.c: Added comment to ensure the System.MonoDummy class
22316         is removed when no longer necessary
22317
22318 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22319
22320         * appdomain.c: Pass arguments to the bootstraping exceptions to
22321         minimize JITed methods at boot
22322
22323         * metadata.c (mono_exception_from_name_two_strings): Allow for the
22324         second string to be null.
22325
22326         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
22327         Change the protocol to minimize the JIT methods at startup.  Now
22328         it Returns the internal codepage, if the value of "int_code_page"
22329         is 1 at entry, and we can not compute a suitable code page
22330         number, returns the code page as a string.
22331
22332 2004-04-13  Jackson Harper  <jackson@ximian.com>
22333
22334         * culture-info-tables.h: Fix number of decimal digits for all
22335         english locales.
22336
22337 2004-04-13  Jackson Harper  <jackson@ximian.com>
22338
22339         * icall.c: Clairfy out of sync error message. It is not always
22340         your corlib that is out of sync.
22341
22342 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
22343
22344         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
22345         properties when only the set accessor is overriden. Fixes #55874.
22346
22347 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
22348
22349         * assembly.c (mono_assembly_load_references): Make this thread safe.
22350         Fixes #56327.
22351
22352 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22353
22354         * monosn.c: Add missing initialization calls.
22355
22356 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
22357
22358         * locales.c:
22359         ves_icall_System_Globalization_CultureInfo_construct_number_format
22360         Fix g_assert so it compiles on fussier compilers re int/ptr
22361         mismatch
22362
22363 2004-04-08  Dick Porter  <dick@ximian.com>
22364
22365         * socket-io.h:
22366         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
22367         53992.  Also rearrange the code so that the internal calls return
22368         an error value and exceptions are thrown from managed code.
22369
22370         * icall.c: Add type info to the socket icalls.
22371
22372 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22373
22374         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
22375         owes me a beer.
22376
22377 2004-04-07  Martin Baulig  <martin@ximian.com>
22378
22379         * class.c (mono_class_from_generic_parameter): Don't default
22380         `klass->parent' to `mono_defaults.object_type'.
22381
22382 2004-04-07  Martin Baulig  <martin@ximian.com>
22383
22384         * reflection.c (mono_reflection_initialize_generic_parameter): Set
22385         `param->pklass->reflection_info'.       
22386
22387 2004-04-07  Jackson Harper  <jackson@ximian.com>
22388
22389         * culture-info-tables.h: Fix date separator symbol.
22390         
22391 2004-04-07  Martin Baulig  <martin@ximian.com>
22392
22393         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
22394         from System.Type to System.MonoType.
22395
22396 2004-04-07  Martin Baulig  <martin@ximian.com>
22397
22398         * reflection.h
22399         (MonoReflectionGenericParam): Added `has_reference_type' and
22400         `has_value_type' fields.
22401
22402         * reflection.c (mono_image_get_generic_param_info): Encode the
22403         correct flags if we have the `class' or `struct' constraint.
22404
22405 2004-04-07  Martin Baulig  <martin@ximian.com>
22406
22407         * reflection.h
22408         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
22409
22410 2004-04-07  Jackson Harper  <jackson@ximian.com>
22411
22412         * appdomain.c: Revert extra patches, just wanted to bump the
22413         version number.
22414         
22415 2004-04-07  Jackson Harper  <jackson@ximian.com>
22416
22417         * Makefile.am: Add culture-info private headers.
22418         * icall.c: Add new icalls for contructing locales.
22419         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
22420         * locales.h: Declare new culture info construction methods.
22421         * object.h: Add new fields used to avoid the CultureMap to
22422         MonoCultureInfo.
22423         * culture-info.h: Definition of structs used in the culture info
22424         tables.
22425         * culture-info-tables.h: Autogenerated tables that contain culture
22426         info data. This file was generated with the locale-builder tool.
22427         * appdomain.c: Incement corlib version number.
22428         
22429 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
22430
22431         * appdomain.c: (mono_runtime_init) move mono_thread_init
22432         to before mono_object_new calls so critical sections
22433         are initialized before use.
22434
22435 2004-04-07  Martin Baulig  <martin@ximian.com>
22436
22437         * icall.c
22438         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
22439         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
22440         (ves_icall_MonoGenericParam_initialize): Removed.
22441         (monogenericparam_icalls): Removed.
22442         (generictypeparambuilder_icalls): Added new table for
22443         System.Reflection.Emit.GenericTypeParameterBuilder.
22444
22445         * reflection.c
22446         (mono_reflection_define_generic_parameter): Removed.
22447         (mono_reflection_initialize_generic_parameter): This is now called
22448         from GenericTypeParameterBuilder's .ctor.
22449
22450 2004-04-06  Martin Baulig  <martin@ximian.com>
22451
22452         * class.c (mono_class_init): Don't inflate nested classes in a
22453         generic instance.
22454         (mono_type_get_name_recurse): Include the generic arguments for
22455         generic instances and generic type declarations.
22456         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
22457         (_mono_class_get_instantiation_name): Removed.
22458         (mono_class_create_generic): Always use `gklass->name' as our name.
22459
22460         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
22461
22462         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
22463         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
22464         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
22465         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
22466         closed generic methods here.
22467
22468         * reflection.c
22469         (mono_reflection_generic_inst_get_nested_types): Removed.
22470         (inflate_mono_method): Copy the generic parameters from the
22471         MonoMethodHeader into out MonoGenericMethod.
22472
22473 2004-04-06  Martin Baulig  <martin@ximian.com>
22474
22475         * row-indexes.h
22476         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
22477
22478         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
22479
22480         * reflection.c (build_compressed_metadata): If we have any entries
22481         in the GenericParam, MethodSpec or GenericParamConstraint tables,
22482         set the header version to 1.1.
22483
22484 2004-04-06  Martin Baulig  <martin@ximian.com>
22485
22486         * class.c (mono_class_init): If we're a generic instance,
22487         initialize our nested classes, too.
22488         (_mono_class_get_instantiation_name): Deal with the new `!%d'
22489         suffix. 
22490
22491 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22492
22493         * process.c: quote the argument passed to the shell on windows.
22494
22495 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * threads.c (mono_alloc_special_static_data): Allow this to be
22498         called during startup.
22499
22500 2004-04-02  Martin Baulig  <martin@ximian.com>
22501
22502         * icall.c
22503         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
22504
22505 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22506
22507         * icall.c: Fix build.
22508
22509 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
22510
22511         * Makefile.am: Added security.c|h.
22512         * icall.c: Added icall for get_UserName;
22513         * security.c: New file for security related icalls. Added function
22514         get_UserName for System.Environment (fix #56144).
22515         * security.h: New. Header file for security.c
22516
22517 2004-04-02  Dick Porter  <dick@ximian.com>
22518
22519         * icall.c: Deleted the icalls that were obsoleted some time ago
22520         by the ICU string code, and which were mixed into the icall
22521         rearranging.  Fixes bug 55969.
22522
22523         * string-icalls.h: 
22524         * string-icalls.c: Deleted the code that those icalls reference.
22525
22526 2004-04-01  Martin Baulig  <martin@ximian.com>
22527
22528         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
22529
22530         * class.c (mono_class_from_generic_parameter): Don't set 
22531         TYPE_ATTRIBUTE_INTERFACE.
22532         (my_mono_class_from_generic_parameter): Likewise.
22533
22534 2004-04-01  Martin Baulig  <martin@ximian.com>
22535
22536         * loader.c (find_method): Added an optional `MonoClass *ic'
22537         argument to search in a specific interface.
22538         (mono_get_method_constrained): New public function.
22539
22540 2004-04-01  Martin Baulig  <martin@ximian.com>
22541
22542         * reflection.c (mono_image_get_generic_field_token): Use the
22543         `handleref' cache here.
22544
22545 2004-04-01  Martin Baulig  <martin@ximian.com>
22546
22547         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
22548
22549         * reflection.c (create_generic_typespec): Use the `typespec' hash
22550         here, not the `typeref' one.    
22551
22552 2004-04-01  Martin Baulig  <martin@ximian.com>
22553
22554         * class.c (mono_class_inflate_generic_type): Moved the
22555         functionality into a new static inflate_generic_type() which
22556         returns NULL if it didn't do anything.  Only increment the
22557         `mono_stats.inflated_type_count' if we actually inflated
22558         something.
22559         (mono_class_get_full): Check the classes type to see whether we
22560         need to inflate it; also inflate MONO_TYPE_(M)VAR.
22561
22562 2004-04-01  Jackson Harper  <jackson@ximian.com>
22563
22564         * reflection.c: Set culture for assembly references.
22565         
22566 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
22567
22568         * reflection.[ch], icall.[ch], Fix support for pinning variables.
22569
22570 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22571
22572         * assembly.c:
22573         (do_mono_assembly_open): the critical section also covers
22574         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
22575
22576 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22577
22578         * threads.c:
22579         (mono_manage_threads): abort the background threads when finishing.
22580         Fixes bug #47232.
22581
22582 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22583
22584         * gc.c: only close the done_event handle if there was no timeout.
22585         C-ified comments.
22586
22587 2004-03-30  Martin Baulig  <martin@ximian.com>
22588
22589         * icall.c (icall_entries): It's called "System.Activator", not
22590         "System.Activation".    
22591
22592 2004-03-30  Martin Baulig  <martin@ximian.com>
22593
22594         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
22595         (mono_class_create_from_typespec): Likewise.
22596
22597 2004-03-30  Martin Baulig  <martin@ximian.com>
22598
22599         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
22600         `has_ctor_constraint' and `initialized'.
22601
22602 2004-03-30  Martin Baulig  <martin@ximian.com>
22603
22604         * reflection.c (encode_new_constraint): New static function to add
22605         the constructor constraint attribute to a type parameter.
22606         (encode_constraints): Call encode_new_constraint() if necessary.
22607
22608         * reflection.h
22609         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
22610
22611         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
22612         
22613 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
22614
22615         * reflection.c, icall.c: add support for pinning variables. 
22616
22617 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
22618
22619         * marshal.c (mono_marshal_get_managed_wrapper):
22620         init bool local with zero rather than null.
22621
22622 2004-03-29  Martin Baulig  <martin@ximian.com>
22623
22624         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
22625         the "official" behavior here.
22626         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
22627
22628 2004-03-29  Martin Baulig  <martin@ximian.com>
22629
22630         * icall.c: Reflect latest API changes.
22631
22632 2004-03-29  Martin Baulig  <martin@ximian.com>
22633
22634         * loader.c (mono_get_method_from_token): Also call
22635         mono_metadata_load_generic_params () for abstract and interface
22636         methods; replace the type arguments in the method signature with
22637         the ones which are loaded from the metadata.
22638
22639 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
22640
22641         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
22642         of the lock is not the current thread. MS.NET don't do it, in spite of
22643         what the documentation says. See bug #56157.
22644
22645 2004-03-28  Martin Baulig  <martin@ximian.com>
22646
22647         * class.c (mono_class_init): Don't call init_properties() and
22648         init_events() for generic instances; set `prop->parent' when
22649         inflating properties.
22650
22651         * reflection.c (mono_generic_inst_get_object): Call
22652         `mono_class_init (ginst->klass)'.
22653         (mono_type_get_object): Only create a MonoGenericInst if your
22654         generic type is a TypeBuilder.
22655         (do_mono_reflection_bind_generic_parameters): Only set
22656         `ginst->is_dynamic' if our generic type is a TypeBuilder.
22657
22658 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22659
22660         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
22661         Fixes #56091.
22662
22663 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22664
22665         * icall.c: added Kill_internal icall.
22666         * process.[ch]: added Kill_internal icall.
22667
22668 2004-03-25  Martin Baulig  <martin@ximian.com>
22669
22670         * class.h (MonoStats): Added `generic_instance_count',
22671         `inflated_method_count', `inflated_type_count' and
22672         `generics_metadata_size'.       
22673
22674 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22675
22676         * reflection.c: no warnings now.
22677
22678 2004-03-25  Martin Baulig  <martin@ximian.com>
22679
22680         * class.c (mono_class_get_full): New public function; does a
22681         mono_class_get(), but also takes a `MonoGenericContext *'.
22682
22683         * loader.c (mono_field_from_memberref): Renamed to
22684         `field_from_memberref', made static and added `MonoGenericContext *'
22685         argument.
22686         (mono_field_from_token): Added `MonoGenericInst *' argument.
22687         (method_from_memberef): Likewise.
22688         (mono_get_method_from_token): Likewise.
22689         (mono_get_method_full): New public function; does a
22690         mono_get_method(), but also takes a `MonoGenericContext *'.
22691
22692         * verify.c (mono_method_verify): Get the method's generic context
22693         and pass it to mono_field_from_token(), mono_get_method_full() and
22694         mono_class_get_full().
22695
22696 2004-03-25  Martin Baulig  <martin@ximian.com>
22697
22698         * class.c (mono_class_inflate_generic_type): Take a
22699         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
22700         `MonoGenericMethod *'.
22701
22702 2004-03-25  Martin Baulig  <martin@ximian.com>
22703
22704         * loader.h (MonoMethodInflated): Store the MonoGenericContext
22705         instead of the MonoGenericMethod here.
22706
22707 2004-03-25  Martin Baulig  <martin@ximian.com>
22708
22709         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
22710         each time we create a new MonoGenericInst, we also create a new
22711         context which points back to us.
22712
22713         * class.c (inflate_method): Use `ginst->context' instead of
22714         creating a new context.
22715
22716         * loader.c (method_from_memberref): Use
22717         `klass->generic_inst->context' instead of creating a new context.
22718
22719 2004-03-25  Martin Baulig  <martin@ximian.com>
22720
22721         * class.h (MonoGenericContext): New struct.
22722         (MonoGenericMethod): Removed `generic_inst'.
22723
22724         * class.c (mono_class_inflate_generic_method): Take a
22725         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
22726
22727 2004-03-25  Martin Baulig  <martin@ximian.com>
22728
22729         * loader.h (MonoMethodInflated): New typedef.
22730
22731         * metadata.h (MonoMethodSignature): Removed `gen_method', make
22732         `generic_param_count' consume just 30 bits, added `is_inflated'
22733         and `has_type_parameters' flags (one bit each).
22734
22735         * class.c (mono_class_inflate_generic_method): Create a
22736         MonoMethodInflated instead of a MonoMethodNormal and set
22737         `is_inflated' in the method signature.
22738
22739         * class.h (MonoGenericMethod): Removed `generic_method'.
22740
22741 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
22742
22743         * image.c: Make sure the name of a MonoImage is always an absolute path.
22744           This fixes bug #54415.
22745
22746 2004-03-24  Martin Baulig  <martin@ximian.com>
22747
22748         * class.c (mono_class_setup_vtable): If we're a generic instance,
22749         use our generic type's vtable size.
22750
22751 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22752
22753         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
22754         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
22755         problems.
22756
22757 2004-03-23  Martin Baulig  <martin@ximian.com>
22758
22759         * class.h (MonoDynamicGenericInst): Added `int count_events' and
22760         `MonoEvent *events'.
22761
22762         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
22763         (typebuilder_icalls): Added "get_event_info"; calls
22764         mono_reflection_event_builder_get_event_info(). 
22765
22766         * reflection.c (mono_reflection_generic_inst_initialize): Added
22767         `MonoArray *events'.
22768         (mono_reflection_event_builder_get_event_info): New function.
22769
22770 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
22771
22772         * object.h: add mono_type_initialization_init
22773
22774         * object.c (mono_runtime_class_init): 
22775         implement class constructor synchronization rules
22776         to cope with threading issues.  
22777         add mono_type_initialization_init
22778
22779         * appdomain.c (mono_runtime_init): call 
22780         mono_type_initialization_init
22781
22782         * class.h: removing initializing field from MonoVTable
22783
22784 2004-03-23  Martin Baulig  <martin@ximian.com>
22785
22786         * class.c (my_mono_class_from_generic_parameter): Use
22787         `param->name' if it's not NULL. 
22788
22789 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
22790
22791         * class.c: do not insert non-virtual methods in the vtable.
22792         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
22793         that means the method is non-virtual. This never would have
22794         happened before.
22795
22796 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22797
22798         * profiler.c: Added lock for accessing coverage_hash.
22799
22800 2004-03-22  Martin Baulig  <martin@ximian.com>
22801
22802         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
22803         `method->method->signature->generic_param_count != 0' to make it
22804         work for interface methods.
22805
22806 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22807
22808         * process.c: quote the string passed to the shell using g_shell_quote.
22809
22810 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22811
22812         * threads.c:
22813         (mono_threads_manage): don't remove the finalizer thread and self
22814         from the threads hash table so that mono_thread_manage can be called
22815         more than once.
22816
22817 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22818
22819         * process.c: quote the arguments when UseShellExecute is true. Fixes
22820         bug #55790.
22821
22822 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22823
22824         * threads.c: set mono_thread_detach as a cleanup routine for every
22825         thread. This way it's always executed upon thread termination, either
22826         aborted or finished normally. No more xsp hangs!
22827
22828 2004-03-17  Martin Baulig  <martin@ximian.com>
22829
22830         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
22831         `int count_nested' and a `MonoType **nested'.
22832
22833         * reflection.c (mono_reflection_bind_generic_parameters): Moved
22834         most of the functionality into a new static
22835         do_mono_reflection_bind_generic_parameters() and don't take a
22836         `MonoType *nested_in' argument any more.  Don't compute nested
22837         types here.
22838         (mono_reflection_generic_inst_get_nested_types): New public method
22839         to get nested types.
22840
22841         * class.c (mono_class_create_generic): Set `klass->nested_in' if
22842         we're a nested class.
22843
22844         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
22845         mono_reflection_generic_inst_get_nested_types() to compute the
22846         nested types.
22847
22848 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
22851         descriptive error message under windows.
22852         
22853 2004-03-17  Martin Baulig  <martin@ximian.com>
22854
22855         * class.c (dup_type): Added `const MonoType *original' argument;
22856         copy the attrs from the original type.
22857
22858 2004-03-17  Martin Baulig  <martin@ximian.com>
22859
22860         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
22861         `m->generic_inst_cache' here.
22862
22863 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22864
22865         * exception.h exception.c: Add stack_overflow_exception.
22866
22867 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22868
22869         * threadpool.c:
22870         (overlapped_callback): call SetEvent *after* invoking the callback.
22871         No need to call CloseHandle.
22872
22873 2004-03-16  Martin Baulig  <martin@ximian.com>
22874
22875         * reflection.c (mono_image_get_fieldref_token): Take a
22876         `MonoReflectionField *' instead of a `MonoClassField *' and a
22877         `MonoClass *'; store the `MonoReflectionField *' in the hash.
22878
22879 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22880
22881         * appdomain.c: don't add the culture to the filename we're looking for
22882         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
22883
22884 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22885
22886         * locales.c: don't ignore symbols when doing case insensitive compares.
22887         Thanks Dick! Fixes bug #54046.
22888
22889         * threads.c: surround 'threads' usage with enter/leave in
22890         mono_thread_manage.
22891
22892 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22893
22894         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
22895         implicitly marshalled as [Out]. Fixes #55450.
22896
22897         (mono_marshal_get_runtime_invoke): Zero out the result if there is
22898         an exception.
22899
22900 2004-03-16  Martin Baulig  <martin@ximian.com>
22901
22902         * class.c (mono_class_from_generic_parameter): Use the actual
22903         parameter name. 
22904
22905 2004-03-16  Martin Baulig  <martin@ximian.com>
22906
22907         * reflection.c (type_get_signature_size): New static function.
22908         Compues the size of the type in a method signature.
22909         (method_get_signature_size): New static function; calls
22910         type_get_signature_size() to compute the actual size of the
22911         method's signature.
22912         (method_encode_signature): Use method_get_signature_size() to get
22913         the signature's size rather than using `nparams * 10'.
22914
22915 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22916
22917         * file-io.h: define here WapiOverlapped on windows. I don't want the
22918         regular OVERLAPPED one.
22919
22920         * file-io.c:
22921         * threadpool.c: somehow, BindIoCompletionCallback is not found.
22922         Disabling AIO on windows.
22923
22924 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22925
22926         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
22927         bug #55385.
22928
22929 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22930
22931         * appdomain.c: upgraded corlib version.
22932
22933         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
22934         and BeginWrite. Allow opening files for asynchrnous operations.
22935
22936         * file-io.h: new struct that maps FileStreamAsyncResult.
22937         * icall.c: added new icalls.
22938         * process.[ch]: support setting child process environment variables
22939         and use the SHELL or COMSPEC when UseShellExecute is true.
22940
22941         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
22942         callback for async. IO is here and also BindHandle.
22943
22944         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
22945         from here.
22946
22947 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * reflection.c (create_custom_attr): Allow len == 0.
22950
22951         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
22952         computation on big-endian machines.
22953
22954 2004-03-13  Martin Baulig  <martin@ximian.com>
22955
22956         * class.h (MonoGenericInst): Added `int count_ifaces'.
22957
22958         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
22959         `ginst->count_ifaces' instead `klass->interface_count' since we
22960         may get called before the vtable is created.
22961
22962         * loader.c (mono_method_get_param_names): If we're a generic
22963         instance, return and don't initialize the class.
22964
22965         * reflection.c (mono_reflection_setup_generic_class): Don't call
22966         ensure_runtime_vtable().
22967         (mono_reflection_bind_generic_parameters): Set
22968         `ginst->count_ifaces'.
22969
22970 2004-03-11  Jackson Harper <jackson@ximian.com>
22971
22972         * icall.c:
22973         * unicode.c:
22974         * unicode.h: Remove unused System.Char icalls.
22975         
22976 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
22977
22978         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
22979         code when we P/Invoke the first library in Windows.Forms, instead
22980         of when we first open the assembly.
22981
22982         * assembly.c: Drop the lookup from here.
22983
22984 2004-03-10  Martin Baulig  <martin@ximian.com>
22985
22986         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
22987         class for properties, fields and events.  Finally fixes #54945.
22988
22989 2004-03-10  Martin Baulig  <martin@ximian.com>
22990
22991         * metadata.c (mono_metadata_class_equal): New static function;
22992         checks whether two generic instances or two generic parameters are
22993         equal.
22994         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
22995         compare classes.        
22996
22997 2004-03-10  Martin Baulig  <martin@ximian.com>
22998
22999         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
23000
23001         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
23002         argument and write it into the `reflection_info' field.
23003
23004         * icall.c
23005         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
23006         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
23007
23008 2004-03-09  Jackson Harper  <jackson@ximian.com>
23009
23010         * char-conversions.h: use 8 bits for numeric data its all we need
23011         * icall.c: numeric data is only 8 bits now.
23012
23013 2004-03-09  Martin Baulig  <martin@ximian.com>
23014
23015         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
23016
23017         * class.c (init_properties, init_events): Initialize the new
23018         `parent' field.
23019
23020         * reflection.c (typebuilder_setup_properties): Likewise.
23021         (typebuilder_setup_events): Likewise.
23022
23023         * reflection.h (MonoEventInfo): Replaced `parent with
23024         `declaring_type' and `reflected_type'.
23025
23026         * icall.c (ves_icall_get_property_info): Distinguish between
23027         declaring and reflected type.
23028         (ves_icall_get_event_info): Likewise.
23029
23030 2004-03-09  Martin Baulig  <martin@ximian.com>
23031
23032         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
23033         (ves_icall_Type_GetField): Correctly set field->klass.
23034
23035 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23036
23037         * loader.h: Fix warning.
23038
23039 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
23040
23041         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
23042         library routine if present.  Notice that it will still continue
23043         executing even if its missing, for those working on the Gtk#
23044         edition of Windows.Forms.
23045
23046         * assembly.c (do_mono_assembly_open): If loading the
23047         System.Windows.Forms call mono_loader_wini_init.
23048
23049 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23050
23051         * class.h: Added MonoRemoteClass struct.
23052         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
23053         function for MonoStrings.
23054         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
23055         Added internal call for getting the proxy type.
23056         * marshal.c: Get the type of transparent proxies from its remote_class.
23057         Added methods that generate the IL for type checks and casts:
23058         mono_marshal_get_isinst, mono_marshal_get_castclass, 
23059         mono_marshal_get_proxy_cancast.
23060         * marshal.h: Declaration of the previous new methods.
23061         * object.c: Added new moethods for creating and updating MonoRemoteClass
23062         instances: mono_remote_class, mono_upgrade_remote_class, 
23063         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
23064         * verify.c: FIx transparent_proxy_fields layout.
23065         * appdomain.c: Bump corlib version.
23066
23067 2004-03-04  Jackson Harper  <jackson@ximian.com>
23068
23069         * icall.c: Add icall to access char conversion tables.
23070         * char-conversions.h: Character conversion tables.
23071         * Makefile.am: Add char-conversions.h private header file.
23072         
23073 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
23074
23075         * appdomain.c (unload_thread_main): Increase unloading timeout to
23076         10 sec as a temporary workaround for Nant problems.
23077
23078 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
23079
23080         * gc.c: Add checks for GC_enable and GC_disable.
23081
23082         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
23083         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
23084         (bug #54988).
23085         
23086 2004-02-27  Martin Baulig  <martin@ximian.com>
23087
23088         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23089         `MonoReflectionType *' instead of a `MonoType *'.
23090
23091 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23092
23093         * gc.c (run_finalize): Avoid finalizing the object representing the
23094         finalizer thread.
23095         (finalizer_thread): Fix warning.
23096
23097 2004-02-25  Martin Baulig  <martin@ximian.com>
23098
23099         * class.c (_mono_class_get_instantiation_name): Added `int offset'
23100         argument for nested types.
23101         (mono_class_create_generic): Added support for nested generictypes.
23102
23103         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
23104         `GList *nested'.
23105
23106         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
23107
23108         * reflection.c (method_encode_signature): Increase the minimum
23109         value of `size' from 10 to 11.
23110         (mono_reflection_bind_generic_parameters): Take `int type_argc'
23111         and `MonoType **types' arguments instead of the `MonoArray
23112         *types'; added `MonoType *nested_in'.  Recursively instantiate
23113         nested classes. 
23114
23115 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23116
23117         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
23118         stack_overflow_ex members which are used by exception handling.
23119
23120         * appdomain.c (mono_runtime_init): Initialize the new members.
23121
23122         * gc.c (mono_gc_enable): New helper function.
23123         * gc.c (mono_gc_disable): New helper function.
23124
23125 2004-02-23  Martin Baulig  <martin@ximian.com>
23126
23127         * icall.c: I must have been really stupid - make it actually work
23128         this time ;-)
23129
23130 2004-02-23  Martin Baulig  <martin@ximian.com>
23131
23132         * loader.c (method_from_memberref): Only inflate the method if
23133         it's in another klass.
23134
23135 2004-02-23  Martin Baulig  <martin@ximian.com>
23136
23137         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
23138         (mono_class_init): If we're a generic instance and an interface,
23139         compute `class->interface_id'; also create `class->interfaces'
23140         here and inflate them.
23141
23142         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
23143         `ginst->is_open'.
23144         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
23145
23146         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
23147
23148 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
23149
23150         * reflection.c (method_encode_code): Improved the error message
23151         generated by the exception.
23152
23153 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23154
23155         * icall.c: Martin did not do what he said in the ChangeLog for
23156         2004-02-18, but put back the changes for properties and events.
23157         Commenting those changes out again and adding comment to bug #54518.
23158         
23159         * process.c: removed warning.
23160
23161 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
23162
23163         * marshal.c (emit_struct_conv): Print an error message instead of
23164         asserting when a type does not have the StructLayout attribute.
23165
23166 2004-02-20  Martin Baulig  <martin@ximian.com>
23167
23168         * reflection.c (mono_type_get_object): Also use the cache for
23169         generic instances.
23170         (mono_reflection_bind_generic_parameters): Always compute
23171         `ginst->ifaces'.        
23172
23173 2004-02-20  Martin Baulig  <martin@ximian.com>
23174
23175         * class.h (MonoGenericMethod): Removed `klass'.
23176
23177         * class.c (mono_class_inflate_generic_method): Added `MonoClass
23178         *klass' argument.
23179
23180 2004-02-20  Martin Baulig  <martin@ximian.com>
23181
23182         * reflection.c (method_encode_methodspec): Actually use the
23183         uninflated signature for the memberref.
23184
23185 2004-02-20  Martin Baulig  <martin@ximian.com>
23186
23187         * class.h (MonoGenericMethod): Removed `declaring'.
23188
23189         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
23190         is NULL, compute it here.
23191
23192 2004-02-20  Martin Baulig  <martin@ximian.com>
23193
23194         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
23195
23196         * metadata.c (mono_metadata_generic_inst_hash): New method.
23197         (mono_metadata_generic_inst_equal): New method.
23198
23199         * reflection.c (mono_reflection_bind_generic_parameters): Use the
23200         `klass->image->generic_inst_cache' cache to avoid creating
23201         duplicate MonoGenericInst's.
23202
23203         * class.c (mono_class_inflate_generic_type): Use the cache.
23204
23205 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
23206
23207         * object.c: fixed gc descriptor calculation for embedded valuetypes.
23208
23209 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23210
23211         * icall.c: added Socket.WSAIoctl icall.
23212
23213         * socket-io.[ch]: implemented
23214         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
23215
23216 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
23217
23218         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
23219
23220 2004-02-18  Urs C Muff  <umuff@quark.com>
23221
23222         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
23223         this work on PPC and other big-endian architectures.
23224
23225         * debug-mono-symfile.h: Prepended the names of all the `guint32'
23226         fields with an underscore to make sure they're only accessed by
23227         the read32() macro.
23228
23229 2004-02-18  Martin Baulig  <martin@ximian.com>
23230
23231         * icall.c: Put the klass->refclass changes back for methods and
23232         fields, but not for properties and events.  We're currently not
23233         distinguishing between DeclaringType and ReflectedType for
23234         properties and events, that's what caused the regressions.
23235
23236 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23237
23238         * object.c:
23239         (mono_async_result_new): the handle can be NULL.
23240
23241         * threadpool.c: Use an event instead of a semaphore, don't initialize
23242         it until needed. This saves quite a few semaphores from being created
23243         when using the threadpool.
23244
23245 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
23246
23247         * object.c (mono_string_is_interned_lookup): Fix interning of long
23248         strings. Fixes #54473.
23249
23250         * domain.c (ldstr_equal): Optimize if the two strings are equal.
23251
23252         * icall.c: Revert the klass->refclass changes since they introduce
23253         regressions (bug #54518).
23254
23255 2004-02-18  Martin Baulig  <martin@ximian.com>
23256
23257         * class.c (mono_class_init): If we're a generic instance and don't
23258         come from a TypeBuilder, inflate our members here.
23259         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
23260         (mono_class_create_generic): New public method.
23261         (mono_class_initialize_generic): Removed.
23262         (get_instantiation_name): Renamed to
23263         _mono_class_get_instantiation_name() and made it public.
23264
23265 2004-02-18  Martin Baulig  <martin@ximian.com>
23266
23267         * class.c (mono_class_inflate_generic_type): Clear the new
23268         instance's `nginst->klass' when inflating a generic instance.
23269         (mono_class_is_subclass_of): Added (basic) support for generic
23270         instances.
23271
23272 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
23273
23274         * appdomain.h, domain.c: use a MonoCodeManager instead of a
23275         MonoMempool to hold compiled native code.
23276
23277 2004-02-17  Martin Baulig  <martin@ximian.com>
23278
23279         * class.h (MonoDynamicGenericInst): Added `count_properties' and
23280         `properties'.
23281
23282         * reflection.c (mono_reflection_generic_inst_initialize): Added
23283         `MonoArray *properties' argument.
23284
23285         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
23286
23287 2004-02-17  Martin Baulig  <martin@ximian.com>
23288
23289         * icall.c (ves_icall_Type_GetFields): Renamed to
23290         ves_icall_Type_GetFields_internal() and added a
23291         `MonoReflectionType *rtype' argument; pass it to
23292         mono_field_get_object() to set the field's "reflected" type.
23293         (ves_icall_Type_GetConstructors): Likewise.
23294         (ves_icall_Type_GetEvents): Likewise.
23295         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
23296         argument; pass it to mono_method_get_object() to set the method's
23297         "reflected" type.       
23298
23299 2004-02-17  Martin Baulig  <martin@ximian.com>
23300
23301         * class.h (MonoDynamicGenericInst): New type.
23302         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
23303
23304         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
23305         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
23306         (ves_icall_MonoGenericInst_GetFields): New interncall.
23307
23308         * class.c (mono_class_from_generic): Don't call
23309         mono_class_initialize_generic() if this is a dynamic instance;
23310         ie. it's being created from a TypeBuilder.
23311         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
23312         `class->byval_arg.type'.
23313
23314         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
23315         to `inflate_method' and made static.
23316         (mono_reflection_inflate_field): Removed.
23317         (mono_reflection_generic_inst_initialize): New public method.
23318
23319         * reflection.h (MonoReflectionGenericInst): Removed `methods',
23320         `ctors' and `fields'; added `initialized'.
23321
23322 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23323
23324         * debug-helpers.c (mono_method_full_name): Fix output for empty
23325         namespaces.
23326
23327 2004-02-12  Martin Baulig  <martin@ximian.com>
23328
23329         * class.h (MonoClassField): Added `MonoType *generic_type'.
23330
23331         * reflection.c (mono_image_get_fieldref_token): Added support for
23332         instantiated generic types.
23333         (field_encode_inflated_field): Removed.
23334         (mono_image_get_inflated_field_token): Removed.
23335         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
23336
23337         * reflection.h (MonoReflectionInflatedField): Removed.
23338
23339 2004-02-12  Martin Baulig  <martin@ximian.com>
23340
23341         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
23342         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
23343
23344         * reflection.c (mono_image_get_methodspec_token): Take a
23345         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
23346         (mono_image_create_token): Check whether we have a
23347         `method->signature->gen_method' and call
23348         mono_image_get_methodspec_token() if appropriate.
23349         (inflated_method_get_object): Removed.
23350         (mono_reflection_bind_generic_method_parameters): Return a
23351         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
23352         (mono_reflection_inflate_method_or_ctor): Likewise.
23353
23354         * reflection.h (MonoReflectionInflatedMethod): Removed.
23355
23356 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
23357
23358         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
23359         for custom valuetype marshalling.
23360
23361         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
23362
23363 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23364
23365         * icall.c: fixed WSAGetLastError_internal name.
23366
23367 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23368
23369         * threads.c (mono_thread_attach): Allow this to be called multiple
23370         times for a thread.
23371         
23372         * threads.c (build_wait_tids): Do not wait for ourselves.
23373
23374         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
23375         appdomain list is empty.
23376
23377         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
23378         memory returned by mono_string_builder_to_utf16, since it points into
23379         managed memory. Thanks to Bernie Solomon for noticing this.
23380
23381         * icall.c: Add AppDomainSetup icalls.
23382
23383         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
23384
23385         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
23386         types.
23387
23388         * reflection.c (reflection_methodbuilder_to_mono_method): Save
23389         custom attributes to the method_aux struct. Also fix array indexes etc.
23390
23391         * loader.c (mono_method_get_param_names): Make dynamic case work again.
23392         
23393 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
23394
23395         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
23396         (both static and runtime) and reduce startup time.
23397
23398 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23399
23400         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
23401         AsAny marshalling conversion instead of crashing.
23402
23403         * marshal.c: Fix warnings.
23404
23405 2004-02-09  Martin Baulig  <martin@ximian.com>
23406
23407         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
23408
23409         * reflection.h (MonoReflectionInflatedMethod): Removed the
23410         `declaring' field, it's now in the unmanaged MonoGenericMethod.
23411
23412         * reflection.c (method_encode_methodspec): Removed the `method'
23413         argument; we get it from `gmethod->declaring'.
23414         (inflated_method_get_object): Removed the `declaring' argument.
23415
23416 2004-02-09  Martin Baulig  <martin@ximian.com>
23417
23418         * class.h (MonoGenericMethod): New type.
23419         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
23420         `generic_method'.
23421
23422         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
23423         a `MonoGenericMethod *gen_method' one.
23424
23425         * class.c (mono_class_inflate_generic_type): Take an additional
23426         `MonoGenericMethod * argument.  This is only non-NULL if we're
23427         inflating types for a generic method.   
23428         (mono_class_inflate_generic_signature): Renamed to
23429         inflate_generic_signature() and made static; take a
23430         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23431         (inflate_generic_header): Take a `MonoGenericMethod *' argument
23432         instead of a `MonoGenericInst *' one.
23433         (mono_class_inflate_generic_method): Likewise.
23434
23435         * reflection.c (encode_generic_method_sig): Take a
23436         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
23437         (method_encode_methodspec): Likewise.
23438         (inflated_method_get_object): Likewise. 
23439
23440         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
23441         field with a `MonoGenericMethod *gmethod' one.  
23442
23443 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
23444
23445         * class.h (mono_class_has_parent): add parens to expansion
23446         so you can ! this.
23447
23448 2004-02-08  Martin Baulig  <martin@ximian.com>
23449
23450         * image.h (MonoImage): Removed `generics_cache'.
23451
23452         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
23453         instead of a `MonoType *' argument; removed the `inflate_methods'
23454         argument.  Don't inflate methods here.
23455
23456         * loader.c (find_method): If it's a generic instance, call
23457         mono_class_init() on the `sclass->generic_inst->generic_type'.
23458
23459         * metadata.c (mono_type_size): Make this work on uninitialized
23460         generic instances; call it on the `ginst->generic_type's class.
23461
23462         * reflection.c (mono_reflection_bind_generic_parameters): Call
23463         mono_class_from_generic() to create the `ginst->klass'.
23464
23465 2004-02-08  Martin Baulig  <martin@ximian.com>
23466
23467         * class.h (MonoClass): Changed type of `generic_inst' from
23468         `MonoType *' to `MonoGenericInst *'.
23469
23470 2004-02-08  Martin Baulig  <martin@ximian.com>
23471
23472         * icall.c (ves_icall_Type_BindGenericParameters): Just call
23473         mono_type_get_object(), this is now creating a `MonoGenericInst'
23474         for MONO_TYPE_GENERICINST.
23475         (ves_icall_MonoGenericInst_GetParentType): Likewise.
23476         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
23477
23478         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
23479         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
23480         (inflated_method_get_object): Added `MonoClass *refclass' argument.
23481         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
23482         and reflected type.
23483
23484         * reflection.h (MonoReflectionInflatedMethod): Removed
23485         `declaring_type' and `reflected_type'.
23486
23487 2004-02-08  Martin Baulig  <martin@ximian.com>
23488
23489         * class.h (MonoGenericInst): Added `MonoType *parent' and
23490         `MonoType **ifaces'.
23491
23492         * reflection.h (MonoReflectionGenericInst): Removed `klass',
23493         `parent' and `interfaces'.
23494
23495         * reflection.c (mono_reflection_bind_generic_parameters): Take a
23496         `MonoType *' argument and return a `MonoType *'.
23497
23498         * icall.c
23499         (ves_icall_MonoGenericInst_GetParentType): New interncall.
23500         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
23501
23502 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23503
23504         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
23505         valuetype marshalling.
23506
23507 2004-02-06  Martin Baulig  <martin@ximian.com>
23508
23509         * class.c
23510         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
23511         (my_mono_class_from_generic_parameter): Likewise.
23512
23513 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
23514
23515         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
23516         contents of the symbol files lazily.
23517
23518         * object.h (MonoThread): Add 'name' and 'name_len' fields.
23519
23520         * threads.h threads.c icall.c: New icalls for getting and setting the
23521         threads name.
23522
23523 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
23524
23525         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
23526         Raise an exception when the domain is not found.
23527
23528 2004-02-03  Martin Baulig  <martin@ximian.com>
23529
23530         * reflection.c (mono_image_get_methodspec_token): Use the
23531         uninflated signature; fixes gen-33.
23532
23533 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23534
23535         * gc.c threads.c: Make the finalizer thread a normal managed thread so
23536         the finalizer code can use thread functionality.
23537
23538         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
23539         the finalizer thread.
23540
23541         * threads.c: Make some functions more robust.
23542
23543         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
23544
23545         * metadata.h: Add new marshalling conventions.
23546
23547         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
23548         stringbuilder marshalling. Fixes #53700.
23549
23550         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
23551
23552         * reflection.c (mono_image_get_type_info): Save declarative security
23553         info.
23554
23555         * reflection.c (mono_image_get_field_info): Handle uninitialized 
23556         unmanaged fields as well.
23557
23558         * appdomain.c: Bump corlib version.
23559
23560 2004-02-01  Martin Baulig  <martin@ximian.com>
23561
23562         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
23563         method type arguments.  
23564
23565 2004-01-30  Duncan Mak  <duncan@ximian.com>
23566
23567         * marshal.h: Add prototype for
23568         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
23569         and
23570         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
23571         fix the build.
23572
23573 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
23574
23575         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
23576         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
23577
23578 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * marshal.c (mono_marshal_get_native_wrapper): Add support for
23581         custom marshalling of valuetypes.
23582
23583         * marshal.c: Fix some warnings.
23584
23585 2004-01-29  Martin Baulig  <martin@ximian.com>
23586
23587         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
23588         for generic method parameters.
23589
23590         * reflection.c (method_encode_methodspec): Write the uninflated
23591         signature into the methodspec table.
23592         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
23593         is always the uninflated method.
23594         (reflection_methodbuilder_to_mono_method): Copy the generic
23595         parameters from the MethodBuilder into `header->gen_params'.
23596
23597 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
23598
23599         * class.c (mono_class_from_generic_parameter): Fix warning.
23600
23601 2004-01-27  Martin Baulig  <martin@ximian.com>
23602
23603         * class.c (mono_class_from_generic_parameter): Don't create
23604         `klass->methods' here.  
23605
23606 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
23607
23608         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
23609         extension since it does not work with libraries named lib<FOO>.dll.so.
23610
23611 2004-01-25  Martin Baulig  <martin@ximian.com>
23612
23613         * class.c (mono_class_inflate_generic_type): Added support for
23614         MONO_TYPE_GENERICINST.
23615
23616         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
23617         inflate methods on open constructed types.      
23618
23619 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23620
23621         * object.c: fire ProcessExit event in the root AppDomain after running
23622         Main. Fixes bug #53299.
23623
23624 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23625
23626         * socket-io.c: include the new socket-wrappers.h header.
23627         Use the wrappers instead of the unix socket functions to make the code
23628         more clear.
23629
23630 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23631
23632         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
23633
23634         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23635         Fixes #22532.
23636
23637 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * reflection.c (mono_image_create_pefile): Handle the case when the
23640         entry point is not a MethodBuilder.
23641
23642         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23643         field to ReflectionMethod since it is not allways a builder.
23644
23645         * reflection.c (type_get_fully_qualified_name): New helper function to
23646         return the fully qualified name of a type.
23647
23648         * reflection.c (encode_marshal_blob): Always emit the fully qualified
23649         type name for custom marshallers.
23650
23651         * reflection.c (mono_marshal_spec_from_builder): Ditto.
23652
23653         * class.c (mono_class_setup_vtable): If a parent class already 
23654         implements an interface, use the implementing methods from that class.
23655         Fixes #53148.
23656
23657 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23658
23659         * threadpool.c: just return instead of ExitThread to allow for thread
23660         clean up earlier.
23661
23662 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
23665         when closing resource modules.
23666
23667         * reflection.c (mono_image_create_pefile): Handle the case when the
23668         entry point is not a MethodBuilder.
23669
23670         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
23671         field to ReflectionMethod since it is not allways a builder.
23672
23673 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
23674
23675         * marshal.c (mono_marshal_get_managed_wrapper): 
23676         mono_marshal_alloc takes native int so CONV_I
23677         the arg for 64bits.
23678
23679 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
23680
23681         * reflection.c (fixup_cattrs): New function to fixup the methoddef
23682         tokens in the cattr table. Fixes #53108.
23683
23684 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23685
23686         * loader.c: don't trim ".dll" before looking up in the config file.
23687         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
23688
23689 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
23692         Return the module which contains the resource as well.
23693         (ves_icall_System_Reflection_Module_Close): New icall.
23694
23695         * appdomain.c: Bump corlib version number.
23696
23697         * image.c (mono_image_addref): New public function.
23698
23699         * assembly.c: Call mono_image_addref.
23700
23701         * reflection.c (mono_module_get_object): Increase reference count of 
23702         the image.
23703
23704         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
23705         Fixes #22532.
23706
23707         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
23708         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
23709         proper exceptions on DllImport problems.
23710
23711 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
23712
23713         * class.c, metadata.c: eliminate CSIZE macro.
23714
23715 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
23716
23717         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
23718         * object.h: Added async_callback field in MonoAsyncResult.
23719         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
23720         * verify.c: Added async_callback in MonoAsyncResult layout.
23721
23722 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
23723
23724         * reflection.c (mono_reflection_get_custom_attrs): Add support
23725         for Modules.
23726
23727 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23728
23729         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
23730         marshalling.
23731         (mono_marshal_method_from_wrapper): Add null pointer check.
23732
23733 2004-01-16  Martin Baulig  <martin@ximian.com>
23734
23735         * debug-mono-symfile.h: Set version number to 36 and reflect
23736         latest symbol writer changes.
23737
23738 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23739
23740         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
23741         multi-dimensional arrays.
23742         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
23743         (mono_class_from_mono_type): Use bounded_array_class_get.
23744         
23745         * class.c (mono_bounded_array_class_get): New function which takes
23746         a 'bounded' bool argument to distinguish vectors from one dimensional
23747         arrays.
23748
23749         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
23750         bounded_array_class_get if the array has bounds.
23751
23752         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
23753         Search modules loaded using AssemblyBuilder:AddModule as well.
23754
23755 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23756
23757         * appdomain.c: increased corlib version.
23758         * filewatcher.c: removed g_print.
23759         * icall.c:
23760         (get_property_info): only allocate what is actually requested.
23761         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
23762
23763 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23764
23765         * Makefile.am: added filewatcher.[ch]
23766         * filewatcher.[ch]: FileSystemWatcher runtime support.
23767         * icall.c: added new FSW icalls.
23768
23769 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
23770
23771         * string-icalls.c: fix stringbuilder regression as suggested by
23772         Iain McCoy <iain@mccoy.id.au>.
23773
23774 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23775
23776         * process.c (process_read_stringtable_block): Recognize '007f' as
23777         a language neutral stringtable block.
23778
23779 2004-01-12  Patrik Torstensson
23780
23781         * object.h (MonoStringBuilder) : Changed layout to support our
23782         new stringbuilder class.
23783         * marshal.c: Change marshalling to support the new layout of 
23784         string builder.
23785         * appdomain.c: increased version number because new layout of
23786         string builder.
23787
23788 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
23789
23790         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
23791         assembly name as an string instead of an AssemblyName, since it is
23792         easier to extract info from it.
23793
23794         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
23795         the culture subdirectories too. Fixes #52231.
23796
23797 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23798
23799         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
23800         It takes 2 new parameters with an optional name for the method to look
23801         for and case ignoring info.
23802
23803         * threadpool.c: removed unused variable.
23804
23805 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23806
23807         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
23808         It takes 2 new parameters with an optional name for the property to look
23809         for and case ignoring info.
23810         Fixes bug #52753.
23811
23812 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23813
23814         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
23815         Fix #52451.
23816
23817 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23818
23819         * appdomain.c:
23820         * assembly.c: escape the uri before passing it to g_filename_from_uri.
23821         Fixes bug #52630.
23822
23823 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
23824
23825         * reflection.c: Add support for more than one unmanaged resource.
23826
23827         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
23828         in field->def_value, as done in all other cases.
23829
23830         * reflection.c (mono_reflection_get_custom_attrs): Add support for
23831         TypeBuilders.
23832
23833         * reflection.c (mono_reflection_create_runtime_class): Remove 
23834         errorneous assignment to klass->element_class, since it is already
23835         done in mono_reflection_setup_internal_class.
23836
23837 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23838
23839         * gc.c: added missing LeaveCriticalSection.
23840         * icall.c: indented a couple of lines.
23841         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
23842         if we call EndInvoke inside a callback. Fixes bug #52601.
23843
23844 2004-01-07  Martin Baulig  <martin@ximian.com>
23845
23846         * mono-debug-debugger.h
23847         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
23848
23849 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
23850
23851         * appdomain.c: Use messages in NotImplementedException.
23852
23853         * exception.c (mono_get_exception_not_implemented): Now this takes
23854         a message argument.
23855
23856         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
23857         exception instead of g_asserting an aborting when something is not
23858         implemented.
23859
23860         Add some inline docs.
23861
23862 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
23863
23864         * reflection.h: Update after changes to object layout.
23865
23866         * reflection.c: Implement saving of unmanaged aka win32 resources.
23867
23868         * appdomain.c: Bump version number.
23869
23870         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
23871         Handle missing domains gracefully.
23872
23873 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
23874
23875         * file-io.c : On Windows, there are much more invalid_path_chars.
23876
23877 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23878
23879         * class.h, object.c: prepare for GetType () speedup.
23880
23881 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
23882
23883         * profiler.c: workaround for --profile null reference exception on
23884           cygwin. Patch by Patrik Torstensson.
23885
23886 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
23887
23888         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
23889         make work for unaligned access.
23890
23891 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
23892
23893         * class.c: small cleanup (class->fields [i] -> field).
23894         * image.c: check address of metadata is valid.
23895
23896 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
23897
23898         * assembly.h assembly.c (mono_assembly_loaded): New public function to
23899         search the list of loaded assemblies.
23900
23901         * reflection.c (mono_reflection_type_from_name): Use 
23902         mono_assembly_loaded instead of mono_image_loaded.
23903
23904         * reflection.c: Fix warnings.
23905
23906 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
23907
23908         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
23909         is dynamic. This is needed since an assembly can contain both dynamic and
23910         non-dynamic images.
23911
23912         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
23913         assembly->dynamic.
23914
23915         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
23916
23917         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
23918         to store modules loaded using AddModule.
23919
23920         * reflection.c (mono_image_fill_file_table): Generalize this so it works
23921         on Modules.
23922
23923         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
23924
23925         * reflection.c (mono_image_fill_export_table_from_module): New function to
23926         fill out the EXPORTEDTYPES table from a module.
23927
23928         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
23929         into a separate function. Also handle loaded non-dynamic modules.
23930
23931         * reflection.c (mono_image_basic_init): Fix memory allocation.
23932
23933         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23934
23935         * assembly.c (mono_assembly_load_references): Make this public.
23936
23937 2003-12-19  Martin Baulig  <martin@ximian.com>
23938
23939         * class.c (mono_class_initialize_generic): Made this static, take
23940         a `MonoGenericInst *' instead of a `MonoClass *'.
23941         (mono_class_from_generic): Call mono_class_initialize_generic()
23942         unless we're already initialized or being called from
23943         do_mono_metadata_parse_generic_inst().
23944
23945         * class.h (MonoGenericInst): Added `initialized' and
23946         `init_pending' flags.
23947
23948         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
23949         `mono_class_init (gklass)' or mono_class_initialize_generic()
23950         here; set `generic_inst->init_pending' while parsing the
23951         `type_argv'.
23952
23953 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
23954
23955         * locales.c: include string.h for memxxx prototypes
23956
23957 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23958
23959         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
23960         constructor when accessing literal fields.
23961
23962 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
23963
23964         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
23965
23966         * reflection.c (assembly_add_resource_manifest): New function to fill
23967         the MANIFESTRESOURCE table.
23968
23969         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
23970
23971         * reflection.h: Update to changes in class layout.
23972
23973         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
23974         Reenable call to mono_runtime_is_shutting_down ().
23975
23976         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
23977         determine if the runtime is shutting down.
23978
23979 2003-12-16  Jackson Harper <jackson@ximian.com>
23980
23981         * icall.c: comment out call to mono_runtime_is_shutting_down to
23982         fix build.
23983         
23984 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
23985
23986         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
23987         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
23988
23989 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
23990
23991         * reflection.c: move definition of swap_with_size
23992         to before its first call
23993
23994 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
23995
23996         * appdomain.c (mono_runtime_is_shutting_down): New public function.
23997
23998         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
23999         icall.
24000
24001         * object.c: Fix warnings.
24002
24003         * icall.c (ves_icall_Type_Get...): Only consider inherited static
24004         members if FlattenHierarchy is set.
24005
24006         * reflection.c (mono_image_add_decl_security): New function to emit
24007         declarative security.
24008
24009         * reflection.h reflection.c: Add support for declarative security.
24010
24011         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24012         
24013 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24014
24015         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
24016         
24017         * appdomain.c verify.c: Moved corlib version checking into its own
24018         function in appdomain.c since it needs to create vtables etc.
24019
24020 2003-12-13  Patrik Torstensson <p@rxc.se>
24021
24022         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
24023         instead of unwrapped server.
24024
24025 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * verify.c (check_corlib): Fix field index.
24028
24029 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
24030
24031         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
24032         GetGacPath icall.
24033
24034 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
24035
24036         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
24037         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
24038         cope with sizeof(size_t) != sizeof(guint32).
24039
24040 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24041
24042         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
24043         in case of failure.
24044
24045 2003-12-10  Mark Crichton <crichton@gimp.org>
24046
24047         * icall.c: removed the GetNonZeroBytes.  We now handle this case
24048         in managed code.
24049
24050         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
24051
24052 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
24053
24054         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
24055         marked as deleted.
24056
24057 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24058
24059         * verify.c (check_corlib): Handle the case when the version field is 
24060         initialized by a static constructor.
24061
24062 2003-12-08  Patrik Torstensson  <p@rxc.se>
24063
24064     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
24065
24066 2003-12-08  Martin Baulig  <martin@ximian.com>
24067
24068         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
24069         a MonoReflectionGenericParameter, also take the parameter index
24070         and name as arguments.
24071         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
24072         (ves_icall_MonoGenericParam_initialize): New interncall.
24073         (ves_icall_Type_make_byref_type): New interncall.
24074
24075         * reflection.h (MonoReflectionGenericParam): Derive from
24076         MonoReflectionType, not just from MonoObject.  Added `refobj' and
24077         `index' fields.
24078
24079         * reflection.c (mono_reflection_define_generic_parameter): Create
24080         and return a new MonoReflectionGenericParam; don't initialize the
24081         constraints here.
24082         (mono_reflection_initialize_generic_parameter): New public method;
24083         initializes the constraints and creates the `param->pklass'.
24084
24085 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24086
24087         * reflection.h reflection.c: Use the new fields 'num_types', 
24088         'num_fields' and 'num_methods' to track the number of types etc.
24089
24090         * verify.c (check_corlib): Check corlib version number.
24091
24092 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
24095         function works on all methods.
24096
24097 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24098
24099         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
24100         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
24101         the custom_type_info flag of the transparent proxy.
24102         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
24103         objects that supports IRemotingTypeInfo.
24104         * object.h: Added custom_type_info field in transparent proxy.
24105
24106 2003-12-06  Martin Baulig  <martin@ximian.com>
24107
24108         * class.c (mono_class_create_from_generic): Removed.
24109         (mono_class_from_generic): Check `ginst->klass' before doing
24110         anything else.  This is important to fully support "recursive"
24111         generic types.
24112
24113         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
24114         empty `generic_inst->klass' before doing anything else.
24115
24116 2003-12-06  Dick Porter  <dick@ximian.com>
24117
24118         * verify.c: 
24119         * object.h:
24120         * icall.c:
24121         * locales.c: Use C structs to access class fields.  Don't do a
24122         conversion between MonoString and UChar because both are
24123         platform-endian UTF-16.  Compare now takes startindex and count
24124         parameters.  Add a char overload for IndexOf.  Speed up the
24125         invariant string IndexOf.
24126
24127 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
24128
24129         * Makefile.am (monosn_LDADD): Fix parallel build.
24130
24131 2003-12-04  Martin Baulig  <martin@ximian.com>
24132
24133         * icall.c
24134         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24135         (ves_icall_Type_make_array_type): New interncall.       
24136
24137 2003-12-04  Martin Baulig  <martin@ximian.com>
24138
24139         * locales.c: also change it in the !HAVE_ICU case.
24140
24141 2003-12-04  Dick Porter  <dick@ximian.com>
24142
24143         * icall.c:
24144         * locales.c: construct_compareinfo is now in CompareInfo, not
24145         CultureInfo.
24146
24147 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24148
24149         * image.c (mono_image_load_file_for_image): Cache loaded images in the
24150         image->files array.
24151
24152         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
24153         table as well.
24154
24155         * assembly.c (mono_assembly_load_references): Only load references
24156         once.
24157
24158         * class.c (mono_class_from_name): Avoid linear search of the 
24159         EXPORTEDTYPE table.
24160
24161         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
24162
24163 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24164
24165         * image.h (MonoImage): Add 'field_cache' field.
24166
24167         * loader.c (mono_field_from_token): Cache field lookups.
24168         
24169         * reflection.c (mono_module_get_object): Fix name property.
24170
24171         * icall.c (ves_icall_get_enum_info): Update after changes to 
24172         mono_metadata_get_constant_index ().
24173
24174         * icall.c: Get rid of get_type_info icall, use a separate icall for
24175         each type property to avoid needless memory allocations. Fixes #51514.
24176
24177         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
24178         to avoid needless binary searches.
24179
24180         * class.c (class_compute_field_layout): Move the initialization of
24181         field->def_value to mono_class_vtable ().
24182
24183         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
24184         non-corlib types.
24185
24186         * object.c (mono_object_allocate): Make it inline.
24187
24188         * object.c (mono_object_allocate_spec): Make it inline.
24189         
24190 2003-12-02  Dick Porter  <dick@ximian.com>
24191
24192         * locales.c (create_NumberFormat): NumberFormatInfo construction.
24193         Patch by Mohammad DAMT (mdamt@cdl2000.com).
24194
24195 2003-12-01  Dick Porter  <dick@ximian.com>
24196
24197         * threads.c: Fix signature and call in CreateMutex and
24198         CreateEvent.
24199
24200 2003-12-01  Dick Porter  <dick@ximian.com>
24201
24202         * icall.c: 
24203         * locales.c: Implement string compares and searching
24204
24205         * object.h: Add extra Thread field
24206
24207 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * reflection.c (fixup_method): Add support for MonoCMethod.
24210
24211 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
24212
24213         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
24214
24215         * reflection.c (assembly_name_to_aname): Allow extra characters in
24216         assembly names. Fixes #51468.
24217
24218 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24219
24220         * exception.c (mono_exception_from_name_domain): New helper function.
24221
24222         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
24223         exception object in the correct domain.
24224
24225         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
24226         formatting + make a copy a the input data.
24227
24228         * loader.c (mono_get_method_from_token): Methods which contain
24229         native code do not have entries in the ImplMap.
24230
24231         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
24232         Thanks to Gonzalo for spotting this.
24233         
24234         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
24235         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
24236
24237         * assembly.h (mono_assembly_load_from): Split the second part of 
24238         assembly loading into a new public function.
24239
24240         * exception.h (mono_get_exception_bad_image_format): New function.
24241
24242 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24245         Enumerate all modules inside a dynamic assembly. Fixes #51293.
24246         
24247         * icall.c: Add new icall for creating dynamic methods.
24248
24249         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
24250
24251         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
24252
24253         * reflection.c (mono_reflection_create_dynamic_method): New icall to
24254         create a dynamic method.
24255
24256         * reflection.c (resolve_object): New helper function.
24257
24258         * reflection.c: Generalize ReflectionMethodBuilder and the functions
24259         which manipulate it so they can also work on dynamic methods.
24260
24261         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
24262         creating the MonoReflectionMethodAux structure if it is not needed.
24263         
24264         * reflection.h verify.c: Update after changes to object layout.
24265
24266         * reflection.c (method_builder_encode_signature): Fix compilation on
24267         gcc 2.95.x.
24268
24269 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
24270
24271         * appdomain.h: Added support for context static fields. Added static_data
24272           field to MonoAppContext and renamed thread_static_fields to a more
24273           generic special_static_fields in MonoAppDomain, since it can now contain
24274           context static fields.
24275         * domain.c: Updated hashtable name.
24276         * object.c: Replaced field_is_thread_static() for a more generic
24277           field_is_special_static() which also checks for context static attribute.
24278           In mono_class_vtable(), added support for static context fields.
24279         * threads.c: Changed methods that manage thread static fields to more
24280           generic methods so they can be reused both for thread and context static
24281           data.
24282         * threads.h: Declared some new methods.
24283
24284 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
24285
24286         * reflection.h: Update after changes to the managed types.
24287
24288         * reflection.c (encode_custom_modifiers): New helper function.
24289
24290         * reflection.c (method_encode_signature): Emit custom modifiers.
24291
24292         * reflection.c (field_encode_signature): Emit custom modifiers.
24293
24294 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24295
24296         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
24297
24298         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
24299         implementation.
24300
24301         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
24302         icall.
24303
24304         * object.c (mono_field_get_value_object): New function.
24305
24306         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
24307         specific.
24308
24309 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24310
24311         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
24312         return a preallocated out-of-memory exception instance.
24313
24314         * object.c (out_of_memory): Use the new function.
24315
24316         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
24317         flag is before the custom modifiers. Fixes #49802.
24318
24319 2003-11-16  Martin Baulig  <martin@ximian.com>
24320
24321         * class.c (mono_class_is_open_constructed_type): Implemented the
24322         MONO_TYPE_GENERICINST case.
24323
24324 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24325
24326         * assembly.c (mono_assembly_fill_assembly_name): New function to
24327         fill out the MonoAssemblyName structure.
24328         (mono_assembly_open): Use the new function.
24329
24330         * icall.c (fill_reflection_assembly_name): New helper function.
24331
24332         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
24333         new function.
24334
24335         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
24336
24337 2003-11-15  Martin Baulig  <martin@ximian.com>
24338
24339         * class.c (mono_class_is_open_constructed_type): New public
24340         function; checks whether a type is an open constructed type,
24341         ie. whether it still contains type parameters.
24342         (mono_class_inflate_generic_type): If we're a type parameter and
24343         the inflated type is also a MONO_TYPE_(M)VAR, return the original
24344         type.
24345
24346         * class.h (MonoGenericInst): Added `guint32 is_open'.
24347
24348         * loader.c (method_from_methodspec): Check whether we're an open
24349         or closed constructed type and set `ginst->is_open'.
24350
24351         * reflection.c (mono_reflection_bind_generic_parameters): Check
24352         whether we're an open or closed constructed type and set
24353         `ginst->is_open'.
24354         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
24355         from open constructed types.
24356
24357 2003-11-15  Martin Baulig  <martin@ximian.com>
24358
24359         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24360         a generic instance (instead of a generic type declaration) with
24361         unbound generic parameters, bind them to our actual types.
24362
24363 2003-11-14  Martin Baulig  <martin@ximian.com>
24364
24365         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
24366
24367         * reflection.c (mono_reflection_bind_generic_parameters): If we're
24368         an interface type, populate `res->interfaces' with instantiated
24369         versions of all the interfaces we inherit.
24370
24371 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
24372
24373         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
24374         when MONO_PATH is set but doesn't contain the install dir.
24375
24376 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24377
24378         * icall.c:
24379         (ves_icall_Type_GetInterfaces): don't return an interface twice when
24380         it's also implemented in base classes. Fixes bug #50927.
24381
24382 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
24383
24384         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
24385         if this method is called from a finalizer. Fixes #50913.
24386
24387 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
24388
24389         * threads.c: Implement VolatileRead/VolatileWrite
24390
24391         * icall.c: Add new icalls for VolatileRead/VolatileWrite
24392
24393 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24394
24395         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
24396         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
24397         2.95.3.
24398
24399         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
24400         from Peter Ross (pro@missioncriticalit.com).
24401         
24402 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
24403
24404         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
24405
24406 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24407
24408         * assembly.c (mono_assembly_load_references): Disable check because it
24409         triggers on older corlibs which lots of people have.
24410
24411 2003-11-12  Jackson Harper  <jackson@ximian.com>
24412
24413         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
24414         load corlib.dll if mscorlib.dll is not found.
24415         * assembly.h: Remove corlib name define.
24416         * class.c:
24417         * domain.c:
24418         * image.c: Change corlib name to mscorlib.
24419         
24420 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24421
24422         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
24423
24424 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
24425
24426         * appdomain.h: Added loader_optimization here to sync with the C#
24427         code, and add disallow_binding_redirects field.
24428
24429 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24430
24431         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
24432
24433         * reflection.c (mono_image_build_metadata): Fix crash on modules
24434         with no types.
24435
24436         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
24437
24438         * icall.c (ves_icall_get_method_info): Return callingConvention as
24439         well.
24440
24441         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
24442         namespaces from the EXPORTEDTYPE table as well.
24443
24444         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
24445         from all modules inside the assembly.
24446         
24447 2003-11-11  Martin Baulig  <martin@ximian.com>
24448
24449         * reflection.c (mono_reflection_bind_generic_parameters): Make
24450         this work for interfaces.
24451
24452 2003-11-11  Martin Baulig  <martin@ximian.com>
24453
24454         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
24455
24456 2003-11-11  Martin Baulig  <martin@ximian.com>
24457
24458         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
24459         "MonoInflatedMethod" and "MonoInflatedCtor".
24460
24461 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
24462
24463         * reflection.c (resolution_scope_from_image): Use the assembly table
24464         from the manifest module, since other modules don't have it.
24465
24466         * debug-helpers.c (mono_type_full_name): New helper function.
24467
24468         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
24469
24470         * image.c (mono_image_load_file_for_image): New public function which
24471         is a replacement for the load_file_for_image in class.c.
24472
24473         * assembly.c (mono_assembly_load_module): A wrapper for the function
24474         above which does assembly association and reference loading too.
24475
24476         * class.c (mono_class_from_name): Call mono_assembly_load_module.
24477
24478 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24479
24480         * appdomain.c: not all of the attributes for the full assembly name
24481         are required and the order doesn't matter. Fixes bug #50787.
24482
24483 2003-11-10  Dick Porter  <dick@ximian.com>
24484
24485         * locales.c: Use platform-endian UTF16
24486
24487 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24488
24489         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24490         
24491 2003-11-10  Martin Baulig  <martin@ximian.com>
24492
24493         * metadata.c
24494         (mono_metadata_load_generic_params): Make this actually work.
24495
24496         * reflection.c (mono_reflection_bind_generic_parameters): If our
24497         parent is a generic instance, pass all the `types' to it, no
24498         matter whether it has the same number of type parameters or not.
24499
24500 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
24501
24502         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
24503
24504         * assembly.c (mono_assembly_load_references): Move the image<->assembly
24505         assignment code to this function so it gets called recursively for all
24506         modules.
24507
24508         * image.c (load_modules): Remove the assembly assignment since it is
24509         now done by mono_assembly_load_references.
24510         
24511         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
24512         Add 'module' argument.
24513         (mono_module_get_types): New helper function.
24514         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
24515
24516 2003-11-08  Martin Baulig  <martin@ximian.com>
24517
24518         * class.c (mono_class_inflate_generic_method): Interface method
24519         don't have a header.
24520
24521         * reflection.c (mono_image_get_methodspec_token): Take an
24522         additional `MonoGenericInst *' argument instead of reading it from
24523         the header; this is necessary to support interfaces.
24524         (mono_image_create_token): Pass the `MonoGenericInst *' from the
24525         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
24526         (inflated_method_get_object): Take an additional `MonoGenericInst *'
24527         argument.
24528
24529         * reflection.h (MonoReflectionInflatedMethod): Added
24530         `MonoGenericInst *ginst'.
24531
24532 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
24535
24536 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
24537
24538         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
24539
24540 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24541
24542         * reflection.c 
24543         (reflection_methodbuilder_from_method_builder):
24544         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
24545         initialize a ReflectionMethodBuilder structure.
24546         (mono_image_get_methodbuilder_token):
24547         (mono_image_get_ctorbuilder_token): New functions to emit memberref
24548         tokens which point to types in another module inside the same assembly.
24549
24550         * reflection.c: Use the new helper functions.
24551         
24552         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
24553
24554         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
24555         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
24556
24557         * reflection.c (resolution_scope_from_image): Emit a moduleref if
24558         neccesary.
24559
24560         * reflection.c (mono_image_build_metadata): Emit metadata only for the
24561         current module. Emit the manifest only for the main module.
24562
24563         * reflection.c (mono_image_create_token): Add assertion when a 
24564         memberref needs to be created.
24565
24566         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
24567
24568         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
24569         larger buffer for the custom attribute blob. Fixes #50637.
24570         
24571 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24572
24573         * threadpool.c: notify listener on async processing handles after
24574         invoking the async callback. Thanks to Zoltan.
24575
24576 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24577
24578         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
24579         avoid code duplication.
24580
24581         * reflection.h (MonoDynamicImage): New type which is currently unused,
24582         but will be used through the ref.emit code in place of 
24583         MonoDynamicAssembly.
24584
24585         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24586         object layout.
24587
24588         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
24589         a MonoDynamicImage instead of just a MonoImage.
24590         
24591         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
24592         icalls to ModuleBuilder but keep their semantics, so they will work
24593         with moduleb->assemblyb. This will change later.
24594         
24595 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24596
24597         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
24598         object layout.
24599
24600         * reflection.c (mono_image_build_metadata): Avoid creation of a default
24601         main module, since it is now done by the managed code.
24602
24603 2003-11-03  Martin Baulig  <martin@ximian.com>
24604
24605         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
24606         `ginst->klass' here.
24607         (method_encode_methodspec): Don't use the `ginst->generic_method's
24608         klass if it's a generic instance, use `ginst->klass' in this case.
24609
24610 2003-11-03  Martin Baulig  <martin@ximian.com>
24611
24612         * reflection.c (mono_image_get_generic_method_param_info):
24613         Removed, use mono_image_get_generic_param_info() instead.
24614         (mono_image_get_type_info): Write the GenericParam table before
24615         the Method table.  This is neccessary because in the GenericParam
24616         table, type parameters of the class (ie. '!0' etc.) must come
24617         before the ones from its generic methods (ie. '!!0' etc).
24618
24619 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
24620
24621         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
24622
24623 2003-11-02  Martin Baulig  <martin@ximian.com>
24624
24625         * reflection.c (create_generic_typespec): Take a
24626         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
24627         the generic parameters from it.
24628
24629 2003-11-02  Martin Baulig  <martin@ximian.com>
24630
24631         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
24632         instead of a `MonoClassField *' since we just need the type.
24633         (create_generic_typespec): New static function.  Creates a
24634         TypeSpec token for a generic type declaration.
24635         (mono_image_get_generic_field_token): New static function.
24636         (mono_image_create_token): If we're a FieldBuilder in a generic
24637         type declaration, call mono_image_get_generic_field_token() to get
24638         the token.
24639
24640 2003-11-02  Martin Baulig  <martin@ximian.com>
24641
24642         * reflection.h
24643         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
24644         `MonoReflectionGenericInst *declaring_type' and
24645         `MonoReflectionGenericInst *reflected_type' fields.
24646
24647         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
24648         `MonoReflectionGenericInst *declaring_type' and a
24649         `MonoReflectionGenericInst *reflected_type' argument instead of a
24650         single `MonoReflectionGenericInst *type' one.  Set
24651         `res->declaring_type' and `res->reflected_type' from them.
24652         (mono_reflection_inflate_field): Likewise.      
24653
24654 2003-11-02  Martin Baulig  <martin@ximian.com>
24655
24656         * class.c (mono_class_setup_vtable): Don't store generic methods
24657         in the vtable.  
24658
24659 2003-11-02  Martin Baulig  <martin@ximian.com>
24660
24661         * reflection.h (MonoReflectionGenericInst): Added
24662         `MonoReflectionType *declaring_type'.
24663
24664         * reflection.c (mono_reflection_bind_generic_parameters): Use
24665         `if (tb->parent)' instead of `klass->parent'.
24666
24667 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
24668
24669         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
24670         with an empty ASSEMBLY table.
24671
24672         * reflection.c (mono_image_build_metadata): Avoid using the same loop
24673         variable in the inner and outer loops.
24674
24675 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24676
24677         * metadata.h (mono_metadata_make_token): Put parentheses around macro
24678         argument.
24679
24680         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
24681         
24682         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
24683         icalls. Instead, do everything in managed code. This is needed since
24684         it is hard to restore the original domain etc. in unmanaged code in the
24685         presence of undeniable exceptions.
24686
24687         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
24688         New icalls to push and pop appdomain refs.
24689
24690 2003-10-31  Martin Baulig  <martin@ximian.com>
24691
24692         * class.c (inflate_generic_type): Renamed to
24693         mono_class_inflate_generic_type() and made it public.
24694
24695         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
24696         New interncall.
24697
24698         * loader.c (mono_field_from_memberref): Also set the retklass for
24699         typespecs.
24700
24701         * fielder.c (mono_image_get_inflated_field_token): New static
24702         method; creates a metadata token for an inflated field.
24703         (mono_image_create_token, fixup_method): Added support for
24704         "MonoInflatedField".
24705         (fieldbuilder_to_mono_class_field): New static function.
24706         (mono_reflection_inflate_field): New public function.
24707
24708         * reflection.h
24709         (MonoReflectionGenericInst): Added `MonoArray *fields'.
24710         (MonoReflectionInflatedField): New typedef.     
24711
24712 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
24713
24714         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
24715         for Solaris and other platforms without s6_addr16
24716
24717 2003-10-30  Martin Baulig  <martin@ximian.com>
24718
24719         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
24720         argument instead of two.
24721         (mono_class_inflate_generic_signature): Likewise.
24722         (inflate_generic_header): Likewise.
24723         (mono_class_inflate_generic_method): Likewise.  In addition, if
24724         `ginst->klass' is set, it becomes the new `method->klass'.
24725
24726         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
24727         field.
24728
24729         * reflection.c (encode_generic_method_sig): Write a 0xa as the
24730         first byte. [FIXME]
24731         (method_encode_methodspec): If we have generic parameters, create
24732         a MethodSpec instead of a MethodRef.
24733         (fixup_method): Added support for "MonoInflatedMethod" and
24734         "MonoInflatedCtor".
24735         (mono_image_create_token): Added support for "MonoInflatedMethod"
24736         and "MonoInflatedCtor".
24737         (inflated_method_get_object): New static function; returns a
24738         managed "System.Reflection.MonoInflatedMethod" object.
24739         (mono_reflection_bind_generic_method_parameters): Return a
24740         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
24741         (mono_reflection_inflate_method_or_ctor): Likewise.
24742         (mono_image_get_generic_method_param_info): Initialize unused
24743         fields to zero.
24744         (mono_image_get_generic_param_info): Likewise.
24745
24746         * reflection.h (MonoReflectionInflatedMethod): New public
24747         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
24748         "S.R.MonoInflatedCtor" classes.
24749
24750         * loader.c (method_from_memberref): If we're a TypeSpec and it
24751         resolves to a generic instance, inflate the method.
24752
24753 2003-10-28  Dick Porter  <dick@ximian.com>
24754
24755         * object.c (mono_runtime_run_main): Convert command-line arguments
24756         into utf8, falling back to the user's locale encoding to do so.
24757
24758 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24759
24760         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
24761         at this time.
24762
24763         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
24764
24765         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
24766         up icalls at method definition time. Partially fixes #33569.
24767
24768 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
24769
24770         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
24771         marshalling of arrays. Fixes #50116.
24772
24773         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
24774
24775         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
24776         points to a vtable in the dying appdomain.
24777
24778         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
24779         listeners into unmanaged code inside the lock.
24780
24781         * object.c (mono_class_vtable): Turn off typed allocation in non-root
24782         domains and add some comments.
24783
24784 2003-10-25  Martin Baulig  <martin@ximian.com>
24785
24786         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
24787
24788         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
24789
24790         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
24791         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
24792         currently parsing.  Create the generic class and store it in
24793         `generic_inst->klass' before parsing the type arguments.  This is
24794         required to support "recursive" definitions; see mcs/tests/gen-23.cs
24795         for an example.
24796         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
24797         to support recursive typespec entries.
24798
24799         * class.c (mono_class_setup_parent): If our parent is a generic
24800         instance, we may get called before it has its name set.
24801         (mono_class_from_generic): Splitted into
24802         mono_class_create_from_generic() and mono_class_initialize_generic().
24803
24804 2003-10-25  Martin Baulig  <martin@ximian.com>
24805
24806         * icall.c (ves_icall_Type_BindGenericParameters): Return a
24807         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
24808         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
24809         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
24810
24811         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
24812         (create_typespec): Likewise.
24813         (mono_reflection_bind_generic_parameters): Return a
24814         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
24815         (mono_reflection_inflate_method_or_ctor): New public function.
24816
24817         * reflection.h (MonoReflectionGenericInst): New typedef.        
24818
24819 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24820
24821         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
24822         inside the domain lock. Fixes #49993.
24823         
24824         * object.c (mono_class_vtable): When typed allocation is used, 
24825         allocate vtables in the GC heap instead of in the mempool, since the
24826         vtables contain GC descriptors which are used by the collector even
24827         after the domain owning the mempool is unloaded.
24828
24829         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
24830
24831         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
24832         reflect what it does. Also invalidate mempools instead of freeing
24833         them if a define is set.
24834
24835         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
24836         of the appdomain.
24837         
24838         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
24839         hold the finalizable objects in this domain.
24840
24841         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
24842         appdomain.
24843
24844         * appdomain.c (mono_domain_set): New function to set the current
24845         appdomain, but only if it is not being unloaded.
24846
24847         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
24848         appdomain which is being unloaded.
24849         
24850         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
24851         unloading of the root appdomain.
24852
24853         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
24854         icall to execute a method in another appdomain. Intended as a 
24855         replacement for InternalSetDomain, which can confuse the code 
24856         generation in the JIT.
24857
24858         * appdomain.c (mono_domain_is_unloading): New function to determine
24859         whenever an appdomain is unloading.
24860
24861         * appdomain.c (mono_domain_unload): New function to correctly unload
24862         an appdomain.
24863
24864         * assembly.c (mono_assembly_load_references): Check that an assembly
24865         does not references itself.
24866
24867         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
24868         domain manually, it asks the finalizer thread to do it, then waits for
24869         the result. Also added a timeout.
24870
24871         * icall.c: Register the new icalls.
24872
24873         * threads.h threads.c: Export the mono_gc_stop_world and 
24874         mono_gc_start_world functions.
24875         
24876         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
24877         function to fill out the mempool with 0x2a.
24878
24879 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
24880
24881         * reflection.h (MonoReflectionMethodAux): New structure to store
24882         information which is rarely used, thus is not in the MonoMethod
24883         structure.
24884
24885         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
24886         store the aux info.
24887
24888         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
24889         and marshalling info into the aux structure.
24890
24891         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
24892         from the aux structure.
24893
24894         * loader.c (mono_method_get_param_names): Retrieve the param names from
24895         the aux structure.
24896         
24897 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
24898
24899         * exception.h exception.c: Add AppDomainUnloadedException && fix 
24900         warning.
24901
24902 2003-10-21  Dick Porter  <dick@ximian.com>
24903
24904         * socket-io.c
24905         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
24906         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
24907
24908 2003-10-21  Martin Baulig  <martin@ximian.com>
24909
24910         * reflection.c (mono_reflection_bind_generic_parameters):
24911         `klass->parent' is NULL for interfaces.
24912
24913 2003-10-21  Martin Baulig  <martin@ximian.com>
24914
24915         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
24916
24917 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
24918
24919         * exception.c (mono_exception_from_name_msg): New helper function for
24920         creating exceptions and initializing their message field.
24921
24922         * exception.c: Simplify functions using the new helper.
24923
24924         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
24925         New function.
24926
24927         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
24928         mono_raise_exception, since otherwise gcc doesn't generate the function
24929         epilog for raise_exception, confusing the stack unwinding in the JIT.
24930         Fixes #45043.
24931
24932         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
24933         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
24934         Fixes #49499.
24935
24936 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24937
24938         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
24939         utf8.
24940
24941 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
24942
24943         * icall.c: Removed GetUninitializedObject method because
24944           AllocateUninitializedClassInstance does the same.
24945
24946 2003-10-18  Martin Baulig  <martin@ximian.com>
24947
24948         * class.c (inflate_generic_signature): Renamed to
24949         mono_class_inflate_generic_signature() and made it public.
24950         (my_mono_class_from_generic_parameter): New static function; if we
24951         don't already have the generic parameter's MonoClass, create a
24952         very simple one which is just used internally in the runtime and
24953         not passed back to managed code.
24954
24955         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
24956
24957         * metadata.h (MonoMethodSignature): Moved the
24958         `MonoGenericParam *gen_params' to the MonoMethodHeader.
24959         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
24960
24961         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
24962         ves_icall_MonoMethod_GetGenericArguments(); this is now an
24963         interncall on the MonoMethod class, not on MethodInfo.
24964         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
24965         calling mono_reflection_bind_generic_method_parameters() directly.
24966
24967         * loader.c (mono_method_get_signature): If this is a MethodSpec;
24968         return the already computed `method->signature'.
24969         (method_from_methodspec): New static function to load a method
24970         from a MethodSpec entry.
24971         (mono_get_method_from_token): Call the new method_from_methodspec()
24972         for MethodSpec tokens.  
24973         (mono_get_method_from_token): If we're a generic method, load the
24974         type parameters.
24975
24976         * reflection.c (mono_image_get_memberref_token): Allow
24977         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
24978         table.
24979         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
24980         (mono_image_create_token): First check whether it's a generic
24981         method (so we'd need to create a MethodSpec), then do the other
24982         two alternatives.
24983         (mono_reflection_bind_generic_method_parameters): Return a
24984         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
24985         called directly from the interncall.
24986
24987 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
24988
24989         * reflection.c (load_public_key): Move loading of the public key
24990         into managed code.
24991
24992         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
24993
24994         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
24995         fields.
24996
24997         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
24998         culture, hash_alg and public_key. Fixes #49555.
24999
25000 2003-10-17  Martin Baulig  <martin@ximian.com>
25001
25002         * class.h (MonoGenericInst): Moved this declaration here and added
25003         `MonoMethod *generic_method'.
25004
25005         * icall.c
25006         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
25007         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
25008
25009         * metadata.c (mono_metadata_type_equal): Two types of
25010         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
25011         index; ie. don't compare the address of the `MonoGenericParam'
25012         structure.
25013         (mono_metadata_load_generic_params): Removed the `MonoMethod
25014         *method' argument.
25015
25016         * metadata.h (MonoGenericInst): Moved declaration to class.h.
25017         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
25018
25019         * reflection.c (method_encode_signature): Encode the number of
25020         generic parameters.
25021         (encode_generic_method_sig): New static function.
25022         (method_encode_methodspec): New static function; creates an entry
25023         in the MethodSpec table for a generic method.
25024         (mono_image_get_methodspec_token): New static function.
25025         (mono_image_create_token): Call mono_image_get_methodspec_token()
25026         for generic methods.
25027         (mono_reflection_bind_generic_method_parameters): New public
25028         function.  Instantiates a generic method.
25029
25030 2003-10-16  Martin Baulig  <martin@ximian.com>
25031
25032         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
25033         *gen_params' here from MonoMethodHeader.
25034
25035         * metadata.c (mono_metadata_parse_method_signature): If we have
25036         generic parameters, initialize `method->gen_params' and then set
25037         the correct `type->data.generic_param' in all the parameters.
25038
25039 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
25040
25041         * threads.c (mono_threads_get_default_stacksize): New function to 
25042         return the default stacksize.
25043
25044         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
25045         termination of the finalizer thread, since the previous method had
25046         race conditions. Fixes #49628.
25047
25048         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
25049         as for the other managed threads.
25050
25051 2003-10-16  Martin Baulig  <martin@ximian.com>
25052
25053         * class.c (inflate_generic_signature): Copy `generic_param_count'
25054         and `gen_params'.
25055
25056         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
25057         New interncall.
25058
25059         * metadata.c (mono_metadata_parse_method_signature): Actually set
25060         the `method->generic_param_count' here.
25061         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
25062
25063 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
25064
25065         * object.h: Add a new field to TypedRef to simplify the implementation
25066         of the REFANY opcodes in the JIT.
25067
25068         * icall.c: Make use of the new field.
25069
25070         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
25071         dynamically.
25072
25073 2003-10-15  Martin Baulig  <martin@ximian.com>
25074
25075         * class.c (mono_class_from_gen_param): Renamed to
25076         mono_class_from_generic_parameter() and moved most of the
25077         functionality from mono_reflection_define_generic_parameter()
25078         here; ie. we create a "real" class here.
25079         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
25080         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
25081         previously been called.
25082
25083         * class.h (MonoGenericParam): Moved the declaration of this struct
25084         here from metadata.h and added `MonoMethod *method'.
25085
25086         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
25087         interncall.
25088
25089         * loader.c (mono_get_method_from_token): If we have any generic
25090         parameters, call mono_metadata_load_generic_params() to read them
25091         from the MONO_TABLE_GENERICPAR.
25092
25093         * metadata.c (mono_metadata_load_generic_params): Added
25094         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
25095
25096         * metadata.h (MonoMethodSignature): Replaced
25097         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
25098         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
25099
25100         * reflection.c (mono_reflection_define_generic_parameter): Moved
25101         most of the functionality into the new
25102         mono_class_from_generic_parameter(); set the `method' field if
25103         we're a method parameter.       
25104
25105 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
25106
25107         * marshal.c (emit_struct_conv): if native size is 0
25108         emit no code.
25109
25110 2003-10-14  Martin Baulig  <martin@ximian.com>
25111
25112         * icall.c: The generics API has changed in the spec since it was
25113         added to System.Type; these modifications make it match the spec
25114         again.
25115         (ves_icall_Type_GetGenericParameters): Renamed to
25116         `ves_icall_Type_GetGenericArguments'.
25117         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
25118         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
25119         `ves_icall_MonoType_get_HasGenericArguments'.
25120         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
25121         `ves_icall_MonoType_get_IsGenericParameter'.
25122         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
25123         this is no interncall anymore.
25124         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
25125         `ves_icall_TypeBuilder_get_IsGenericParameter'.
25126
25127 2003-10-14  Martin Baulig  <martin@ximian.com>
25128
25129         * reflection.c (mono_reflection_bind_generic_parameters): Also
25130         inflate generic methods if we're reading the class from IL.
25131
25132 2003-10-13  Martin Baulig  <martin@ximian.com>
25133
25134         * reflection.c (mono_reflection_define_generic_parameter): This
25135         method isn't called directly from the icall anymore; take a
25136         `MonoReflectionAssemblyBuilder *' so we can use this for type and
25137         method generic parameters.
25138         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
25139         (method_builder_encode_signature): Encode generic parameters.
25140         (mono_image_get_method_info): Write generic params to the
25141         MONO_TABLE_GENERICPARAM table.
25142
25143         * reflection.h (MonoReflectionMethodBuilder): Added
25144         `MonoArray *generic_params'.
25145
25146         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
25147
25148         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
25149         wrapper for mono_reflection_define_generic_parameter().
25150         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
25151
25152 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
25153
25154         * marshal.h: Add missing function to fix build.
25155
25156         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
25157         the SetLastError pinvoke attribute.
25158
25159         * marshal.c (mono_marshal_set_last_error): New helper function called
25160         by the generated code.
25161         
25162         * marshal.c (mono_mb_emit_branch): New helper function.
25163
25164         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
25165
25166         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
25167         classes as parameters and return values of delegates. Fixes #29256. 
25168
25169 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
25170
25171         * locales.c: use gint32 in non HAVE_ICU case
25172
25173 2003-10-11  Martin Baulig  <martin@ximian.com>
25174
25175         * mono-debug.c (mono_debug_add_method): Added a workaround for
25176         bug #48591.
25177
25178 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
25179
25180         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
25181         delegates passed to native code must use the STDCALL calling 
25182         convention. Fixes #35987.
25183
25184 2003-10-10  Martin Baulig  <martin@ximian.com>
25185
25186         * class.c (inflate_generic_type): If we're inflating for a generic
25187         type instance (and not for a generic method), return
25188         MONO_TYPE_MVAR unchanged.
25189
25190 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25191
25192         * string-icalls.c: Join ignores null strings in the source array.
25193         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
25194         * threads.c: GetAvailableTheads is slightly more accurate.
25195
25196 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
25197
25198         * threads.h threads.c : add mono_threads_set_default_stacksize
25199         and pass default to CreateThread calls.
25200
25201 2003-10-09  Dick Porter  <dick@ximian.com>
25202
25203         * icall.c:
25204         * locales.h:
25205         * locales.c: Internal calls for constructing CultureInfo and
25206         related objects from libicu (if its available.)
25207
25208 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
25209
25210         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
25211
25212 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25213
25214         * threadpool.c: added an argument to async_invoke_thread that is the
25215         item to process, pass the MonoAsyncResult to the thread start function
25216         when creating a new thread. This way we don't need to acquire any lock
25217         when we're creating a new thread. Readded a semaphore for faster
25218         response times (instead of that Sleep i added).
25219
25220 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
25221
25222         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
25223         get daylight change dates better on Windows, fix handling
25224         of platforms without tm_gmtoff.
25225
25226 2003-10-06  Martin Baulig  <martin@ximian.com>
25227
25228         * class.c (inflate_generic_method): Renamed to
25229         mono_class_inflate_generic_method() and made public.
25230         (mono_class_init): Don't inflate the generic methods here.
25231         (mono_class_from_generic): Added `gboolean inflate_methods'
25232         argument.  Inflate the methods here.
25233
25234         * loader.c (mono_method_get_param_names): Ignore instances of
25235         generic types for the moment.
25236
25237         * reflection.c (fixup_method): Added support for inflated methods.
25238         (mono_image_create_token): Use mono_image_get_methodref_token()
25239         for inflated methods.
25240         (mono_custom_attrs_from_param): Ignore instances of generic types
25241         for the moment.
25242         (mono_reflection_bind_generic_parameters): New public function.
25243         Moved all the functionality from
25244         ves_icall_Type_BindGenericParameters() here and added support for
25245         dynamic types.
25246         (mono_reflection_define_generic_parameter): Initialize
25247         `klass->methods' here.
25248
25249         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
25250         functionality into mono_reflection_define_generic_parameter().
25251         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
25252         TypeBuilder, return that TypeBuilder.
25253
25254 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25255
25256         * appdomain.c: removed mono_delegate_semaphore.
25257
25258         * threadpool.c:
25259         (mono_thread_pool_add): moved hash table creation inside and the thread 
25260         creation outside of the critical region.
25261         (mono_thread_pool_finish): removed obsolete code.
25262         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
25263         continue or exit the thread depending on the queue.
25264
25265 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
25266
25267         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
25268         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
25269         handle more bool marshalling options
25270
25271 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
25272
25273         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
25274         arrays of structs. Also add a more descriptive error message when
25275         a structure member is marshalled as LPArray.
25276
25277 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
25278
25279         * marshal.c (mono_marshal_get_native_wrapper): Add support for
25280         marshalling arrays of complex types. Fixes #29098. Also remove an
25281         usused and incomplete function.
25282
25283 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
25284
25285         * gc.c: report heap_size - free_bytes as total memory allocated
25286         (bug#49362).
25287
25288 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
25289
25290         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
25291         fix timezone handling problems on Windows.
25292         
25293         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
25294         asserts when the year is outside the range handled by ms the functions.
25295
25296         * class.c (setup_interface_offsets): If the class is an interface,
25297         fill out its interface_offsets slot.
25298
25299 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25300
25301         * threadpool.c: mark threadpool threads as background.
25302
25303 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
25304
25305         * decimal.c - define DECINLINE to nothing if not using GCC
25306
25307 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
25308
25309         * assembly.c: More refcount fixes.
25310
25311 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25312
25313         * string-icalls.c: if we're not trimming, return the same string.
25314         When not splitting, don't create a new string.
25315
25316 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25317
25318         * image.c:
25319         (mono_image_open): increment the ref_count inside the critical section.
25320
25321 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
25322
25323         * image.c (mono_image_open): Fix reference counting bug.
25324
25325 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
25326
25327         * marshal.c (mono_marshal_type_size) struct alignment changed for 
25328         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
25329         64bits. Avoid leak in mono_marshal_get_native_wrapper when
25330         mono_lookup_pinvoke_call throws.        
25331
25332 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
25333
25334         * reflection.c (mono_reflection_parse_type): Fix #49114.
25335
25336         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
25337         temporary workaround for cygwin header problem.
25338
25339         * object.c (mono_object_isinst): Synchronize this with the code
25340         generated by the JIT for casts.
25341
25342 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
25343
25344         * reflection.c (encode_type): Fix #38332.
25345
25346 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
25347
25348         * marshal.c (mono_marshal_method_from_wrapper): New function to return
25349         the original method from the wrapper method.
25350
25351 2003-09-25  Martin Baulig  <martin@ximian.com>
25352
25353         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
25354         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
25355         (ves_icall_Type_get_IsGenericInstance): New interncall.
25356
25357 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
25358
25359         * object.c: fix cast warning in big endian code.
25360
25361 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
25362
25363         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
25364         
25365 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25366
25367         * assembly.c: don't call check_env from mono_assembly_load. It's
25368         already done once in mono_assemblies_init and may cause headaches when
25369         multiple threads are loading assemblies.
25370
25371 2003-09-19  Martin Baulig  <martin@ximian.com>
25372
25373         * reflection.c (mono_reflection_define_generic_parameter): Don't
25374         allocate `klass->methods', set `klass->flags' to
25375         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
25376
25377 2003-09-18  Martin Baulig  <martin@ximian.com>
25378
25379         * class.c (mono_class_init): Don't create `class->methods' if it's
25380         already initialized.
25381
25382         * metadata.c (mono_metadata_load_generic_params): Make this
25383         actually work.
25384
25385         * reflection.c (mono_reflection_define_generic_parameter): Set
25386         parent class and interfaces from the constraints.
25387
25388         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
25389         to keep this struct in sync with the declaration in TypeBuilder.cs.
25390
25391 2003-09-17  Martin Baulig  <martin@ximian.com>
25392
25393         * metadata.h (MonoType): Replaced the data's `int type_param'
25394         field with `MonoGenericParam *generic_param'.
25395         (MonoGenericParam): Added `MonoClass *klass'.
25396
25397         * class.c (mono_class_from_gen_param): Removed the
25398         `MonoImage *image' and `int type_num' arguments.
25399
25400         * metadata.c (mono_metadata_parse_generic_param): New static
25401         method; creates a MonoGenericParam which just contains the index.
25402         (do_mono_metadata_parse_type): Call
25403         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
25404         MONO_TYPE_MVAR.
25405
25406         * reflection.c (mono_image_typedef_or_ref): Generic type
25407         parameters may be in the same assembly, but never use a typedef
25408         for them.
25409         (mono_reflection_define_generic_parameter): We're now creating a
25410         "real" class for the type parameter; it's now safe to call
25411         mono_class_from_mono_type() on the class'es type, it'll do the
25412         right thing.
25413
25414 2003-09-16  Martin Baulig  <martin@ximian.com>
25415
25416         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
25417         `symfile->range_entry_size' and `symfile->class_entry_size' here;
25418         the `symfile' data structure must be fully initialized before it
25419         gets added to the table.
25420
25421 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
25422
25423         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
25424
25425         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
25426         class init trampolines.
25427
25428 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
25429
25430         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
25431         to the built-in profiler to turn off time and allocation profiling
25432         respectively.
25433
25434 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
25435
25436         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
25437         g_direct_equal.
25438
25439         * debug-helpers.c (mono_method_full_name): Print the wrapper type
25440         in human readable form.
25441
25442 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
25443
25444         * reflection.c icall.c: Fixed warnings.
25445
25446         * image.c (load_class_names): Use a temporary hash table to hold the
25447         namespaces in order to avoid doing many string comparisons.
25448
25449         * image.h: Fix typo.
25450
25451         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
25452         Pass NULL instead of g_direct_equal to the GHashTable constructor 
25453         since the NULL case is short-circuited inside g_hash_table_lookup, 
25454         leading to better performance.  
25455
25456         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
25457         obtain the first custom attribute for a given index. Depends on the
25458         CustomAttribute table being sorted by the parent field.
25459
25460         * reflection.c (mono_custom_attrs_from_index): Use the new function 
25461         for better performance.
25462
25463 2003-09-07  Martin Baulig  <martin@ximian.com>
25464
25465         * class.c (mono_class_init): If we're a generic instance, inflate
25466         all our methods instead of loading them from the image.
25467         (mono_class_from_generic): Set `class->methods = gklass->methods'.
25468
25469 2003-09-07  Martin Baulig  <martin@ximian.com>
25470
25471         * mono-debug-debugger.c: Added support for constructors.
25472
25473 2003-09-06  Martin Baulig  <martin@ximian.com>
25474
25475         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
25476         New interncall.
25477
25478         * reflection.c (mono_reflection_setup_generic_class): Call
25479         ensure_runtime_vtable() to create the vtable.
25480
25481 2003-09-05  Martin Baulig  <martin@ximian.com>
25482
25483         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
25484         MONO_TYPE_MVAR.
25485
25486 2003-09-04  Martin Baulig  <martin@ximian.com>
25487
25488         * reflection.c (mono_reflection_define_generic_parameter): Generic
25489         parameters start with zero.
25490
25491 2003-09-04  Martin Baulig  <martin@ximian.com>
25492
25493         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
25494
25495         * reflection.h (MonoReflectionGenericParam): New typedef.
25496         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
25497         the generic parameters from the managed TypeBuilder.
25498
25499         * reflection.c (mono_reflection_define_generic_parameter): New function.
25500         (mono_reflection_create_runtime_class): Encode generic parameters.
25501         (mono_reflection_setup_generic_class): New function; this is
25502         called after adding adding all generic params to the TypeBuilder.
25503         (encode_type): Added MONO_TYPE_VAR.
25504
25505 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
25506
25507         * class.h class.c (mono_class_needs_cctor_run): Moved this method
25508         here from the JIT.
25509
25510         * assembly.h assembly.c: Moved the AOT loading code into an assembly
25511         load hook.
25512
25513 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
25514
25515         * reflection.h reflection.c class.h class.c: Delete duplicate 
25516         definition of mono_type_get_name () from reflection.c and export the
25517         one in class.c.
25518
25519         * class.c: Class loading fixes from Bernie Solomon 
25520         (bernard@ugsolutions.com).
25521
25522         * reflection.c: Endianness fixes from Bernie Solomon 
25523         (bernard@ugsolutions.com).
25524         
25525 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
25526
25527         * assembly.h assembly.c: Define a file format version for AOT
25528         libraries.
25529         
25530         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
25531
25532         * appdomain.h (MonoJitInfo): New field to determine whenever the
25533         code is domain neutral.
25534         
25535 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
25536
25537         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
25538
25539 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
25540
25541         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
25542         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
25543         Avoid caching the result since strings must be domain specific. Fixes
25544         #48050.
25545
25546 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
25547
25548         * marshal.c (mono_marshal_init): Make this callable multiple times
25549         since it is hard to find a correct place to call it.
25550
25551         * object.c (mono_runtime_class_init): Execute static constructors in
25552         the correct appdomain.
25553
25554         * image.c (build_guid_table): Handle the case when multiple images have
25555         the same GUID.
25556
25557 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25558
25559         * icall.c: added a couple of icalls for System.Web.
25560
25561 2003-08-28  Martin Baulig  <martin@ximian.com>
25562
25563         * icall.c (ves_icall_Type_BindGenericParameters): Use
25564         `klass->generic_inst' instead of `&klass->byval_arg' in the
25565         mono_type_get_object() call.  The returned type must be
25566         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
25567
25568 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
25569
25570         * NOTES: New file.
25571
25572         * object.c (mono_class_proxy_vtable): Make it thread safe.
25573
25574         * pedump.c: Fix warning.
25575
25576         * object.c appdomain.h: Get rid of metadata_section. 
25577         It is no longer needed and it was causing deadlocks with domain->lock.
25578
25579         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
25580
25581 2003-08-26  Martin Baulig  <martin@ximian.com>
25582
25583         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
25584
25585 2003-08-26  Martin Baulig  <martin@ximian.com>
25586
25587         * pedump.c (main): Call mono_metadata_init(),
25588         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
25589         and mono_loader_init().
25590
25591 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
25592
25593         * loader.h: Add missing include to fix build.
25594
25595         * image.h: mono_image_load_references is no more.
25596
25597         * assembly.c: Reworked assembly loading to make it really thread safe.
25598         After these changes, the assembly returned by mono_assembly_open is
25599         fully initialized, i.e. all its references assemblies are loaded.
25600
25601         * assembly.c (mono_image_load_references): Renamed to 
25602         mono_assembly_load_references, and made private, since clients no
25603         longer need to call it.
25604
25605         * class.c: Removed calls to mono_assembly_load_references, since it was
25606         a source of deadlocks.
25607
25608         * loader.h loader.c class.h class.c: Protect data structures using a 
25609         new lock, the loader lock.
25610
25611         * class.c (mono_class_setup_vtable): Create temporary hash tables and
25612         GPtrArrays only when needed.
25613
25614         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
25615         into empty structures by mcs. Fixes pinvoke7.cs.
25616         
25617         * domain.c (mono_init): Call a new initialization function.
25618
25619         * appdomain.c (mono_runtime_init): Call the new initializer function
25620         of the marshal module.
25621
25622         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
25623         inserted into empty structures by mcs. Fixes pinvoke7.cs.
25624
25625         * marshal.h marshal.c: Added locks around the wrapper caches to make
25626         this module thread safe.
25627
25628         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
25629         this argument. Fixes pinvoke1.exe.
25630
25631 2003-08-25  Lluis Sanchez <lluis@ximian.com>
25632
25633         * object.h: Added call_type field to MonoMethodMessage and the corresponding
25634         enumeration of values. Removed fields to store remote call output values in
25635         MonoAsyncResult. Not needed any more.
25636         * object.c: Initialize call_type and async_result fields in mono_message_init.
25637         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
25638         dispatching the message.
25639         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
25640         async call to finish. To do it use a message with EndInvoke call type.
25641
25642 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
25643
25644         * loader.h loader.c (mono_method_hash_marhal_info): New function which
25645         determines whenever a method has marshalling info.
25646
25647 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25648
25649         * assembly.c: fix the build on windows.
25650
25651 2003-08-22 Lluis Sanchez <lluis@ximian.com>
25652
25653         * object.cs: Fixed bug #47785.
25654
25655 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
25656
25657         * string-icalls.c (StringReplace): If their are no occurances of
25658         the old string found return a reference to the supplied
25659         string. This saves some memory and matches MS behavoir.
25660         
25661 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25662
25663         * socket-io.c: fixed compilation for systems that define AF_INET6
25664         and don't define SOL_IP/SOL_IPV6.
25665
25666 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
25667
25668         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
25669         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
25670
25671         * rawbuffer.c rawbuffer.h: Make this module thread safe.
25672
25673         * domain.c: Make this module thread safe.
25674
25675         * domain.c (mono_init): Call new initialization function.
25676
25677         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
25678         reference types too. Fixes #38812.
25679
25680         * image.c (mono_image_init): Fixed warnings.
25681
25682         * class.c (mono_class_from_typeref): Handle assembly load failure
25683         correctly.
25684
25685         * appdomain.c (add_assemblies_to_domain): Handle the case when
25686         the references of an assembly are not yet loaded.
25687
25688         * metadata.c image.c assembly.c: Moved initialization of global
25689         variables to a separate function called at startup since lazy 
25690         initialization of these variables is not thread safe.
25691         
25692         * image.c assembly.c: Made this module thread safe by adding locks in 
25693         the appropriate places.
25694
25695         * domain.c (mono_init): Call the new initialization functions of the
25696         three modules.
25697
25698 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
25699
25700         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
25701           make a direct call. It is proxy's work to make the call asynchronous.
25702           mono_delegate_end_invoke(): If the targe is a proxy, just collect
25703           the return values.
25704         * object.cs: mono_method_call_message_new(): read AsyncResult and
25705           state object from parameters list, if this info is requested.
25706         * object.h: Added fields to store remote call output values in
25707           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
25708
25709 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25710
25711         * object.h: add needed fields to MonoThread.
25712         * threads.c, threads.h: allow registering a function to cleanup data
25713         allocated per thread by the JIT.
25714
25715 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25716
25717         * loader.h: portability fix by Bernie Solomon
25718         * <bernard@ugsolutions.com>.
25719
25720 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
25721
25722         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
25723         return a MonoArray. This simplifies the code and also ensures that
25724         the cache allways contains an object reference as a value.
25725
25726         * icall.c (ves_icall_get_parameter_info): Simplified using the new
25727         function.
25728
25729 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25730
25731         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
25732         fixes a problem with byte ordering when getting the address family for
25733         a socket.
25734
25735 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
25736
25737         * .cvsignore: Added monosn.
25738
25739         * reflection.h reflection.c loader.c: Added support for parameter
25740         marshalling to dynamically created types. Fixes #47295.
25741
25742 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25743
25744         * rand.c: remove useless warnings.
25745
25746 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25747
25748         * class.c: implemented ldtoken for methods and fieldrefs.
25749
25750 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25751
25752         * threadpool.c: when mono_async_invoke was called, no one took care of
25753         monitoring the queue. So if the method invoked took some time and we
25754         got new async invoke requests after 500 ms (the thread created waited
25755         that long in WaitForSingleObject), the new async invoke was not called
25756         until the previous one finished.
25757
25758         This is fixed now. Thanks to Totte for helping with it.
25759
25760 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25761
25762         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
25763
25764 2003-08-11  Martin Baulig  <martin@ximian.com>
25765
25766         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
25767
25768 2003-08-06  Martin Baulig  <martin@ximian.com>
25769
25770         * mono-debug-debugger.c: Added support for static fields,
25771         properties and methods.
25772
25773 2003-08-06  Martin Baulig  <martin@ximian.com>
25774
25775         * mono-debug-debugger.c: Don't store the MonoString's vtable to
25776         make this work for applications with multiple application domains.
25777
25778 2003-08-04  Martin Baulig  <martin@ximian.com>
25779
25780         * mono-debug-debugger.c: Completely reworked the type support; the
25781         most important thing is that we're now just using one single
25782         `MonoType' instance per type.
25783
25784 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
25785
25786         * mono-endian.h, mono-endian.c, icall.c: Added icall
25787         ves_icall_System_Double_AssertEndianity to assert double word endianity
25788         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
25789
25790 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25791
25792         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
25793         support, icalls and fixes.
25794
25795 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
25796
25797         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
25798         classes that are a punctuation character in .NET is not the same a
25799         g_unichar_ispunct.
25800
25801 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25802
25803         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
25804
25805 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
25806
25807         * icall.c: Add new MemCopy internalcall.
25808         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
25809         Simplified code; It is not necessary to handle all the cases here,
25810         as the C# code takes care of it.  Only handle the case of the name
25811         resource embedded into the assembly.
25812
25813         Changed signature to return the data pointer and the size of the
25814         data. 
25815
25816 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
25817
25818         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
25819         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
25820
25821 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25822
25823         * socket-io.c: ignore EINTR error in select.
25824
25825 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
25826
25827         * class.h, class.c: removed unused subclasses field in MonoClass.
25828
25829 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
25830
25831         * icall.c: improve fix of get_base_definition(). If the parent class
25832           doesn't have the mehod, look at the parent of the parent.
25833         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
25834           to check if a parameter is an in or out parameter
25835           (PARAM_ATTRIBUTE_IN is not set by default).
25836           mono_method_return_message_restore(): Use mono_class_value_size to
25837           get the size of a value type. mono_type_stack_size (parameterType)
25838           does not return the correct value if parameterType is byRef.
25839           mono_load_remote_field(), mono_load_remote_field_new(),
25840           mono_store_remote_field(), mono_store_remote_field_new():
25841           raise exception if the remote call returns an exception.
25842
25843 2003-07-28  Martin Baulig  <martin@ximian.com>
25844
25845         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
25846         method.  This is a wrapper around mono_runtime_invoke() which
25847         boxes the instance object if neccessary.
25848
25849 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25850
25851         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
25852         metadata.h, row-indexes.h, verify.c: first cut of generics support.
25853
25854 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25855
25856         * icall.c: disable mcs bug workaround.
25857
25858 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25859
25860         * object.c (mono_runtime_class_init): Take the metadata_section
25861         mutex before obtaining the domain mutex.
25862
25863         * appdomain.h: Added definition of metadata_section mutex here. 
25864
25865         * object.c: define metadata_mutex here.
25866
25867 2003-07-24  Ravi Pratap  <ravi@ximian.com>
25868
25869         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
25870         fixed.
25871
25872 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
25873
25874         * reflection.c: Fix bug #46669
25875
25876 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25877
25878         * exception.c:
25879         * exception.h:
25880         * icall.c:
25881         * object.h: fill in the type name for TypeLoadException.
25882
25883 2003-07-23  Ravi Pratap  <ravi@ximian.com>
25884
25885         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
25886         relationship between TypeBuilders while compiling corlib) and bug
25887         45993 (Array types returned from the runtime while compiling
25888         corlib were from the loaded corlib).
25889
25890 2003-07-22  Martin Baulig  <martin@ximian.com>
25891
25892         * mono-debug-debugger.c: Reworked the type support a bit more;
25893         distinguish between types and classes.
25894
25895 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
25896
25897         * icall.c: add IsArrayImpl icall.
25898
25899 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
25900
25901         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
25902         initializing real_size only once. Also fix bug #46602.
25903
25904 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
25905
25906         * object.c: Renamed mono_metadata_section to metadata_section.
25907
25908 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
25909
25910         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
25911           empty array if the type is an array. Fixed.
25912           ves_icall_MonoMethod_get_base_definition: if the base method
25913           is abstract, get the MethodInfo from the list of methods of
25914           the class.
25915         * reflection.c: ParameterInfo.PositionImpl should be zero-based
25916           and it was 1-based. Fixed in mono_param_get_objects.
25917
25918 2003-07-20  Martin Baulig  <martin@ximian.com>
25919
25920         * mono-debug.h: Set version number to 31.
25921         (mono_debug_init): Added `MonoDomain *' argument.
25922
25923         * mono-debug-debugger.c: Reworked the type support; explicitly
25924         tell the debugger about builtin types; pass the `klass' address to
25925         the debugger.
25926
25927 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
25928
25929         * image.c: Allow new metadata tables to be loaded without a
25930         warning. Also update the warning message to give the new constant value.
25931                 
25932 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25933
25934         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
25935         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
25936         array type representation changes.
25937
25938 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25939
25940         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
25941         on Environment.Exit () call.
25942
25943 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25944
25945         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
25946         requires a matching corlib.
25947
25948 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25949
25950         * Changelog: My editor decided to add a CR to each line. Sorry about that.
25951           Committed again without the CRs.
25952         
25953 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
25954
25955         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
25956           getting it from the "this" socket instance. Did not work
25957           if the socket is a subclass of Socket.
25958           Also fixed bug #35371.
25959
25960 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25961
25962         * metadata.c: fixed size for TypedByRef.
25963         * loader.c: when searching for a method, consider the vararg amrker.
25964         * unicode.c, decimal.c: constify some arrays.
25965
25966 2003-07-15  Dick Porter  <dick@ximian.com>
25967
25968         * socket-io.c: Fixed compilation for gcc < 3.2.
25969
25970         Fixed compilation for machines that don't have AF_INET6 (thanks to
25971         Bernie Solomon <bernard@ugsolutions.com> for that part.)
25972
25973         Fixed compile warnings.
25974         
25975         Fixed formatting and line endings.
25976
25977 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
25978
25979         * socket-io.h:
25980         * socket-io.c: Added IPv6 support.
25981
25982 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
25983
25984         * class.c (mono_class_is_assignable_from): New function to implement
25985         the is_assignable_from logic. Used by mono_object_isinst, 
25986         Type::IsAssignableFrom () and the interpreter.
25987
25988         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
25989         Object, even interfaces.
25990         
25991         * object.c (mono_object_isinst): Implement in terms of 
25992         is_assignable_from.
25993
25994         * icall.c (ves_icall_type_is_assignable_from): New icall.
25995
25996 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
25997
25998         * domain.c (foreach_domain): fix compiler warning.
25999
26000 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
26001
26002         * image.c (load_metadata_ptrs): use g_strndup because strndup is
26003         not available on all plattforms
26004
26005 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
26006
26007         * image.h image.c: Store the metadata version string in MonoImage.
26008         * icall.c: New icall to retrieve the image version.
26009         * reflection.c (create_dynamic_image): Fill in the image version field
26010         * reflection.c (build_compressed_metadata): Use the image version
26011         from the image structure.
26012
26013 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26014
26015         * appdomain.c: modified comment.
26016         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
26017         That will be its last iteration when mono_gc_cleanup is called from
26018         mono_runtime_cleanup and before the domain is unloaded.
26019
26020         Fixes bug #45962.
26021
26022 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
26023
26024         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
26025         attributes.
26026
26027 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26028
26029         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
26030         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
26031         Bernie Solomon <bernard@ugsolutions.com>.
26032
26033 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26034
26035         * object.c, object.h: provide mono_object_new_fast() for faster
26036         allocation in some special cases.
26037
26038 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
26039
26040         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
26041         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
26042
26043 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
26044
26045         * threadpool.c: fix leaks.
26046
26047 2003-07-01  Dick Porter  <dick@ximian.com>
26048
26049         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
26050         using MonoGHashTables.  Fixes threadpool bug posted to list.
26051
26052 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
26053
26054         * image.h, image.c: added support to load an assembly from a byte array.
26055         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
26056         assembly bundle support.
26057
26058 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
26059
26060         * threadpool.c (mono_thread_pool_add): keep a reference to the
26061         AsyncResult to prevent GC
26062
26063 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26064
26065         * class.c: leak fix.
26066
26067 2003-06-25  Dick Porter  <dick@ximian.com>
26068
26069         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
26070         for the async object, the WaitHandle object will close the handle.
26071         Fixes bug 45321.
26072
26073 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26074
26075         * class.c: in mono_array_class_get (), lookup from the hash with the
26076         same type we insert: this works around a bug in
26077         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
26078         lluis. The real fix will have to wait for after the release.
26079
26080 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26081
26082         * icall.c: fix memory leak when getting type members.
26083
26084 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26085
26086         * reflection.c: added more pubtoken special cases.
26087
26088 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
26089
26090         * class.c: handle field offset correctly when class size
26091         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
26092
26093 2003-06-20  Martin Baulig  <martin@ximian.com>
26094
26095         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
26096         *image' field.
26097
26098 2003-06-20  Martin Baulig  <martin@ximian.com>
26099
26100         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
26101
26102 2003-06-20  Martin Baulig  <martin@ximian.com>
26103
26104         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
26105         just distinguish between variables in registers and variables at
26106         an offset relative to a register.
26107
26108 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26109
26110         * icall.c: #ifdef out latest changes until mcs is fixed.
26111
26112 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26113
26114         * icall.c: return members in metadata order.
26115
26116 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
26117
26118         * icall.c: avoid infinite loop in GetTimeZoneData.
26119
26120 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
26121
26122         * icall.c: added Marshal.Prelink/All icalls.
26123
26124 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
26125
26126         * object.c, object.h: fix warnings and do some overflow checking
26127         when creating arrays.
26128
26129 2003-06-17  Dick Porter  <dick@ximian.com>
26130
26131         * file-io.h:
26132         * file-io.c: File attributes need to be tweaked slightly when
26133         passed from the managed to the w32 world.
26134
26135 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26136         * profiler.h profiler-private.h profiler.c: Rework last patch
26137         based on suggestion by Paolo.
26138         
26139 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
26140
26141         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
26142         instruction level coverage data collection.
26143         * profiler.h profiler.c (: Added new callback function which can be
26144         used by the profiler to limit which functions should have coverage
26145         instrumentation.
26146         * profiler.c (mono_profiler_load): Call g_module_build_path to
26147         generate the file name of the profiler library.
26148
26149 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
26150
26151         * profiler.c, profiler.h, profiler-private.h: added basic block 
26152         coverage profiling API.
26153
26154 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
26155
26156         * reflection.c (mono_reflection_create_runtime_class): Add support
26157         for events in dynamically generated code.
26158
26159         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
26160         not allocated.
26161
26162 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
26163
26164         * icall.c: when getting timezone info, return reasonable values if we
26165         can't get the actual data.
26166
26167 2003-06-14  Dick Porter  <dick@ximian.com>
26168
26169         * threads.c (start_wrapper): Remove the reference to the thread
26170         object in the TLS data, so the thread object can be finalized.
26171         This won't be reached if the thread threw an uncaught exception,
26172         so those thread handles will stay referenced :-( (This is due to
26173         missing support for scanning thread-specific data in the Boehm GC
26174         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
26175
26176 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
26177
26178         * reflection.c: ensure streams and tables are first allocated with
26179         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
26180
26181 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
26182
26183         * icall.c: fixed GetElementType for byrefs (bug# 44792).
26184
26185 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
26186
26187         * reflection.c (mono_reflection_create_runtime_class): Add support for
26188         properties to dynamically created classes.
26189         * reflection.c: Fix a few places where non-MonoObjects were inserted
26190         into the tokens hashtable.
26191
26192 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26193
26194         * object.c: some support to handle out of memory exceptions.
26195
26196 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
26197
26198         * marshal.c (mono_marshal_get_native_wrapper): support reference
26199         return types
26200
26201 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26202
26203         * object.h, object.c: more portability stuff from Bernie Solomon.
26204         Unexport mono_object_allocate(). Added mono_object_unbox ().
26205         Set exitcode when an unhandled exception is thrown.
26206
26207 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
26208
26209         * marshal.c (mono_marshal_get_native_wrapper): use custom
26210         marshaler for return types.
26211
26212 2003-06-10  Dick Porter  <dick@ximian.com>
26213
26214         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
26215         ip_mreq is available
26216
26217 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
26218
26219         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
26220         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
26221         by Bernie Solomon <bernard@ugsolutions.com>.
26222
26223 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
26224
26225         * gc.c (mono_gc_init): Avoid error message on shutdown when
26226         GC_DONT_GC=1 is used.
26227
26228         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
26229         New icall to return the GUID of a module.
26230
26231 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
26232
26233         * class.c: ensure instance size always includes the parent's size
26234         even whem class size is set explicitly (fixes bug#44294).
26235
26236 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26237
26238         * profiler.h, profiler.c: made the simple profiler thread-safe,
26239         get more accurate timing info. Allow the loading of an
26240         externally-developed profiler module.
26241
26242 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
26243
26244         * marshal.c (mono_marshal_get_native_wrapper): improved
26245         class/byref arguments.
26246         (mono_marshal_get_native_wrapper): better string marshaling support.
26247
26248 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
26249
26250         * class.c: ensure .pack and .size are handled correctly and
26251         simplified layout of static fields.
26252
26253 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
26254
26255         * appdomain.c
26256         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
26257
26258         * loader.c (mono_lookup_pinvoke_call): look for modules in the
26259         current directory (fix bug 44008)
26260
26261 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
26262
26263         * marshal.c (mono_marshal_get_native_wrapper): started support for
26264         custom marshalers.
26265         (mono_delegate_to_ftnptr): consider marshalling specifications
26266
26267 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
26268
26269         * reflection.c, reflection.h: emit custom marshal info.
26270
26271 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26272
26273         * object.c: free the GError.
26274         * icall.c: added CloseEvent_internal.
26275         * threads.[ch]:
26276         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
26277         call.
26278
26279 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
26280
26281         * loader.c (mono_method_get_signature): Add support for dynamic
26282         assemblies.
26283
26284 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
26285
26286         * reflection.c: fixed bug #43905.
26287
26288 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
26289
26290         * class.c, domain.c, icall.c, metadata.h, object.h: support for
26291         handling TypedReference and ArgIterator.
26292         * loader.c, loader.h: added function to get signature at call site.
26293
26294 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26295
26296         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
26297         data readonly. Buglets and warning fixes. Some MethodSpec support.
26298
26299 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
26300
26301         * class.h, class.c, object.c: remove relative numbering support.
26302
26303 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
26304
26305         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
26306         free the string, until we get a chance to fix Gtk#
26307
26308 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26309
26310         * marshal.c: revert last patch.
26311
26312 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
26313
26314         * icall.c: updates for new mono_class_vtable() not calling
26315         the type constructor anymore.
26316
26317 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26318
26319         * object.h, object.c: separate vtable creation from type
26320         initialization. Make running the .cctor thread safe.
26321
26322 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
26323
26324         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
26325
26326 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
26327
26328         * loader.c (mono_get_method): consider calling convention
26329
26330 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
26331
26332         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
26333         to return the invisible global type for a module.
26334
26335         * reflection.c (mono_image_build_metadata): Emit global fields too.
26336
26337 2003-05-20  Peter Williams  <peterw@ximian.com>
26338
26339         * loader.c (mono_lookup_internal_call): Add a few newlines.
26340
26341 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
26342
26343         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
26344         literal strings.
26345
26346         * appdomain.c (set_domain_search_path): Recalculate search path when
26347         AppDomainSetup.PrivateBinPath changes.
26348
26349         * object.c (mono_class_compute_gc_descriptor): It turns out some
26350         parts of the class libs (like System.Thread) holds pointers to
26351         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
26352         to treat native int a pointer type here.
26353         
26354 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
26355
26356         * appdomain.h, domain.c: add hashtable for jump target resolution.
26357
26358 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
26359
26360         * reflection.h reflection.c icall.c: Added new icalls 
26361         GetManifestResourceInfoInternal, GetModulesInternal and support
26362         infrastructure.
26363
26364 2003-05-16  Dick Porter  <dick@ximian.com>
26365
26366         * icall.c:
26367         * file-io.h:
26368         * file-io.c: Implement System.IO.MonoIO::GetTempPath
26369
26370 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
26371
26372         * object.c: mono_store_remote_field: little fix to previous patch.
26373
26374 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
26375
26376         * class.c: add constructors to array classes.
26377         * icall.c: special case array construction for InternalInvoke (),
26378
26379 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
26380
26381         * class.h class.c reflection.c object.c: Added support for field
26382         defaults in dynamically generated classes.
26383
26384 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
26385
26386         * reflection.c: properly encode charset for ddlimport.
26387
26388 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
26389
26390         * threads.c: allow compiling without GC.
26391
26392 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
26393
26394         * appdomain.h, object.c, object.h, threads.c, threads.h: added
26395         handling of thread static data.
26396
26397 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
26398
26399         * reflection.h, reflection.c: added mono_custom_attrs_free ().
26400
26401 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
26402
26403         * class.c (mono_array_class_get): always set the serializable flags
26404         (mono_array_class_get): always set the SEALED attribute for array types
26405
26406 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
26407
26408         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
26409         attributes (fix for bug 42021).
26410
26411 2003-05-12  Dick Porter  <dick@ximian.com>
26412
26413         * gc.c: Don't run finalizers when the finalizer thread is
26414         finishing up, because the default domain has already been
26415         destroyed.
26416
26417 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
26418
26419         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
26420         value is null, we should throw an exception.   This is slightly
26421         different than the other conventions used for the constructor.
26422
26423 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26424
26425         * socket-io.c: fixed windows build.
26426
26427 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26428
26429         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
26430
26431 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
26432
26433         * object.c (mono_string_new_wrapper): Compatibility fix for MS
26434         compilers.
26435
26436 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
26437
26438         * class.c (mono_class_layout_fields): Add experimental GC aware
26439         auto layout facility. Requires class library changes to work correctly.
26440
26441         (mono_class_setup_vtable): Avoid overriding explicit interface
26442         method implementations. Fixes iface3.exe test.
26443
26444         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
26445         object reference.
26446         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
26447         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
26448
26449         * metadata.h: Add new type classification macro which determines
26450         whenever the type holds an object reference.
26451
26452 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
26453
26454         * marshal.c (mono_marshal_get_native_wrapper): cleanups
26455
26456 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
26457
26458         * gc.c (finalizer_thread): Work around a GC bug.
26459
26460 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
26461
26462         * marshal.c (emit_struct_conv): allow unions
26463
26464         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
26465
26466 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
26467
26468         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
26469
26470 2003-05-06  Martin Baulig  <martin@ximian.com>
26471
26472         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
26473
26474 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26475
26476         * socket-io.c:
26477         (Select_internal): allow NULLs, don't create arrays if not needed.
26478         Coupled with Socket.cs changes.
26479
26480         * threadpool.c:
26481         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
26482         register a finalizer for it that will close the semaphore handle. This
26483         fixes the leak and make Lupus' test run with > 4080 loops.
26484
26485 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
26486
26487         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
26488         Jerome Laban (bug #42287)
26489
26490 2003-05-02  Martin Baulig  <martin@ximian.com>
26491
26492         * debug-mono-symfile.h
26493         (MonoSymbolFile): Moved declaration into mono-debug.h.
26494         (MonoDebugMethodJitInfo): Likewise.
26495         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
26496         argument.
26497         (_mono_debug_address_from_il_offset): Take a
26498         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
26499
26500         * mono-debug.h
26501         (MonoDebugDomainData): New struct.
26502         (mono_debug_get_domain_data): New function.
26503         (mono_debug_add_method): Take an additional `MonoDomain *'
26504         argument.
26505         (mono_debug_source_location_from_address): Likewise.
26506         (mono_debug_il_offset_from_address): Likewise.
26507         (mono_debug_address_from_il_offset): Likewise.
26508
26509 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
26510
26511         * reflection.c: one more check for null type in custom attrs.
26512
26513 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26514
26515         * reflection.c: avoid warning (comparison is always false due to limited
26516         range of data type).
26517
26518 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26519
26520         * icall.c: throw an exception in Type.GetField if the argument 'name'
26521         is NULL.
26522
26523 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
26524
26525         * reflection.c: fixed handling of enums in named arguments to custom
26526         attributes (bug #42123).
26527
26528 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
26529
26530         * reflection.c: use the right array element type and handle
26531         a null for a Type argument, too.
26532
26533 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
26534
26535         * reflection.c: handle arrays as arguments to custom attributes.
26536
26537 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
26538
26539         * reflection.c: handle a string value in a custom attr
26540         ctor that takes an object.
26541
26542 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
26543
26544         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
26545         (fix bug #42063)
26546
26547 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
26548
26549         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
26550
26551 2003-04-27  Martin Baulig  <martin@ximian.com>
26552
26553         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
26554         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
26555         MONO_DEBUGGER_EVENT_BREAKPOINT.
26556         (mono_breakpoint_trampoline_code): Removed.
26557         (mono_debugger_event_handler): The last argument is now a
26558         `guint32'.
26559         (mono_debugger_insert_breakpoint_full): Removed the
26560         `use_trampoline' argument.
26561         (mono_debugger_method_has_breakpoint): Likewise.
26562         (mono_debugger_trampoline_breakpoint_callback): Renamed to
26563         mono_debugger_breakpoint_callback(); take the method and
26564         breakpoint number as arguments.
26565
26566 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
26567
26568         * metadata.c: fix off by one when loading parameters attributes.
26569
26570 2003-04-24  Martin Baulig  <martin@ximian.com>
26571
26572         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
26573
26574 2003-04-24  Martin Baulig  <martin@ximian.com>
26575
26576         * mono-debug-debugger.c: Moved all code which interacts with the
26577         Mono Debugger here.
26578
26579         * debug-mono-symfile.c: This code now just deals with the symbol
26580         file itself, the debugger code is now in mono-debug-debugger.c.
26581
26582 2003-04-23  Martin Baulig  <martin@ximian.com>
26583
26584         * mono-debug.c (mono_debug_source_location_from_il_offset):
26585         New method; like mono_debug_source_location_from_address(), but
26586         takes an IL offset instead of a machine address.
26587
26588 2003-04-23  Martin Baulig  <martin@ximian.com>
26589
26590         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
26591         `line' field; this is now computed by the debugger.
26592
26593 2003-04-23  Martin Baulig  <martin@ximian.com>
26594
26595         * mono-debug.[ch]: New files.  This is the new debugging interface.
26596
26597         * mono-debug-debugger.[ch]: New files.  Moved all code which
26598         interacts with the Mono Debugger here.
26599
26600 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
26601
26602         * domain.c (mono_init): initialize mono_defaults.monitor_class
26603
26604 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
26605
26606         * reflection.c (method_encode_code): Add a spicy exception to help
26607         future compiler authors.
26608
26609 2003-04-21  Martin Baulig  <martin@ximian.com>
26610
26611         * icall.c
26612         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
26613         Make this work with relative pathnames; g_filename_to_uri() needs
26614         an absolute filename.
26615
26616 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
26617
26618         * icall.c: Track name changes in Object and ValueType.
26619
26620 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
26621
26622         * metadata.c (mono_type_stack_size): size should be a multiple of
26623         sizeof (gpointer)
26624
26625 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26626
26627         * gc.c:
26628         (internal_domain_finalize): moved into mono_domain_finalize. No need
26629         to create another thread because the finalizers will be run in the
26630         finalizer thread.
26631         
26632         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
26633         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
26634         to be run (MS does this too).
26635
26636 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
26637
26638         * object.c (mono_class_compute_gc_descriptor): Update comment.
26639
26640         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
26641
26642         * image.h: Add synchronized wrapper cache.
26643
26644         * image.c (do_mono_image_open): Initialize cache.
26645
26646         * reflection.c (create_dynamic_mono_image): Initialize cache.
26647
26648 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26649
26650         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
26651         ves_icall_System_Buffer_ByteLengthInternal.
26652
26653 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
26654
26655         * reflection.c: setup klass->nested_in earlier. Allow
26656         a dash in the assembly name.
26657
26658 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
26659
26660         * metadata.c (mono_type_to_unmanaged): dont access
26661         type->data.klass for MONO_TYPE_OBJECT
26662         (mono_type_to_unmanaged): consider System.Delegate class
26663
26664 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
26665
26666         * class.c: just setup supertypes in the proper place instead of
26667         initializing the full element class for arrays.
26668
26669 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
26670
26671         * class.c: ensure the element class of arrays is initialized.
26672         Setup the supertype info for array classes, too.
26673
26674 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
26675
26676         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
26677
26678 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26679
26680         * Makefile.am: re-added -m option when running cygpath. This way,
26681         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
26682         separator.
26683         * mono-config.c: same codepath for locating mono config file for WIN32
26684         and the rest.
26685         * assembly.c: if mono_assembly_setrootdir is called, don't override
26686         the value set.
26687
26688 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26689
26690         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
26691         MONO_ASSEMBLIES variable.
26692
26693 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
26694
26695         * icall.c: added Assembly::GetNamespaces() icall.
26696
26697 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26698
26699         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
26700
26701 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
26702
26703         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
26704         * object.c: fixed bug in the construction of vtable for proxies
26705
26706 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
26707
26708         * object.c (mono_array_new): Mark mono_array_new as an icall.
26709
26710 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26711
26712         * class.c: fixed test for public method when overriding interfaces.
26713         Closes bug #40970.
26714
26715 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
26716
26717         * appdomain.h, domain.c: added mono_domain_foreach() to
26718         be able to access the currently loaded appdomains.
26719         * object.c: make string interning work across sppdomains.
26720         Mark some functions for use as icalls.
26721
26722 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
26723
26724         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
26725
26726         * reflection.h reflection.c: Allocate long living data using 
26727         GC_MALLOC_ATOMIC so the collector does not need to scan it.
26728
26729         * reflection.c: Double the allocation size in streams instead of
26730         increasing it, to prevent unneccesary copying on large assemblies.
26731         
26732         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
26733         creation if the assembly does not have the Run flag set.
26734
26735 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
26736
26737         * class.h: avoid the C++ keywords in header files (Jerome Laban
26738         spotted and fixed this).
26739
26740 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26741
26742         * object.c:
26743         (mono_unhandled_exception): fill in the arguments for the
26744         UnhandledException event. Only trigger that event for the default
26745         domain (as MS does).
26746
26747 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
26748
26749         * object.c: Improve typed allocation stuff based on suggestions from
26750         Paolo. Also turn it on if the GC library supports it.
26751
26752 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26753
26754         * object.c object.h class.h: Added experimental typed allocation
26755         facility using the interfaces in gc_gcj.h.
26756
26757         * os/gc_wrapper.h: Added new include files.
26758         
26759 2003-04-03  Martin Baulig  <martin@ximian.com>
26760
26761         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
26762         which is not yet enabled by default.
26763
26764         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
26765         functions.
26766         (mono_gc_lock, mono_gc_unlock): New static functions.
26767
26768         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
26769         functions; stop/start the world for the garbage collector.  This
26770         is using the windows API; we need to complete the SuspendThread()/
26771         ResumeThread() implementation in the io-layer to make this work on Unix.
26772         (mono_gc_push_all_stacks): New public function; tells the garbage
26773         collector about the stack pointers from all managed threads.
26774
26775 2003-04-03  Martin Baulig  <martin@ximian.com>
26776
26777         * object.h (MonoThread): Added `gpointer stack_ptr'.
26778
26779         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
26780
26781 2003-04-03  Martin Baulig  <martin@ximian.com>
26782
26783         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
26784
26785 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
26786
26787         * reflection.c (typebuilder_setup_fields): Initialize field.first and
26788         field.last.
26789
26790 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
26791
26792         * loader.c (mono_lookup_internal_call): Report the corlib that is
26793         out of sync.
26794
26795 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
26796
26797         * icall.c (ves_icall_type_GetTypeCode): fixed check for
26798         System.DBNull (it's class not valuetype).
26799
26800 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
26801
26802         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
26803         if the array method was already assigned a token (fixes bug#40646).
26804
26805 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
26806
26807         * reflection.c (mono_reflection_get_type): Attempt type resolve even
26808         if no assembly is given.
26809
26810 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
26811
26812         * metadata.h: Added the new tables.
26813
26814         * row-indexes.h: Added definitions for new tables.
26815
26816         * metadata.c: Add schemas for new tables, and add support for
26817         computing the sizes of them.
26818
26819         * class.c: Update for handling the new type cases.
26820
26821 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
26822
26823         * metadata.h (MONO_TYPE_IS_VOID): new macro
26824
26825 2003-03-31  Martin Baulig  <martin@ximian.com>
26826
26827         * threads.h (MonoThreadCallbacks): Added `thread_created'.
26828
26829         * threads.c (mono_thread_new_init): Call `thread_created' in the
26830         mono_thread_callbacks.
26831
26832 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
26833
26834         * loader.h: added marshalbyrefobject_class to mono_defaults
26835         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
26836         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
26837           generation of output parameters.
26838           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
26839         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
26840           contextbound and the target object belongs to the context of the caller.
26841         * object.h: added context and unwrapped_server variables in MonoRealProxy.
26842         * object.c: Implemented support for interfaces and abstract classes
26843           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
26844           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
26845
26846 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
26847
26848         * class.h class.c (mono_class_is_subclass_of): New function.
26849         
26850         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
26851         routines for most common case (calls from ArrayList::ToArray).
26852
26853         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
26854         routine so programs which call Environment::Exit() can be profiled.
26855
26856         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
26857         Added MONO_ARCH_SAVE_REGS.
26858
26859         * icall.c (ves_icall_type_is_subtype_of): Use new function.
26860
26861 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
26862
26863         * blob.h: Add a couple of new MonoType types definitions.
26864
26865         * tabledefs.h: Add a couple of new call convs.
26866
26867 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
26868
26869         * reflection.h (MonoReflectionDynamicAssembly): track changes in
26870         the layout of the class.
26871
26872         * reflection.c (alloc_table): double the size on overflow to avoid
26873         unnecessary copying.
26874
26875         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
26876         avoid filling out metadata tables and blobs. Also set mb->ilgen to
26877         null so it can be garbage collected.
26878         
26879 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
26880
26881         * reflection.c (mono_reflection_get_type): Return the resolved type
26882         only if it is in the assembly we searched.
26883
26884         * reflection.c (ensure_runtime_vtable): Initialize method slots.
26885
26886         * class.c (mono_class_setup_vtable): Set the slot of the overriding
26887         method.
26888
26889 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26890
26891         * appdomain.c:
26892         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
26893         the right one is 'file:///blah', but MS allows it.
26894         * assembly.c:
26895         (mono_assembly_open): allow 'file://blah'
26896
26897         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
26898
26899 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
26900
26901         * socket-io.c: fixes bug #40310.
26902
26903 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
26904
26905         * reflection.c (mono_reflection_parse_type): handle deeply nested
26906         types correctly.
26907
26908         * reflection.c (mono_image_create_token): Use unique token values
26909         since they will be put into a hash table.
26910
26911         * class.c (mono_class_setup_vtable): If a method occurs in more than
26912         one place in the vtable, and it gets overriden, then change the
26913         other occurances too.
26914
26915         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
26916         object as return type.
26917
26918 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
26919
26920         * icall.c: Deleted "ToString" implementation for double and float
26921         because they are full implemented in managed code.
26922
26923 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
26924
26925         * reflection.c, reflection.h: implemented and exported functions
26926         to retrieve info about custom attributes.
26927
26928 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26929
26930         * appdomain.c: moved Uri handling to assembly.c
26931         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
26932         work when using a file Uri in *nix and windows.
26933
26934         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
26935         GetReferencedAssemblies.
26936
26937 2003-03-18  Dick Porter  <dick@ximian.com>
26938
26939         * icall.c: Rename a couple of internal calls
26940
26941         * threads.c: Set the thread state to Stopped when a thread exits.
26942         Fixes bug 39377.
26943
26944 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
26945
26946         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
26947         New icall.
26948
26949         * object.c (mono_class_vtable): fix warning.
26950
26951 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
26952
26953         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
26954
26955         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
26956         memory.
26957         (method_encode_clauses): Create exception info structures in the right
26958         order.
26959         (mono_reflection_setup_internal_class): Initialize supertypes field.
26960
26961         * class.c object.c: Handle interfaces which implement other interfaces 
26962         correctly.
26963
26964         * class.h class.c: Move the supertypes array initialization code into 
26965         a separate function so it can be used for dynamic types too. Also call
26966         it earlier, in mono_class_init(), since it can be used before the
26967         type is initialized.
26968
26969 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26970
26971         * Makefile.am:
26972         * assembly.c:
26973         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
26974
26975         * appdomain.c:
26976         * appdomain.h:
26977         * marshal.c:
26978         * object.c: remove warnings.
26979
26980 2003-03-13  Martin Baulig  <martin@ximian.com>
26981
26982         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
26983         (MonoDebugLexicalBlockEntry): New types.
26984
26985         * debug-mono-symfile.c
26986         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
26987
26988 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26989
26990         * process.c: ret can be any non-zero value accroding to MS doc.
26991
26992 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
26993
26994         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
26995         fixing a warning for a miss-used prototype, would have cause
26996         random memory corruption.
26997
26998 2003-03-07  Martin Baulig  <martin@ximian.com>
26999
27000         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
27001         getting really annoying ....
27002
27003 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
27004
27005         * reflection.c (fixup_method): added support for array methods.
27006
27007 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
27008
27009         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
27010         (pointed out by Michael Adams).
27011
27012 2003-03-04  Dick Porter  <dick@ximian.com>
27013
27014         * icall.c: Temporarily reverted the Double and Single ToString()
27015         change, because it broke nunit.
27016
27017 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
27018
27019         * object.h, threads.h: make include files compatible with C++
27020         (patch by Jerome Laban <jlaban@wanadoo.fr>).
27021
27022 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27023
27024         * icall.c: Erased ToString helper functions for Double and Single.
27025         Now, that implementations ar all in managed code (Double and Single
27026         Formatters).
27027
27028 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
27029
27030         * appdomain.c: Added method for initializing the default context of
27031         a domain. Added internal call for getting the default context.
27032         * appdomain.h: Added context variable in MonoDomain struct.
27033         * domain.c: mono_domain_set also sets the default context of the domain
27034         * icall.c: Mapped internal method InternalGetDefaultContext.
27035         * object.c: mono_object_get_virtual_method returns always a remoting
27036         wrapper if the object is a transparent proxy.
27037         mono_runtime_invoke_array: when creating an object by calling the
27038         constructor, if the created object is a proxy, then the constructor should
27039         be called using the a remoting wrapper.
27040
27041 2003-03-03  Dick Porter  <dick@ximian.com>
27042
27043         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
27044         variable so it compiles on solaris.  Problem spotted by
27045         Christopher Taylor <ct@cs.clemson.edu>
27046
27047 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27048
27049         * appdomain.c:
27050         (get_info_from_assembly_name): don't leak value.
27051
27052         * icall.c:
27053         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
27054         result.
27055
27056 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
27057
27058         * assembly.c: export mono_image_load_references ().
27059         * class.c: handle function pointers. mono_class_from_name() now
27060         supports nested type names directly.
27061
27062 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
27063
27064         * reflection.h reflection.c: Encode already created dynamic methods 
27065         and fields correctly as a DEF instead of a REF.
27066
27067         * reflection.c: Get rid of the force_ref argument to 
27068         mono_image_typedef_or_ref since it was wrong in the first place.
27069
27070         * string-icalls.c: add error checking to string constructors according
27071         to the MSDN docs.
27072
27073         * reflection.c: Emit types in the order their TypeBuilders were 
27074         created. Previously, a new table index was assigned to each type before
27075         the tables were emitted. This was wrong because the signature blob
27076         might already refer to a type by its original table index.
27077
27078 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
27079
27080         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
27081         change.
27082         
27083 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27084
27085         * Makefile.am: make assemblies dir have \ instead of / on windows.
27086
27087 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
27088
27089         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
27090         iterate over the NESTEDCLASS table using a linear search since the
27091         table is not guaranteed to be sorted by the secondary key.
27092
27093         * class.c (mono_class_create_from_typedef): fixed up call to
27094         mono_metadata_nesting_typedef.
27095         
27096 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
27097
27098         * marshal.c (mono_string_to_byvalstr): clear the memory as
27099         suggested by Jerome Laban <jlaban@wanadoo.fr>
27100
27101 2003-02-26  Dick Porter  <dick@ximian.com>
27102
27103         * process.c: Cope with padding in .rsrc blocks
27104
27105 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27106
27107         * metadata.h: reverted the filter_len change, it breaks reflection
27108         
27109 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
27110
27111         * metadata.h: added a new field to store the filter_len
27112         
27113
27114 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
27115
27116         * reflection.c: handle custom attributes for types and members
27117         created with Reflection.Emit (bug#38422).
27118
27119 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
27120
27121         * reflection.c: define RTSpecialName automatically for constructors for
27122         compatibility with MS.NET.
27123
27124         * reflection.c (mono_reflection_create_runtime_class): initialize
27125         nested_in field of dynamically created classes.
27126
27127 2003-02-22  Martin Baulig  <martin@ximian.com>
27128
27129         * debug-mono-symfile.h: Incremented version number.
27130
27131 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27132
27133         * object.h icall.c process.c: fix warnings.
27134
27135 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
27136
27137         * appdomain.h appdomain.c:
27138         (mono_domain_try_type_resolve): split the 
27139         name_or_tb argument into a name and a tb argument.
27140         (mono_domain_has_type_resolve): new function to check whenever the
27141         application has registered a TypeResolve event handler.
27142         
27143         * icall.c reflection.h reflection.c: move the type resolve logic into
27144         mono_reflection_get_type () so it will be invoked when 
27145         Assembly::GetType () is called.
27146
27147         * reflection.c:
27148         (mono_reflection_get_type): renamed to get_type_internal.
27149         (mono_reflection_get_type): fixed type name generation so it works 
27150         for nested types too.
27151         (mono_reflection_get_type): call has_type_resolve () to avoid the 
27152         costly type name generation if there is no resolve event handler.
27153
27154 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27155
27156         * class.c, image.c: load exported types from file references.
27157
27158 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
27159
27160         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
27161           used to cache the managed methods used to create proxies and make 
27162           remote invocation of methods.
27163         * class.h: Added in MonoVTable a flag to indicate that a class needs 
27164           to be remotely created.
27165         * object.c: Modified the method mono_class_vtable(). It now initializes 
27166           the remote flag of the vtable. Modified mono_object_new_specific(), 
27167           so now it checks the remote flag.
27168         * icall.c: Added a couple of internal methods, one for enabling instance 
27169           creation interception for a type, and one for creating objects bypassing
27170           the remote check.
27171
27172 2003-02-18  Martin Baulig  <martin@ximian.com>
27173
27174         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
27175         New interncall to get a method's metadata token.
27176
27177         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
27178         New interncall for the debugger.
27179
27180 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
27181
27182         * class.c (mono_class_setup_vtable): allocate supertype array
27183
27184 2003-02-18  Martin Baulig  <martin@ximian.com>
27185
27186         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
27187
27188 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27189
27190         * reflection.c:
27191         (assembly_name_to_aname): jump over unknown properties (i've found
27192         something like: 'type, assembly, version=xxx, custom=null, public...',
27193         so now will ignore custom=null and still get the rest of the values).
27194
27195 2003-02-17  Dick Porter  <dick@ximian.com>
27196
27197         * threads.c: Have Thread.Start() wait for a semaphore to signal
27198         that the thread has set up all its local data.  This fixes bug
27199         34323, where Abort() raced the new thread's TLS data.
27200
27201         Also removes the handle_store() call from start_wrapper, because
27202         threads are now always created suspended and there is no longer a
27203         race between the parent and child threads to store the info.
27204
27205 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
27206
27207         * image.c: explain the #- heap issue in a message, hopefully
27208         avoiding FAQs on mono-list.
27209
27210 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27211
27212         * icall.c:
27213         (GetEntryAssembly): if the domain has not invoked
27214         AppDomain.ExecuteAssembly yet, return the assembly of the default
27215         AppDomain.
27216
27217 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
27218
27219         * class.c (mono_ldtoken): make it work in dynamic assemblies.
27220
27221 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
27222
27223         * metadata.c, reflection.c: simple speedup to type hash
27224         and equals code.
27225
27226 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
27227
27228         * image.c, image.h, class.c, assembly.c: move module loading
27229         to MonoImage. When loading metadata, consider alignemnet from
27230         the start of metadata, not from the metadata address in memory.
27231
27232 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
27233
27234         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
27235         AssemblyBuilder objects. Factored out custom attribute creation into
27236         a separate function.
27237         (create_custom_attr): new function to create custom attributes.
27238
27239 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
27240
27241         * Makefile.am: Got tired of typing the full pathname to pedump.
27242         Until there is another option, am installing this.
27243
27244 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
27245
27246         * class.c (class_compute_field_layout): always set field->parent 
27247         (mono_ldtoken): use mono_defaults.fieldhandle_class;
27248
27249 2003-02-11  Dick Porter  <dick@ximian.com>
27250
27251         * threads-types.h:
27252         * monitor.c: Rewrote Monitor, making lock much faster and
27253         Pulse/Wait work as specified.  Also uses much fewer handles, and only
27254         creates them as needed.
27255
27256         * exception.c: Added SynchronizationLockException
27257
27258         * threads.c: Deleted old Monitor implementation.  The new one is
27259         in a new file.
27260
27261 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
27262
27263         * class.c: handled TypedReference type code. Set the correct size for
27264         class data. Setup interface_offsets for interface classes, too.
27265
27266 2003-02-09  Martin Baulig  <martin@ximian.com>
27267
27268         * debug-mono-symfile.h: Reflect latest symbol writer changes.
27269
27270 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
27271
27272         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
27273         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
27274         * object.c: fixed mono_object_get_virtual_method () for interfaces.
27275         * verify.c: check for code that runs after the end of the method.
27276
27277 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
27278
27279         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
27280         "System.Math::Round2".
27281         * sysmath.h: Added Floor, Round and Round2 definitions.
27282         * sysmath.c: Modified certain functions that were not 100% compliant
27283         with MS.NET (math precision) and added the implementation of Floor,
27284         Round and Round2.
27285
27286 2003-02-07  Martin Baulig  <martin@ximian.com>
27287
27288         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
27289
27290 2003-02-07  Martin Baulig  <martin@ximian.com>
27291
27292         * debug-mono-symfile.c: Reflected latest symwriter changes.
27293         (mono_debug_create_mono_symbol_file): Removed.
27294         (mono_debug_open_mono_symbol_file): Take an argument which
27295         specifies whether to create a dynamic symbol file.
27296
27297 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
27298
27299         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
27300
27301 2003-02-05  Martin Baulig  <martin@ximian.com>
27302
27303         * reflection.c (mono_image_build_metadata): Make this public,
27304         protect it against being called multiple times, don't create
27305         resources and don't build the compressed metadata here.
27306         (mono_image_create_pefile): Do this here.
27307
27308         * icall.c
27309         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
27310
27311 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27312
27313         * socket-io.c: fixed bug #36322.
27314
27315 2003-02-06  Piers Haken <piersh@friskit.com>
27316
27317         * appdomain.[ch]:
27318         * class.h:
27319         * debug-mono-symfile.c:
27320         * icall.c:
27321         * loader.c:
27322         * mono-config.c:
27323         * monosn.c:
27324         * reflection.c:
27325         * socket-io.c: warning cleanups
27326
27327 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
27328
27329         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
27330         function. works like remoting invoke, but does a check for the Proxy first.
27331
27332 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
27333
27334         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
27335
27336 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
27337
27338         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
27339         array of pointers.
27340         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
27341         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
27342
27343         * object.c (mono_store_remote_field_new): used by the new jit
27344         instead of mono_store_remote_field
27345         (mono_load_remote_field_new): used by the new jit
27346         instead of mono_load_remote_field
27347
27348 2003-02-05  Patrik Torstensson
27349
27350         * appdomain.c: changed unload to take the domain id instead
27351         of domain
27352         
27353         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
27354
27355
27356 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27357
27358         * appdomain.c: don't look for assemblies in ApplicationBase if
27359         PrivateBinPathProbe is set.
27360
27361 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27362
27363         * object.c: make the first argument in main_args contain the absolute
27364         path to the assembly. Fixes bug #37511.
27365
27366 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27367
27368         * icall.c: get correct UTC offset for countries not using daylight
27369         time saving. Fixes bug #30030.
27370
27371 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27372
27373         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
27374         and 1 are the family).
27375
27376 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
27377
27378         * icall.c (ves_icall_InternalExecute): removed wrong assertion
27379
27380         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
27381
27382 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
27383
27384         * reflection.c: added support for SignatureHelper tokens, which is
27385         needed by the Calli opcode.
27386
27387         * reflection.h: track changes to SignatureHelper class.
27388
27389         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
27390
27391 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27392
27393         * appdomain.c: fixed loading assemblies from PrivateBinPath.
27394
27395 2003-02-03  Patrik Torstensson
27396         * appdomain.[c|h], domain.c : 
27397          - Added support for getting a domain via domain id
27398          - Support for setting and getting domain from System.AppDomain 
27399            (used in cross appdomain channel)
27400          - Added support for get/set for a MonoAppContext on a thread 
27401            (Context class in System.Runtime.Remoting.Contexts),
27402          - Removed hack in Get/SetData and ExecuteAssembly.
27403         
27404         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
27405         the managed world to get control when a proxy is created.
27406
27407         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
27408         
27409 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
27410
27411         * icall.c
27412         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
27413         Populate the codebase field as well.
27414
27415 2003-02-02  Martin Baulig  <martin@ximian.com>
27416
27417         * debug-mono-symfile.c
27418         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
27419         (mono_debug_symfile_add_method): Allow interncalls.
27420
27421 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27422
27423         * icall.c: throw parse exception if strtod fails or the string is empty.
27424
27425 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
27426
27427         * marshal.c: handle object type separately from defined
27428         class types.
27429
27430 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
27431
27432         * marshal.c: handle NATIVE_LPSTR for strings when it's
27433         explicitly specified.
27434
27435 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
27436
27437         * reflection.c, reflection.h, icall.c: setup the reflection
27438         handle cache for ModuleBuilders and AssemblyBuilders.
27439
27440 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
27441
27442         * reflection.c (reflection_methodbuilder_to_mono_method): set
27443         pinvoke flag
27444
27445 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27446
27447         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
27448
27449 2003-01-29  Dick Porter  <dick@ximian.com>
27450
27451         * threads.c: No need for the fake_thread kludge now that Thread
27452         doesn't run a class constructor
27453         
27454 2003-01-29  Dick Porter  <dick@ximian.com>
27455
27456         * threads.c: Use g_direct_hash instead of the rather bogus
27457         g_int_hash
27458
27459 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
27460
27461         * marshal.c (mono_marshal_get_native_wrapper): add check for null
27462         (fix pinvoke12.exe)
27463         (mono_marshal_get_struct_to_ptr): generate valid IL code
27464         (mono_marshal_get_ptr_to_struct): generate valid IL code
27465         (*): correctly set sig->pinvoke, we need to memdup the signature
27466         to do that
27467
27468 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
27469
27470         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
27471         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
27472
27473 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27474
27475         * profiler.c: provide more callers information.
27476
27477 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
27478
27479         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
27480
27481         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
27482
27483         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
27484
27485 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27486
27487         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
27488         exception instead of going into an infinite loop on dates which it 
27489         can't yet handle.
27490
27491         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
27492         out-of-range exception if needed.
27493
27494         * class.c (mono_class_setup_vtable): allow a virtual method to provide
27495         an implementation for an interface method and to override an inherited
27496         method at the same time. 
27497         Imagine a scenario when a virtual method is used to override a
27498         virtual abstract method in a parent class, and this same method 
27499         provides an implementation for an method inherited from an interface. 
27500         In this case, the interface resolution code will set im->slot, which 
27501         means that the virtual method override pass will skip this method 
27502         which means a pointer to the abstract method inherited from the parent
27503         will remain in the vtable of this non-abstract class.
27504
27505         * class.c: (mono_class_setup_vtable): continue search for a real 
27506         method if only an abstract method is found.     
27507
27508 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
27509
27510         * reflection.c: add size to encoding for ByValStr and ByValArray
27511         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
27512
27513 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27514
27515         * class.c (mono_class_setup_vtable): pass the override info as an
27516         argument.
27517
27518         * class.c (mono_class_setup_vtable): set the slot of overriding methods
27519         correctly.
27520         
27521         * reflection.c (ensure_runtime_vtable); add support for method 
27522         overrides.
27523         
27524 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27525
27526         * reflection.c (resolution_scope_from_image): Hack to work to work with
27527         dynamic assemblies.
27528
27529         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
27530         added a 'force_ref' argument to force this function to allways return 
27531         a TypeRef. This is needed by mono_image_get_memberref_token ().
27532         
27533 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27534
27535         * reflection.c (mono_image_get_type_info): interfaces really don't have
27536         a parent.
27537
27538         * reflection.c (mono_image_basic_init): fill out missing fields of
27539         image structure.
27540
27541         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
27542         dynamic assemblies. This is required so dynamic assemblies show up in
27543         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
27544         Type::GetType() etc. This is consistent with MS behaviour.
27545
27546         * image.c image.h reflection.c: add newly created classes to the name 
27547         cache so mono_class_get () will find them.      
27548
27549 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
27550
27551         First part of changes to get IKVM.NET running under mono.
27552         
27553         * appdomain.h, appdomain.c: added new function 
27554         mono_domain_try_type_resolve() which will emit TypeResolve events. 
27555         This function will call AppDomain::DoTypeResolve to do the actual work.
27556
27557         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
27558         moved existing code dealing with dynamic tokens to a new function 
27559         called mono_reflection_lookup_dynamic_token (). This function will 
27560         raise TypeResolve events when appropriate. Since reflection.c is not 
27561         part of libmetadata, a new hook function called 
27562         mono_lookup_dynamic_token() is added to class.c which will call this.
27563
27564         * assembly.h assembly.c: make the invoke_load_hook function public,
27565         so it can be called for dynamic assemblies.
27566
27567         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
27568
27569         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
27570         type isn't found.
27571
27572         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
27573         MonoGHashTable, since it contains pointers to objects which the GC 
27574         needs to track.
27575
27576         * assembly.c (search_loaded): remove unused variable.
27577         
27578 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
27579
27580         * object.c: fixed issue exposed by gcc-generated IL programs
27581         that use RVA data for pointers.
27582
27583 2003-01-25  Martin Baulig  <martin@ximian.com>
27584
27585         * threads.c (start_wrapper): Moved the initialization of
27586         `start_func' above the mono_new_thread_init() call to which we
27587         pass it as argument.
27588
27589 2003-01-24  Martin Baulig  <martin@ximian.com>
27590
27591         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
27592         the MonoThread pointer.
27593
27594 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
27595
27596         * icall.c: Rename `PowImpl' to Pow.
27597
27598 2003-01-23  Dick Porter  <dick@ximian.com>
27599
27600         * threads.c (start_wrapper): Create a Thread object if needed, so
27601         the Main() thread can do the class initialisation in a subthread
27602         that has been set up to allow managed code execution.
27603
27604         Pass the thread ID instead of the MonoThread pointer to the thread
27605         start and attach callbacks.  This change is required, because the
27606         jit thread start callback must be called _before_ the Thread
27607         object can be created.
27608         
27609         (mono_thread_init): Removed much object creation code that is no
27610         longer needed.  No managed code is called from here now.
27611
27612         * object.c (mono_runtime_exec_managed_code): Create a subthread
27613         for Main, and call back to the runtime to use it.
27614         Set the exit code when Main exits.
27615
27616         * gc.c: Make sure domain finalisation happens in a subthread.
27617         Re-enable threaded GC, fixing bug 31333 (again).
27618
27619         * environment.c: System.Environment internall calls (so far just
27620         ExitCode is here, the others are still in icall.c)
27621
27622         * appdomain.c (mono_runtime_cleanup): All threads running managed
27623         code should have finished before mono_runtime_cleanup() is
27624         reached, so no need to clean up threads.
27625
27626 2003-01-22  Martin Baulig  <martin@ximian.com>
27627
27628         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
27629         `gpointer func' arguments.      
27630         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
27631         but added `MonoThread *thread' argument.
27632         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
27633
27634         * threads.c (mono_new_thread_init): Added `gpointer func' argument
27635         and pass it to the mono_thread_start_cb callback.
27636         (mono_install_thread_callbacks): New public function to install a
27637         set of callbacks which are set by the debugger.
27638         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
27639
27640 2003-01-22  Martin Baulig  <martin@ximian.com>
27641
27642         * Makefile.am: Install debug-mono-symfile.h.
27643
27644 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
27645
27646         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
27647
27648 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
27649
27650         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
27651         * class.c (mono_ptr_class_get): correctly set access levels of pointers
27652         (mono_array_class_get): correctly set access levels of arrays
27653
27654 2003-01-20      Patrik Torstensson
27655         * image.h (MonoAssemblyName): changed major, minor, build, revision
27656         from signed to unsigned.
27657
27658 2003-01-20  sean kasun <skasun@azstarnet.com>
27659
27660         * reflection.c (load_cattr_value): Now this handles
27661         MONO_TYPE_SZARRAY.  Fixes bug #35629
27662
27663 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
27664
27665         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
27666         integer value
27667
27668 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27669
27670         * decimal.c: fixed bug #26056.
27671
27672 2003-01-17  Martin Baulig  <martin@ximian.com>
27673
27674         * gc.c: Raise an ExecutionEngineException instead of using g_error().
27675
27676 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27677
27678         * exception.[ch]:
27679         (mono_get_exception_type_initialization): new function.
27680
27681         * object.c: throw a TypeInitializationException when an exception is
27682         thrown invoking the class constructor.
27683
27684 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27685
27686         * reflection.c: fixed attribute reading.
27687
27688 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27689
27690         * icall.c:
27691         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
27692         provided, look for the type in the calling assembly and then in
27693         mscorlib; if the assembly name is provided, only try that one.
27694
27695 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
27696
27697         * object.c: register the vtable before there is a chance it's
27698         queried again recursively.
27699
27700 2003-01-13  Duncan Mak  <duncan@ximian.com>
27701
27702         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
27703         gc-internal.h. 
27704         
27705 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
27706
27707         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
27708
27709 2003-01-11  Martin Baulig  <martin@ximian.com>
27710
27711         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
27712         this to 20 for the release.
27713
27714 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
27715
27716         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
27717
27718         * loader.c (mono_method_get_marshal_info): bug fix
27719
27720         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
27721         structures with explicit layout
27722
27723 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27724
27725         * profiler.c: made the output more readable (and sorted). 
27726         Added caller information for the allocation profiler.
27727
27728 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
27729
27730         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
27731
27732 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27733
27734         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
27735         to get value types.
27736         
27737 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
27738
27739         * object.c, profiler.h, profiler.c, profiler-private.h:
27740         Added object allocation profiler.
27741
27742 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
27743
27744         * reflection.h, reflection.c: handle global methods.
27745         Compress blob entries.
27746
27747 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
27748
27749         * marshal.c: fix compilation.
27750
27751 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
27752
27753         * loader.c (mono_method_get_marshal_info): impl.
27754
27755         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
27756
27757 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27758
27759         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
27760         for reference types.
27761
27762 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
27763
27764         * loader.c: fixed off by one error in loaded parameter names.
27765
27766 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
27767
27768         * marshal.c (mono_marshal_get_icall_wrapper): like
27769         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
27770         instead of a MonoMethod.
27771
27772 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27773
27774         * decimal.c: fixed bug #36537.
27775
27776 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
27777
27778         * marshal.c: throw a missing method exception if a
27779         P/Invoke method is not found.
27780
27781 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
27782
27783         * icall.c: allow a null this for constructors.
27784
27785 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
27786
27787         * icall.c: raise the proper exceptions if the arguments to the
27788         internal Invoke are incorrect.
27789
27790 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
27791
27792         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
27793
27794 2003-01-03  Martin Baulig  <martin@ximian.com>
27795
27796         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27797
27798 2002-12-31  Martin Baulig  <martin@ximian.com>
27799
27800         * debug-mono-symfile.c: Completely rewrote the type section.
27801         Instead of using individual malloc()ed fields, we use one big
27802         continuous memory area and offsets into this area.
27803         See the comments in the source code for details.
27804
27805 2002-12-30  Martin Baulig  <martin@ximian.com>
27806
27807         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
27808
27809 2002-12-30  Martin Baulig  <martin@ximian.com>
27810
27811         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
27812         line number table in this data blob instead of using an external
27813         pointer.
27814
27815 2002-12-28  Martin Baulig  <martin@ximian.com>
27816
27817         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
27818
27819 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
27820
27821         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
27822         as a boxed return type.
27823
27824 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
27825
27826         * appdomain.c
27827         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
27828         g_build_filename to properly get separators on the filename created.
27829
27830         * object.h: Small change, introduce MonoMarshalByRefObject to
27831         track the layout of that structure in the C# universe as we make
27832         changes there.
27833
27834 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
27835
27836         * object.c: removed assert to allow static fields on interfaces.
27837         * loader.c: a TypeSpec may be used for any type, not just arrays.
27838
27839 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
27840
27841         * class.c, class.h: added mono_class_array_element_size ().
27842         Ignore static methods in interfaces.
27843
27844 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27845
27846         * threads.c: fixed the build under cygwin.
27847
27848 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
27849
27850         * reflection.c: handle nullref constants. Allocate keys for
27851         reflection handles with the GC.
27852
27853 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27854
27855         * threads.c, threads.h: added mono_thread_get_abort_signal()
27856         to get a suitable signal for thread abort.
27857
27858 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
27859
27860         * metadata.c: fix handling of ExportedType table.
27861
27862 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27863
27864         * icall.c: added WriteWindowsDebugString internal call.
27865
27866 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27867
27868         * reflection.h: added fields to match C# implementation.
27869
27870 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27871
27872         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
27873
27874 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
27875
27876         * gc.h, gc-internal.h: Rename header for GC internal calls to
27877         gc-internal.h from gc.h as to not clash with Boehm GC having its
27878         header installed as <gc.h> in outside include paths.
27879         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
27880         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
27881
27882 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27883
27884         * icall.c: assign minor, build and revision in FillName.
27885
27886 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
27887
27888         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
27889         Added support for running code generated by Reflection.Emit.
27890
27891 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27892
27893         * appdomain.c: check for NULL argument in LoadFrom.
27894
27895 2002-12-10  Dick Porter  <dick@ximian.com>
27896
27897         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
27898
27899 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27900
27901         * appdomain.c: fix buglet when building exe file name.  Handle full
27902         assembly name (needed after latest changes to AssemblyName).
27903         * image.c:
27904         (mono_image_close): free some hashtables.
27905
27906 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
27907
27908         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
27909         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
27910         on some systems (redhat 7.3) 
27911
27912 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
27913
27914         * threads.c: delete the critical section of a sync block,
27915         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
27916
27917 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
27918
27919         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
27920
27921 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27922
27923         * appdomain.[ch]: handle the assembly preload event to try loading the
27924         assemblies using the paths we have in the current domain.
27925
27926         * assembly.[ch]: created an assembly preload hook that is called to try
27927         loading the assembly by other means that the ones provided here.
27928
27929         * domain.c: initialize the domain search path.
27930
27931         From now on, assemblies (TODO: except corlib and System) are loaded
27932         according to these rules when using mono_assembly_load ():
27933
27934                 1. It tries to load the assembly from the ApplicationBase
27935                 of the current domain appending .dll and .exe (TODO: have to
27936                 try loading from name/name.dll and name/name.exe).
27937
27938                 2. It tries the search path specified in PrivateBinPath for the
27939                 current domain (if any).
27940
27941                 3. Previous behavior.
27942
27943 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
27944
27945         * icall.c: implemented GetInterfaceMap() related icall.
27946         * domain.c, loader.h: load MethodInfo in mono_defaults.
27947
27948 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
27949
27950         * gc.c: disable the finalizer thread for now, untill all the issues
27951         with it are resolved.
27952
27953 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
27954
27955         * string-icalls.c: handle embedded nulls in string ctor when the
27956         length is specified.
27957
27958 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
27959
27960         * class.c: look for explicit interface implementation in parent
27961         classes, too.
27962
27963 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
27964
27965         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
27966
27967 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
27968
27969         * gc.c: protect handles with a critical section.
27970
27971 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27972
27973         * icall.c:
27974         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
27975         parameters. If no assembly specified, try getting the type from all
27976         the assemblies in the current domain, else, load the assembly and get
27977         the type from it.
27978
27979 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27980
27981         * marshal.c: applied patch from Aleksey Demakov that fixes
27982         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
27983
27984 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27985
27986         * icall.c: fixed get_location.
27987
27988 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
27989
27990         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
27991         declarations to make it work with older gcc. 
27992
27993         * loader.c (mono_get_method): set signature->pinvoke for native calls
27994
27995 2002-11-20  Dick Porter  <dick@ximian.com>
27996
27997         * threads.c (mono_thread_init): Set the main thread's handle
27998
27999 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
28000
28001         * gc.c: allow compilation without GC support. Changed to match the
28002         mono coding style.
28003
28004 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
28005
28006         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
28007
28008 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
28009
28010         * reflection.c: set a public key token on the core assemblies.
28011
28012 2002-11-18  Dick Porter  <dick@ximian.com>
28013
28014         * threads.c: Split out some thread initialisation so that other
28015         files can set the start callback function.
28016
28017         * gc.c: Run finalisers in a separate thread, to avoid stack
28018         overflow.  Fixes bug 31333.
28019
28020         * appdomain.c: Set up GC finalisation thread.
28021
28022         * reflection.c: 
28023         * object.c: 
28024         * domain.c: Use gc.h macros for GC_malloc
28025         
28026 2002-11-15  Dick Porter  <dick@ximian.com>
28027
28028         * threadpool.c: 
28029         * threads.c:
28030         * appdomain.c: Removed mono_runtime_init_with_attach(),
28031         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
28032         merging the extra parameter with the existing function.  Removed
28033         unneeded code in mono_thread_attach().
28034
28035 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
28036
28037         * image.c (mono_image_loaded_by_guid): a method to get loaded
28038         images by guid. 
28039         (load_metadata_ptrs): we store the guid as string.
28040
28041 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
28042
28043         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
28044
28045         * metadata.c (mono_guid_to_string): imported method form Zoltan
28046         Varga (slightly modified)
28047
28048         * assembly.c (mono_assembly_open): load precompiled code
28049
28050         * loader.h (MonoMethod): we store the method token for use in the
28051         aot compiler. 
28052
28053 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28054
28055         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
28056         the hook function called when an assembly is loaded.
28057         
28058         * domain.c: Modified file.
28059         (mono_domain_assembly_load): removed hash table insertion of assemblies.
28060
28061         Fixes bug #33196.
28062
28063 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
28064
28065         * reflection.c: Map PEFileKind to the value expected by the WinNT
28066         image loader. 
28067
28068 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28069
28070         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
28071         Read until the buffer is filled completely.
28072
28073 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28074
28075         * icall.c: implemented MonoType.InternalGetEvent ().
28076
28077 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28078
28079         * appdomain.c: implemented InitAppDomainSetup. Delayed
28080         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
28081         the entry_assembly.
28082
28083         * assembly.c: base_dir is now an absolute path ending with
28084         G_DIR_SEPARATOR.
28085
28086         * icall.c: modified get_location according to the above changes.
28087
28088         * object.c: init AppDomain.SetupInformation for the default domain after
28089         we have the entry assembly.
28090
28091         * domain.c: when unloading a domain, setup = NULL.
28092
28093 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
28094
28095         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
28096
28097 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
28098
28099         * object.h, object.c: introduced mono_object_get_virtual_method ()
28100         to lookup the method invoked on an object when a callvirt is done on
28101         a method.
28102         * icall.c: make MethodInfo::Invoke() always do a virtual call.
28103
28104 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28105
28106         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
28107         current domain when loaded an assembly and failed to load it.
28108
28109         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
28110
28111 2002-10-31  Dick Porter  <dick@ximian.com>
28112
28113         * icall.c: 
28114         * file-io.h: 
28115         * file-io.c: Return the error status in a parameter, as the
28116         GetLastError() value has long since been blown away if we try and
28117         look it up in a subsequent internal call invocation.  Delete the
28118         GetLastError() internal call, because it's useless.
28119
28120 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
28121
28122         * class.[ch]: added cast_class to fix bug 29517
28123
28124 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
28125
28126         * marshal.c: create valid IL code in the filter clause:
28127         the new JIT is less forgiving:-)
28128
28129 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28130
28131         * icall.c: removed get_property internal call.
28132
28133 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
28134
28135         * appdomain.h domain.c: Added an ID to appdomains.
28136         
28137         * threads.c threads.h icall.c: Implement icall
28138         Thread:GetDomainID(), and remove unused icall 
28139         CurrentThreadDomain_internal.
28140
28141 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28142
28143         * icall.c: Don't recurse through the base types in GetConstructor.
28144         Fixes bug #32063. 
28145
28146 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
28147
28148         * mempool.h, mempool.c: added mono_mempool_empty() and
28149         mono_mempool_stats().
28150
28151 2002-10-23  Dick Porter  <dick@ximian.com>
28152
28153         * file-io.c: 
28154         * file-io.h: 
28155         * icall.c: Added MonoIO.GetFileType internal call
28156
28157 2002-10-17  Dick Porter  <dick@ximian.com>
28158
28159         * appdomain.c (mono_runtime_cleanup): Don't signal the async
28160         delegate semaphore before waiting for all threads to finish,
28161         because new threads can also call async delegates.  Fixes bug
28162         32004.
28163
28164         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
28165         of 3 seconds, in case another async job is queued.  (This part is
28166         needed because the bug fix reintroduced the 3s exit lag.)  This
28167         makes the mono_runtime_shutdown flag superfluous.
28168
28169 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
28170
28171         * reflection.c: include ehader size in method section headers.
28172         Really check for suplicated modules entries.
28173
28174 2002-10-17  Martin Baulig  <martin@gnome.org>
28175
28176         * debug-mono-symfile.c: Added back support for locals.
28177
28178 2002-10-14  Martin Baulig  <martin@gnome.org>
28179
28180         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
28181         MONO_TYPE_VOID.
28182
28183 2002-10-14  Martin Baulig  <martin@gnome.org>
28184
28185         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
28186         mono_class_get() instead of looking in the class cache. 
28187
28188 2002-10-13  Martin Baulig  <martin@gnome.org>
28189
28190         * debug-mono-symfile.c: Set version number to 28, include the
28191         signature in method names.
28192
28193 2002-10-13  Martin Baulig  <martin@gnome.org>
28194
28195         * debug-mono-symfile.h: Set version number to 27.
28196
28197 2002-10-11  Martin Baulig  <martin@gnome.org>
28198
28199         * gc.c: Don't register/unregister NULL pointers as disappearing links.
28200
28201 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28202
28203         * metadata.c, metadata.h: added helper function to allocate signatures.
28204
28205 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28206
28207         * icall.c: added internal call to get the location of machine.config.
28208
28209 2002-10-08  Martin Baulig  <martin@gnome.org>
28210
28211         * debug-mono-symfile.c: Ignore classes with a pending init for the
28212         moment.
28213
28214 2002-10-03  Dick Porter  <dick@ximian.com>
28215
28216         * threads.c: Freebsd pthread_t is a pointer
28217
28218 2002-10-03  Dick Porter  <dick@ximian.com>
28219
28220         * socket-io.c: Implemented GetHostName_internal
28221
28222 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28223
28224         * mono-config.c:
28225         (mono_config_parse_file): don't leak the text.
28226
28227 2002-10-02  Martin Baulig  <martin@gnome.org>
28228
28229         * debug-mono-symfile.c: Added support for methods.
28230
28231 2002-10-01  Martin Baulig  <martin@gnome.org>
28232
28233         * debug-mono-symfile.c: Don't emit methods and line numbers for
28234         the dynamic symbol file, just write the type table.  We can easily
28235         have an external helper program which creates a symbol file for an
28236         IL file.        
28237
28238 2002-10-01  Dick Porter  <dick@ximian.com>
28239
28240         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
28241         Only add the handle to the cleanup array when we're about to
28242         launch the thread.  Bug 31425 deadlocked when the test was run on
28243         mono under w32.
28244
28245 2002-10-01  Martin Baulig  <martin@gnome.org>
28246
28247         * debug-mono-symfile.c: Added support for properties.
28248
28249 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28250
28251         * reflection.c: unaligned store fix from Mark Crichton
28252         <crichton@gimp.org>.
28253
28254 2002-09-27  Martin Baulig  <martin@gnome.org>
28255
28256         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
28257         New interncall.
28258
28259 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
28260
28261         * assembly.h, assembly.c: use a sane API to hook into the assembly
28262         loading process instead of a useless special-purpouse hack
28263         (ngen needs a hook, too, for example).
28264
28265 2002-09-27  Dick Porter  <dick@ximian.com>
28266
28267         * threads.c (mono_thread_init): Call GetCurrentProcess() so
28268         io-layer can set up some process handle info.  Not needed on w32,
28269         but doesn't hurt either.
28270
28271         * process.c: Pass the program name in the second parameter to
28272         CreateProcess, so the path is searched.  Include the working
28273         directory. Implemented process name, process enumeration, and some
28274         process detail internal calls.
28275         
28276         * icall.c: Added internal calls for process lookup, and some
28277         process details
28278
28279 2002-09-26  Martin Baulig  <martin@gnome.org>
28280
28281         * assembly.c (mono_install_open_assembly_hook): New global
28282         function to install a function to be invoked each time a new
28283         assembly is loaded.
28284         (mono_assembly_open): Run this callback function if set.
28285
28286         * debug-mono-symfile.c: Put back line numbers for the dynamic
28287         symbol file and also record the .il file as source file.  This
28288         allows us to install the temporary symbol file as `file.dbg' just
28289         like a compiler-generated one.
28290
28291 2002-09-26  Nick Zigarovich <nick@chemlab.org>
28292
28293         * Corrected typo in gc.c (BOHEM vs BOEHM).
28294
28295 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28296
28297         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
28298         GetProperties. Also avoid calling g_slist_length in GetProperties and
28299         GetMethods.
28300
28301 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28302
28303         * reflection.c: avoid unaligned stores (bug spotted by
28304         Mark Crichton  <crichton@gimp.org>).
28305
28306 2002-09-25  Martin Baulig  <martin@gnome.org>
28307
28308         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
28309         instead of guint64 for addresses and added prologue/epilogue info.
28310
28311 2002-09-25  Martin Baulig  <martin@gnome.org>
28312
28313         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
28314         store line number info.  For the dynamic symbol file, we only need
28315         to provide the JIT generated dynamic line number info for the dynamic
28316         symbol file.
28317
28318 2002-09-25  Martin Baulig  <martin@gnome.org>
28319
28320         * debug-mono-symfile.h: Incremented version number.
28321
28322 2002-09-24  Martin Baulig  <martin@gnome.org>
28323
28324         * class.c (mono_debugger_class_init_func): New global function
28325         pointer variable.
28326         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
28327         call it.
28328
28329         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
28330         function.  This is called via the mono_debugger_class_init_func
28331         hook to add all types to the dynamic type table.
28332         (ves_icall_MonoDebugger_GetType): New interncall to get a class
28333         from its metadata token.
28334
28335         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
28336         New interncall for the debugger.
28337
28338 2002-09-24  Nick Drochak <ndrochak@gol.com>
28339
28340         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
28341         before using it in case it is null.
28342         
28343 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
28344
28345         * metadata.c: allow custom modifiers in local var signatures
28346         (bug spotted by Zoltan Varga).
28347
28348 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
28349
28350         * class.c: deal with the <Module> class that may have a NULL vtable.
28351         Eliminate warnings.
28352
28353 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28354
28355         * image.c, image.h: more strong name helpers.
28356         * monosn.c: more work: convert pem keys to cryptoapi format.
28357
28358 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28359
28360         * string-icalls.c: speedup IndexOf.
28361
28362 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28363
28364         * icall.c: updates from Zoltan.2.Varga@nokia.com.
28365
28366 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28367
28368         * icall.c: cleanup: use mono_object_domain ().
28369
28370 2002-09-23  Martin Baulig  <martin@gnome.org>
28371
28372         * debug-mono-symfile.c: Improved type support.
28373
28374 2002-09-22  Martin Baulig  <martin@gnome.org>
28375
28376         * debug-mono-symfile.c: Added support for reference types and strings.
28377
28378 2002-09-22  Martin Baulig  <martin@gnome.org>
28379
28380         * debug-mono-symfile.c: Started to work on the type table.
28381
28382 2002-09-21  Martin Baulig  <martin@gnome.org>
28383
28384         * debug-mono-symfile.c: Largely reworked the symbol table format.
28385         The symbol table is now incrementally updated each time a new
28386         method is added.  We're now also using our own magic and version
28387         so that you don't need to recompile all your classes if the
28388         dynamic table changes.
28389         (mono_debug_update_mono_symbol_file): Removed.
28390         (mono_debug_symfile_add_method): New function to add a method.
28391
28392 2002-09-21  Martin Baulig  <martin@gnome.org>
28393
28394         * icall.c
28395         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
28396         New interncall.
28397
28398         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
28399         New interncall to get a method from its metadata token.
28400
28401 2002-09-21  Martin Baulig  <martin@gnome.org>
28402
28403         * debug-mono-symfile.c: Create type table.
28404
28405 2002-09-20  Martin Baulig  <martin@gnome.org>
28406
28407         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
28408
28409 2002-09-20  Martin Baulig  <martin@gnome.org>
28410
28411         * debug-mono-symfile.c: Provide information about params and locals.
28412
28413 2002-09-20  Martin Baulig  <martin@gnome.org>
28414
28415         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
28416         New interncall.
28417
28418         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
28419         interncall to get a method from its metadata token.
28420
28421 2002-09-20  Martin Baulig  <martin@gnome.org>
28422
28423         * debug-mono-symfile.c: Added a few checks for method->header
28424         being non-NULL.  This should never happen, but for the moment
28425         let's use a g_warning() rather than a g_assert().
28426
28427 2002-09-19  Mark Crichton  <crichton@gimp.org>
28428
28429         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
28430         even if support for it isn't present.  Added an #ifdef to fix this.
28431
28432         * socket-io.c: Added checks back for Solaris support.
28433
28434 2002-09-19  Martin Baulig  <martin@gnome.org>
28435
28436         * debug-mono-symfile.c (read_string, write_string): Reflect latest
28437         changes in the symbol file format.
28438
28439 2002-09-18  Martin Baulig  <martin@gnome.org>
28440
28441         * debug-mono-symfile.c: Set version number to 21.
28442
28443 2002-09-18  Dick Porter  <dick@ximian.com>
28444
28445         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
28446         on netbsd.  Fixes bug 30051.
28447
28448 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28449
28450         * reflection.c:
28451         (set_version_from_string): little fix.
28452
28453 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28454
28455         * monosn.c, Makefile.am: added strong name utility.
28456         * reflection.h, reflection.c: implemented delayed signing,
28457         locale, version and hash id assembly attributes.
28458
28459 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
28460
28461         * loader.c, metadata.c: load param attributes in signatures.
28462
28463 2002-09-16  Martin Baulig  <martin@gnome.org>
28464
28465         * debug-mono-symfile.c: Added string table with all method names.
28466
28467 2002-09-14  Martin Baulig  <martin@gnome.org>
28468
28469         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
28470         fast method lookup.
28471
28472 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28473
28474         * reflection.c: record the public key token of referenced assemblies.
28475
28476 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
28477
28478         * image.c, image.h: added functions to get the strong name and the
28479         public key of an assembly.
28480         * pedump.c: use them.
28481
28482 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
28483
28484         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
28485
28486 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
28487
28488         * marshal.c (mono_marshal_get_managed_wrapper): Added
28489         MONO_TYPE_BOOLEAN 
28490
28491 2002-09-11  Martin Baulig  <martin@gnome.org>
28492
28493         * gc.c: Call GC_unregister_disappearing_link() on all links when
28494         finalizing them, this is necessary to aviod a crash in boehm's
28495         finalize handler.
28496
28497 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28498
28499         * gc.c: handle GetTarget for finalized objects spotted and fixed by
28500         nick@chemlab.org.
28501
28502 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
28503
28504         * icall.c: implemented MonoType::Module.
28505         * reflection.c, reflection.h: mono_module_get_object () from
28506         Tomi Pakarinen <tomi.pakarinen@welho.com>.
28507
28508 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
28509
28510         * icall.c: ignore overridden methods in GetMethods ().
28511         Fix for FieldInfo::SetValue().
28512         * object.c: handle float/double in runtime invoke.
28513
28514 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
28515
28516         * object.c: allow a constructor to be called again on an object.
28517
28518 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28519
28520         * class.h, class.c: move field layout code to it's own function and
28521         export it. Get an interface id earlier. Move fields in MonoClass
28522         so they are more cache friendly and align the bitfields.
28523         * loader.c: temporary handle get_param_names() for a runtime method.
28524         * reflection.c, reflection.h: more code to handle runtime creation of
28525         types.
28526
28527 2002-09-09  Martin Baulig  <martin@gnome.org>
28528
28529         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
28530         signature with the pinvoke field being set for the actual call.
28531
28532 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
28533
28534         * icall.c: removed some unused icalls. Start of map of glib charsets
28535         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
28536
28537 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28538
28539         * debug-helpers.c: break infinite loop (found and fixed by
28540         Holger Arnold <harnold@gmx.de>).
28541
28542 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
28543
28544         * icall.c: target may be null in create_delegate.
28545
28546 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
28547
28548         * marshal.c: handle a boolean return type.
28549
28550 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
28551
28552         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
28553
28554 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28555
28556         * gc.c: fix weakreferences.
28557
28558 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
28559
28560         * icall.c: added icall to get default codepage.
28561
28562 2002-09-03  Dick Porter  <dick@ximian.com>
28563
28564         * threads.h: 
28565         * threads.c: Use MonoThread instead of MonoObject where
28566         apropriate.
28567
28568         Store running thread objects in a hash table, so that we have all
28569         the info to hand when waiting for them to finish
28570         (means we don't need OpenThread() any more, so mingw builds should
28571         be fully functional again.)
28572
28573         * verify.c:
28574         * object.h: Added thread ID to MonoThread
28575
28576 2002-09-03  Martin Baulig  <martin@gnome.org>
28577
28578         * icall.c (System.Reflection.Assembly::get_location): New interncall.
28579
28580 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28581
28582         * icall.c: fixed leak in get_temp_path. Thanks lupus.
28583
28584 2002-09-03  Martin Baulig  <martin@gnome.org>
28585
28586         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
28587         argument to store the end address of the disassembled instruction.
28588
28589         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
28590         here from debug-symfile.h.
28591         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
28592         JIT into this struct.
28593         (MonoSymbolFile): Added `char *image_file' field.
28594         (MonoDebugGetMethodFunc): Removed.
28595         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
28596         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
28597         (mono_debug_find_method): New method.
28598
28599         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
28600         create a full symbol file.
28601         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
28602         and static symbol files.
28603         (mono_debug_find_method): The symbol file keeps an internal method hash,
28604         call this to get a MonoDebugMethodInfo from a MonoMethod.
28605
28606         * debug-symfile.[ch]: Removed.
28607
28608 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
28609
28610         * image.c (do_mono_image_open): Remove linker version check.
28611
28612 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
28613
28614         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
28615         wrappers for instance methods.
28616         
28617 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28618
28619         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
28620
28621 2002-08-28  Dick Porter  <dick@ximian.com>
28622
28623         * Makefile.am: Export HOST_CC for w32 builds
28624
28625 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
28626
28627         * file-io.c process.c: MonoString are null terminated, no
28628         need for mono_string_to_utf16() anymore.
28629
28630 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28631
28632         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
28633
28634 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
28635
28636         * icall.c, reflection.h: speedup System.MonoType.
28637
28638 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
28639
28640         * reflection.c: allow null as the value of a string argument in
28641         custom attributes constructors.
28642
28643 2002-08-27  Martin Baulig  <martin@gnome.org>
28644
28645         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
28646         `trampoline_address' field.
28647
28648 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
28649
28650         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
28651         check (fixes bug #29486) 
28652
28653 2002-08-27  Martin Baulig  <martin@gnome.org>
28654
28655         * debug-mono-symfile.c: Changed the file format in a way that allows us
28656         open it read-only and to use a specially malloced area for all the
28657         dynamic data.  We can now also generate a symbol file on-the-fly if we're
28658         debugging IL code and there is no MCS generated symbol file for it.
28659
28660 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
28661
28662         * object.c: added a define for a good string and array
28663         creation speedup (not enabled by default because we need to deal with
28664         the synch stuff).
28665
28666 2002-08-26  Martin Baulig  <martin@gnome.org>
28667
28668         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
28669         function to create a dynamic symbol file.  This is used by the
28670         debugger to create a symbol file for IL code on-the-fly.
28671
28672 2002-08-26  Martin Baulig  <martin@gnome.org>
28673
28674         * loader.c (mono_lookup_pinvoke_call): Include the error message
28675         from g_module_error() in the error message.
28676
28677 2002-08-24  Martin Baulig  <martin@gnome.org>
28678
28679         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
28680         function to update the symbol file.  The symbol file is mmap()ed
28681         writable, but private.  This allows us to install the symbol file
28682         together with the assembly.
28683
28684 2002-08-24  Martin Baulig  <martin@gnome.org>
28685
28686         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
28687         but they can read the new symbol file format which mcs is now creating.
28688
28689         * debug-symfile.c (mono_debug_find_source_location): Moved to
28690         debug-mono-symfile.c; this is now operating on the new symbol file.
28691
28692 2002-08-23  Martin Baulig  <martin@gnome.org>
28693
28694         * debug-helpers.c (mono_method_desc_from_method): New function to get
28695         a MonoMethodDesc from a MonoMethod.
28696
28697 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
28698
28699         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
28700         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
28701
28702 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
28703
28704         * string-icalls.[ch]: make helper methods static.
28705
28706 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28707
28708         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
28709         types to it and to SetValueInternal.
28710
28711         * object.c: Moved handle_enum label to its proper place. This was the
28712         f... bug! ;-)
28713
28714         This time i compiled mcs and gtk-sharp and they both work.
28715
28716 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28717
28718         * icall.c: reverted partially my previous patch until 
28719         object.c:set_value handles enums correcly.
28720
28721 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28722
28723         * icall.c:
28724         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
28725         (ves_icall_System_Environment_get_MachineName): removed warning when
28726         compiling under cygwin.
28727
28728 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
28729
28730         * object.c: fixed field_get_value() for reference types.
28731
28732 2002-08-22  Dick Porter  <dick@ximian.com>
28733
28734         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
28735         Don't free a buffer while it's still needed.  Patch from Jonathan
28736         Liger <Jonathan.liger@wanadoo.fr>
28737
28738 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
28739
28740         * icall.c (ves_icall_System_Environment_get_Platform): Add new
28741         internal call.
28742
28743 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
28744
28745         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
28746         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
28747
28748         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
28749         we call unmanaged code which throws exceptions.
28750
28751 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28752
28753         * appdomain.h: added per-domain entry_assembly.
28754         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
28755         arguments.
28756         * icall.c: Assembly::GetEntryAssembly icall.
28757         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
28758         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
28759
28760 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28761
28762         * appdomain.h, gc.c: added mono_domain_finalize ().
28763
28764 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28765
28766         * object.c:
28767         (mono_print_unhandled_exception): changed g_warning by g_printerr
28768         because g_log has a 1024 characters limit (yeah, i got a big stack
28769         trace). Don't print exception name, that should be in ToString 
28770         returned string.
28771
28772 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28773
28774         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
28775         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
28776
28777 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28778
28779         * object.c:
28780         (mono_print_unhandled_exception): after previous commit, i realized
28781         that MS calls ToString on the exception. I changed this function to
28782         do that. This way we get stack_trace for free.
28783
28784 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28785
28786         * object.c:
28787         (mono_print_unhandled_exception): invoke Message property instead of
28788         getting 'message' field from Exception. Don't allocate memory for
28789         'trace' and 'message' if not needed.
28790
28791 2002-08-18  Dick Porter  <dick@ximian.com>
28792
28793         * unicode.c: Fix asserts to match Encoder.cs checks
28794
28795 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
28796
28797         * marshal.c: fix unaligned store issue and a few wrong
28798         opcode argument types.
28799
28800 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28801
28802         * icall.c: added GetUninitializedObjectInternal internal call.
28803
28804 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
28805
28806         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
28807         to the right domain.
28808
28809 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
28810
28811         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
28812
28813         * class.c (class_compute_field_layout): set blittable to false for Strings
28814
28815         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
28816
28817 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
28818
28819         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
28820         first chunk of code to create types at runtime. Code to
28821         handle ReflectedType/DeclaringType. Make reflection handles
28822         domain specific.
28823
28824 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
28825
28826         * class.c: set correct name in arrays.
28827
28828 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
28829
28830         * appdomain.c (mono_domain_transfer_object): make it work with
28831         valuetypes. bug fixes.
28832
28833 2002-08-12  Dick Porter  <dick@ximian.com>
28834
28835         * object.h: Rename some parameters to avoid c++ keywords (Patch
28836         from Joseph Wenninger <kde@jowenn.at>)
28837
28838 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
28839
28840         * icall.c: added icall to implement Assembly.GetFile*.
28841
28842 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28843
28844         * reflection.h, reflection.c: code to embed managed resources.
28845
28846 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
28847
28848         * class.c: move all the type size stuff into
28849         class_compute_field_layout().
28850
28851 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
28852
28853         * class.c: ensure enums have always the correct instance size.
28854         * unicode.c: remove wrong assert.
28855
28856 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
28857
28858         * assembly.c: fix mem corruption issue.
28859         * image.h, image.c: added mono_image_get_resource () to access
28860         managed resources.
28861         * icall.c: implemented Assembly.EntryPoint property and some
28862         Managed Resources related internalcalls.
28863
28864
28865 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
28866
28867         * image.c, image.h: impemented mono_image_get_entry_point ().
28868         * appdomain.c: use mono_image_get_entry_point.
28869
28870 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28871
28872         * reflection.c: support the object type argument when loading
28873         custom attributes.
28874
28875 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
28876
28877         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
28878         String as return type.
28879
28880 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
28881
28882         * reflection.c: fix encoding of named args for custom attrs to match
28883         the ms implementation. Read them back when instantiating custom
28884         attributes.
28885
28886 2002-08-02  Radek Doulik  <rodo@ximian.com>
28887
28888         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
28889         by Dietmar as quick fix
28890         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
28891         16 as stack size, used on more places as quick fix before Dietmar
28892         will fix it properly
28893
28894 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
28895
28896         * object.h, object.c: added accessors for fields and properties.
28897
28898 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
28899
28900         * class.c, class.h: made mono_class_get_field_from_name ()
28901         loop on parent types.
28902         Added mono_class_get_property_from_name ().
28903
28904 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
28905
28906         * class.c, class.h: move the code to setup the type vtable in its own
28907         function so that it can be reused also for types created at runtime.
28908         Eliminate the "class" identifier from the header file.
28909         * reflection.c: setup the vtable for enums so that we can create
28910         objects for use in SetConstant ().
28911
28912 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
28913
28914         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
28915         instead of the delegate itself as this pointer (bug #28383)
28916
28917 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
28918
28919         * marshal.c (mono_marshal_get_managed_wrapper): added return type
28920         conversions.
28921
28922 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
28923
28924         * loader.c: don't set the pinvoke bit on icalls.
28925
28926 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
28927
28928         * debug-helpers.c (mono_method_full_name): only print a number to
28929         indicate wrapper type (so that the output is more readable in traces).
28930
28931 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
28932
28933         * class.c (mono_class_init): include method override patch from Paolo
28934
28935 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
28936
28937         * icall.c: fixed GetTypeCode().
28938
28939 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
28940
28941         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
28942         use real delegate invoke function to make it work with multicast
28943         delegates (fix bug# 28291).
28944
28945 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
28946
28947         * object.c: load constant strings.
28948
28949 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
28950
28951         * reflection.c: no magic numbers.
28952         * tabledefs.h: security action enum.
28953
28954 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
28955
28956         * assembly.c: fix possible memory corruption.
28957
28958 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
28959
28960         * reflection.h, reflection.c: added support for linking resources.
28961         * verify.c: check we have an updated corlib.
28962
28963 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
28964
28965         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
28966         string arrays.
28967         (mono_marshal_string_array): null terminate unmanaged string arrays.
28968         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
28969
28970 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
28971
28972         * icall.c: Type.GetType () can now return also types from the
28973         calling assembly.
28974
28975 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
28976
28977         * loader.h, loader.c: stack walking support.
28978         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
28979         GetCallingAssembly.
28980
28981 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
28982
28983         * marshal.c: added optimisations for blittable types 
28984
28985         * class.c (mono_array_class_get): do not set blittable attribute on arrays
28986         (mono_class_setup_mono_type): set blittable attribute for single
28987         and double.
28988
28989         * marshal.c (mono_string_utf8_to_builder): impl.
28990         (mono_string_builder_to_utf8): impl.
28991         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
28992
28993 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
28994
28995         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
28996         (mono_marshal_get_managed_wrapper): impl. byref types
28997
28998 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28999
29000         * icall.c:
29001         (search_method): don't display debug message. 
29002
29003 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29004
29005         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
29006
29007 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
29008
29009         * appdomain.c: set the missing filename when throwing exception.
29010
29011 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
29012
29013         * metadata.c (mono_type_size): code cleanup
29014         (mono_type_stack_size): removed some test code
29015
29016 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
29017
29018         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
29019         mono_get_exception_file_not_found now.
29020
29021         * exception.c (mono_exception_from_name_two_strings): New version
29022         that will call a constructor with two string arguments. 
29023         (mono_get_exception_file_not_found): New helper routine, used to
29024         report file-not-found errors.
29025
29026 2002-07-20  Dick Porter  <dick@ximian.com>
29027
29028         * process.h:
29029         * process.c: Pass file handles to CreateProcess
29030         
29031         * icall.c:
29032         * file-io.h:
29033         * file-io.c: Implemented CreatePipe
29034
29035 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29036
29037         * metadata.c (mono_get_param_info): set alignment for value types
29038
29039 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29040
29041         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
29042         Constify mono_domain_assembly_open().
29043         * loader.c: handle null namespace in icalls.
29044
29045 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
29046
29047         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
29048         (emit_str_to_ptr_conv): marshal object as structs
29049
29050         * metadata.c (mono_type_to_unmanaged): marshal object as structs
29051
29052         * marshal.c (mono_marshal_get_runtime_invoke): support value types
29053
29054 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
29055
29056         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
29057         (mono_marshal_get_native_wrapper): we an now return value types
29058
29059 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29060
29061         * verify.c: more checks implemented.
29062
29063 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
29064
29065         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
29066         (fix bug #27695)
29067         (mono_marshal_get_native_wrapper): allow byref arguments
29068         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
29069         impl. PtrToStringXXX methods
29070         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
29071         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
29072         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
29073         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
29074         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
29075
29076 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29077
29078         * reflection.c: fix buglet in parsing an assembly name.
29079
29080 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29081
29082         * marshal.c (emit_ptr_to_str_conv): first impl.
29083
29084 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29085
29086         * object.c, class.h: cache the vtable in the class as suggested by
29087         vargaz@freemail.hu (Zoltan Varga).
29088
29089 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29090
29091         * class.h, loader.c: added mono_field_from_token().
29092         * verify.c: first cut of type checking code.
29093
29094 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
29095
29096         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
29097
29098 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
29099
29100         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
29101         (fix bug #27782)
29102         (mono_marshal_get_remoting_invoke): impl.
29103         (mono_delegate_begin_invoke): impl.
29104         (mono_mb_emit_save_args): impl.
29105         (mono_delegate_end_invoke): impl.
29106         (mono_marshal_get_delegate_begin_invoke):
29107         (mono_marshal_get_delegate_end_invoke):
29108         (mono_marshal_get_delegate_invoke): generate a special name for
29109         those methods (including the signature) and associate them whith
29110         the delegate class. 
29111
29112 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
29113
29114         * reflection.[ch]: 
29115         (mono_reflection_type_from_name): now it has a MonoImage parameter
29116         which is used as the default image to search the type in. If the image
29117         is NULL or getting the type from it fails, it defaults to corlib.
29118
29119         * icall.c: changed 1 call to mono_reflection_type_from_name to match
29120         new parameter.
29121
29122 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29123
29124         * reflection.c: update the parameter table index.
29125
29126 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29127
29128         * domain.c: don't include the mark byte in the string hash.
29129
29130 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29131
29132         * icall.cs: icall for Type.GetTypeCode ().
29133         * verify: a couple of fixes and disabled local initialization checks.
29134
29135 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
29136
29137         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
29138
29139         * debug-helpers.c (mono_method_full_name): print the type of the
29140         runtime wrapper
29141
29142         * metadata.c (mono_signature_hash): a hash function for signatures
29143         (mono_signature_hash): better hash algorithm
29144
29145         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
29146
29147         * debug-helpers.c (mono_method_full_name): this can now generate
29148         method names with signatures
29149
29150         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
29151         method dont have this pointers.
29152
29153 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
29154
29155         * reflection.c: fixup typebuilder tokens.
29156         * image.c: fix buglet.
29157         * marshal.h: remove whitespace.
29158         * metadata.h, metadata.c: reinstate code that was removed.
29159         * verify.c: handle catch directives and fix another couple of bugs.
29160
29161 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
29162
29163         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
29164         (mono_marshal_get_native_wrapper): make it comp. with the old code
29165         (mono_marshal_get_native_wrapper): support boolean
29166         (mono_marshal_get_managed_wrapper): support more types
29167
29168 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
29169
29170         * class.c (class_compute_field_layout): compute class->blittable attribute.
29171
29172 2002-07-09  Dick Porter  <dick@ximian.com>
29173
29174         * threads.c: Make the thread cleaning up cope with threads that
29175         call ExitThread()
29176
29177 2002-07-08  Radek Doulik  <rodo@ximian.com>
29178
29179         * reflection.c (method_encode_code): use non-translated values to
29180         compute finally_start, this fixes exception handling on ppc, yay!
29181
29182         * decimal.h (struct signscale): fix endianess
29183
29184 2002-07-07  Radek Doulik  <rodo@ximian.com>
29185
29186         * reflection.c: swap box_val and not val
29187
29188 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29189
29190         * reflection.c, reflection.h: handle full assembly info in type name.
29191         Handle Type arguments when loading custom attributes.
29192         * icall.c: updated to use new mono_reflection_type_from_name () method.
29193
29194 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29195
29196         * loader.c:
29197         (method_from_memberref): also print assembly name when method not found.
29198
29199 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29200
29201         * icall.c:
29202         (ves_icall_TypeGetProperties): fixed bug #27473. 
29203
29204 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29205
29206         * reflection.c: display image name and token when cannot find the
29207         .ctor for an attribute.
29208
29209 2002-07-05  Martin Baulig  <martin@gnome.org>
29210
29211         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29212
29213 2002-07-04  Dick Porter  <dick@ximian.com>
29214
29215         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
29216         compile on mingw.  This will cause mingw builds to not wait for
29217         subthreads to terminate after the main thread does.  I've lodged a
29218         bug with the mingw developers for them to wrap OpenThread().
29219
29220 2002-07-03  Dick Porter  <dick@ximian.com>
29221
29222         * threads.c: Store thread IDs instead of handles, because
29223         GetCurrentThread() returns a pseudohandle and therefore stores
29224         useless values.  mono_thread_cleanup() continues checking the
29225         array of threads until it is empty, to cope with subthreads
29226         spawning new threads after the main thread has finished.
29227
29228         * profiler.h:
29229         * profiler.c:
29230         * profiler-private.h: Pass the thread ID to thread profiler
29231         functions, instead of a handle
29232
29233 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29234
29235         * verify.c: fixes to make it more usable.
29236         * pedump.c: added --verify code to verify IL code in an assembly.
29237
29238 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29239
29240         * reflection.c: turn errors into warnings to allow compiling corlib.
29241
29242 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
29243
29244         * reflection.c: add special cases to compile corlib.
29245
29246 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29247
29248         * reflection.c: handle properties with only a set method.
29249
29250 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29251
29252         * opcodes.h: add enum with opcodes in opval order.
29253
29254 2002-07-01  Dick Porter  <dick@ximian.com>
29255         
29256         * object.h:
29257         * object.c (mono_runtime_run_main): Removed unneeded argument
29258
29259 2002-06-28  Martin Baulig  <martin@gnome.org>
29260
29261         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
29262
29263 2002-06-27  Dick Porter  <dick@ximian.com>
29264
29265         * threads.c: Store the handle in both the parent thread and in the
29266         subthread, to minimise the time between starting a new thread and
29267         storing its ID.
29268
29269 2002-06-26  Dick Porter  <dick@ximian.com>
29270
29271         * appdomain.c (mono_runtime_cleanup): Close the socket library
29272         after all the threads have finished, not before
29273
29274 2002-06-26  Martin Baulig  <martin@gnome.org>
29275
29276         * debug-symfile.c (mono_debug_find_source_location): Added
29277         `guint32 *line_number' argument.  If it's not NULL, store the line number
29278         there and return the file name without the line number.
29279
29280 2002-06-25  Dick Porter  <dick@ximian.com>
29281
29282         * icall.c:
29283         * process.h:
29284         * process.c: Process forking and other support functions
29285
29286 2002-06-25  Dick Porter  <dick@ximian.com>
29287
29288         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
29289         things dont happen when the image is closed.
29290         (mono_image_lookup_resource): Walk the resource section looking
29291         for a particular entry
29292
29293         * cil-coff.h: PE resource section decoding
29294
29295 2002-06-25  Dick Porter  <dick@ximian.com>
29296         
29297         * assembly.h:
29298         * assembly.c: 
29299         (mono_assembly_foreach): Accessor functions to walk the list of
29300         loaded assemblies
29301         (mono_assembly_set_main):
29302         (mono_assembly_get_main): Process methods need to know which
29303         assembly is the "main" one
29304
29305         * object.c (mono_runtime_run_main): Record the main assembly
29306
29307         * debug-helpers.c: Fix typo
29308
29309 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
29310
29311         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
29312         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
29313
29314 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29315
29316         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
29317
29318 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
29319
29320         * image.c (do_mono_image_open): Initialize reference count,
29321         otherwise we leak the MonoImage.
29322
29323 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29324
29325         * reflection.c: small tweak to handle self-hosting.
29326
29327 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
29328
29329         * reflection.c: fix type name parse code.
29330
29331 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29332
29333         * reflection.c: break out of the loop.
29334         * image.c: special case corlib.
29335
29336 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29337
29338         * reflection.c: add all the custom attrs at the end to ensure the
29339         ctors have been properly initialized when the attributes are defined
29340         in the current assembly.
29341
29342 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29343
29344         * reflection.c: handle correctly multiple-nested types.
29345
29346 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
29347
29348         * row-indexes.h: fix typos.
29349         * reflection.c: adjust for typos and fix method_def_or_ref
29350         encoding in MethodImpl table.
29351
29352 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29353
29354         * reflection.c: fix entry point patching (thanks Serge!).
29355
29356 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
29357
29358         * verify.c: add check for System.Exception
29359
29360 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
29361
29362         * image.c, class.c: minifix for code just c&p'ed.
29363         * reflection.c: warning fix.
29364         * object.h, loader.h, domain.c: load also StringBuilder.
29365
29366 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
29367
29368         * marshal.h, marshal.c: some support code to handle complex marshaling.
29369
29370 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29371
29372         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
29373         Better signatures with vtable error dump.
29374
29375 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
29376
29377         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
29378
29379 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
29380
29381         * icall.c (ves_icall_Type_GetField): impl.
29382
29383 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29384
29385         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
29386         to retrieve a marshal description blob for a field or param.
29387
29388 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
29389
29390         * reflection.h, reflection.c: change order of nested type emission
29391         to avoid table corruption. The NestedTypes table is sorted.
29392         * icall.c: change order of GetConstructor results to workaround mcs bug.
29393
29394 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29395
29396         * reflection.h, reflection.c: handle field and param marshal
29397         information.
29398
29399 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29400
29401         * icall.c, marshal.c marshal.h: more Marshal class implementation.
29402
29403 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29404
29405         * reflection.c: fix call convention.
29406
29407 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29408
29409         * reflection.h, reflection.c: mono_image_get_memberref_token()
29410         takes a type instead of a class, now. Added
29411         mono_image_get_array_token() to create tokens for the special
29412         multi-dim array methods.
29413
29414 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29415
29416         * assembly.c: handle modules (no assembly table). Split
29417         loading references in its own function.
29418         * class.c: handle moduleref resolution scope.
29419         * image.c, image.h: cache module name in image.
29420
29421 2002-06-07  Martin Baulig  <martin@gnome.org>
29422
29423         * reflection.c (mono_image_get_type_info): Only add a class layout entry
29424         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
29425
29426 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29427
29428         * icall.c: more signature fixes that used uint instead of int.
29429
29430 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29431
29432         * reflection.c: fixed signature of field refs.
29433
29434 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29435
29436         * class.c, reflection.c: handle typerefs of nested types
29437         (both on read and when writing files).
29438
29439 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
29440
29441         * icall.c: fix method signatures that tried to workaround the previous
29442         typo, d'oh!
29443
29444 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
29445
29446         * debug-helpers.c: fix typo.
29447
29448 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
29449
29450         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
29451         rewrote the PE/COFF writing code (our programs are understood by the
29452         ms runtime, now).
29453
29454 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
29455
29456         * gc.c, gc.h, icall.c: weakreference support.
29457
29458 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
29459
29460         * Makefile.am, mono-config.c: use $(sysconfdir).
29461
29462 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
29463
29464         * icall.c: changed default precision of Double.ToString() to 15.
29465         Fixed memory leak. Unified with Single.ToString.
29466
29467 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
29468
29469         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
29470
29471 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
29472
29473         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
29474         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
29475         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
29476         and myself.
29477
29478 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29479
29480         * debug-symfile.c, sysmath.c: yet more compilation fixes.
29481
29482 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
29483
29484         * reflection.c, socket-io.c: more compilation fixes.
29485
29486 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29487
29488         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
29489         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
29490         unicode.c: warning and compiler compatibility fixes.
29491
29492 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29493
29494         * class.h, metadata.c: fixed warnings/compilation errors.
29495
29496 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
29497
29498         * Makefile.am, mono-config.c, mono-config.h: configuration file
29499         support routines.
29500         * loader.c, loader.h: make Dll mapping configurable at runtime in the
29501         config file. Export methods to insert and lookup mappings.
29502
29503 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
29504
29505         * reflection.c: handle types and boxed objects in custom attr
29506         constructors.
29507
29508 2002-05-30  Martin Baulig  <martin@gnome.org>
29509
29510         * debug-symfile.c
29511         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
29512
29513 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
29514
29515         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
29516         to lookup the implmap row for a P/Invoke method.
29517         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
29518         P/Invoke method from the runtime on an as needed basis.
29519
29520 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
29521
29522         * metadata.c (mono_metadata_parse_signature): impl.
29523
29524 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29525
29526         * class.c: handle .pack directive.
29527
29528 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
29529
29530         * object.c: initialize static fields with RVA data.
29531
29532 2002-05-25  Martin Baulig  <martin@gnome.org>
29533
29534         * debug-symfile.c
29535         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
29536
29537 2002-05-24  Martin Baulig  <martin@gnome.org>
29538
29539         * debug-symfile.c
29540         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
29541         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
29542         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
29543
29544 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
29545
29546         * object.c: special case string ctros in invoke.
29547         * gc.c: silly whitespace changes.
29548
29549 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
29550
29551         * threadpool.[ch]: impl. a threadpool that can
29552         be used by mint and mono.
29553
29554 2002-05-22  Martin Baulig  <martin@gnome.org>
29555
29556         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
29557         The first argument is now a `MonoReflectionModuleBuilder *', the return
29558         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
29559         `methods' field to get the method builder.  The `token' argument is the
29560         unfixed token.
29561
29562         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
29563         invalid characters instead of g_assert_not_reached()ing.  This seems
29564         to be the behaviour of mscorlib.
29565
29566 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
29567
29568         * object.c (mono_runtime_invoke_array): applied patch from Rachel
29569         Hestilow to fix bug #25104
29570
29571 2002-05-21  Martin Baulig  <martin@gnome.org>
29572
29573         * debug-symfile.c (mono_debug_find_source_location): New function.
29574         Looks up an IL offset in the line number table and returns the source
29575         location as a string.
29576
29577 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29578
29579         * icall.c:
29580         (mono_double_ToStringImpl): changed %f by %g until we have something
29581         better.
29582
29583 2002-05-21  Nick Drochak  <ndrochak@gol.com>
29584
29585         * icall.c : Use different name for Math.Pow's icall.  Needed to check
29586         parameters first in C#.
29587
29588 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29589
29590         * icall.c, reflection.h: added icall to get info about an event.
29591
29592 2002-05-20  Radek Doulik  <rodo@ximian.com>
29593
29594         * object.c (mono_value_box): don't use memcpy for boxing on BIG
29595         endian
29596         (mono_value_box): don't use memcpy for small sizes on
29597         architectures with unaligned access
29598
29599 2002-05-20  Martin Baulig  <martin@gnome.org>
29600
29601         * reflection.c (mono_reflection_setup_internal_class): Don't crash
29602         if `tb->parent == NULL'.
29603         (mono_reflection_create_internal_class): New function.  This is
29604         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
29605         for enum types.
29606
29607         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
29608         New interncall.
29609
29610 2002-05-19  Martin Baulig  <martin@gnome.org>
29611
29612         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
29613         argument to get the length, don't default to the array length.
29614
29615 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
29616
29617         * assembly.c (mono_assembly_setrootdir): New function used to
29618         override the MONO_ASSEMBLIES directory.
29619
29620 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
29621
29622         * icall.c: ValueType_GetHashCode() initialize local var.
29623
29624 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
29625
29626         * reflection.c: sort custom attributes table.
29627
29628 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29629
29630         * reflection.c: support named args in custom attributes (write support).
29631
29632 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
29633
29634         * reflection.c: fix finally position calculation.
29635
29636 2002-05-15  Radek Doulik  <rodo@ximian.com>
29637
29638         * reflection.c: fixed endianess at many places
29639
29640         * icall.c (ves_icall_InitializeArray): comment out debug msg
29641
29642 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
29643
29644         * object.c (mono_unhandled_exception): new function to handle
29645         unhandled exceptions.
29646         (mono_unhandled_exception): call the UnhandledException event.
29647         (mono_runtime_delegate_invoke): impl.
29648
29649 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
29650
29651         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
29652         returns the RVA, not the direct pointer to the data. Handle the case
29653         when the class size is fixed.
29654
29655 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
29656
29657         * reflection.c: fix some endianess issues.
29658
29659 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
29660
29661         * object.c (mono_runtime_invoke): is now able to catch exceptions.
29662
29663         * threads.c (mono_thread_init): added a callback which is invoked
29664         at thread start.
29665
29666 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29667         
29668         * icall.c: make GetHashCode return non-negative values.
29669
29670 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
29671
29672         * object.c, icall.c, gc.c: revert to address-based hashcode.
29673
29674 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
29675
29676         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
29677
29678 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29679
29680         * icall.c, class.c: special case <Module>.
29681
29682 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
29683
29684         * icall.c: fix bug in GetNow().
29685
29686 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
29687
29688         * object.c (mono_runtime_class_init): make sure that we call all
29689         static class constructors.
29690
29691 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
29692
29693         * reflection.c: sort methodsemantics table.
29694
29695 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
29696
29697         * reflection.h, reflection.c: honour init locals setting.
29698
29699 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
29700
29701         * icall.c: copied Double ToStringImpl for Single ToStringImpl
29702
29703 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29704
29705         * reflection.c: support ContructorBuilders in attribute blob creation.
29706
29707 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29708
29709         * reflection.c: some changes to build a binary that can be run
29710         directly in windows.
29711
29712 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29713
29714         * loader.c: print a big message when an icall can't be found.
29715
29716 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29717
29718         * string-icalls.c: fix bug 24248.
29719
29720 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
29721
29722         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
29723         icall.c, reflection.h: separate assembly loading by pathname and by
29724         assembly name. Use the MONO_PATH env var to search for assemblies.
29725
29726 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29727
29728         * assembly.c, image.h: add some support for assemblies
29729         with multiple modules.
29730         * class.c, class.h: export mono_class_from_typeref().
29731         * loader.c: remove duplicated code and use mono_class_from_typeref(),
29732         instead.
29733
29734 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29735
29736         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
29737         documentation says (the ECMA one is correct).
29738
29739 2002-05-02  Dick Porter  <dick@ximian.com>
29740
29741         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
29742         Don't name the synchronisation mutex.
29743
29744 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
29745
29746         * rand.c
29747         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
29748         Make the prototypes match.
29749         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
29750         Same.
29751
29752         * icall.c
29753         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
29754         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
29755         all systems have tm.tm_zone, so use strftime() with %Z to print
29756         the timezone abreviation into a temp string.
29757
29758         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
29759         rather than mono_array_addr() on a MonoString on Big Endian
29760         machines.
29761
29762 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
29763
29764         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
29765         fix bug 24041
29766
29767 2002-04-30  Dick Porter  <dick@ximian.com>
29768
29769         * socket-io.c: Cope with SOCKET being an integer rather than a
29770         pointer now.
29771
29772         * threads.c: Added Thread_free_internal, to deal with thread
29773         handle cleanup.  Moved calls to handle_store() and handle_remove()
29774         to start_wrapper(), so each can only be called once.  Allocate
29775         synchronisation blocks with GC_malloc(), and use GC finalisation
29776         to close the handles.
29777
29778         * icall.c: added System.Threading.Thread::Thread_free_internal
29779
29780 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29781
29782         * icall.c: support Environment.Exit, CommandLineArgs().
29783
29784 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
29785
29786         * object.c, object.h: added mono_runtime_run_main () and
29787         mono_runtime_get_main_args () for use in System.Environment.
29788
29789 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
29790
29791         * gc.c: fix thinko, enable actual finalization since the jit is now
29792         fixed.
29793
29794 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
29795
29796         * gc.c, object.c: take into account that an object may be offset wrt the address
29797         returned by GC_malloc().
29798
29799 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
29800
29801         * image.c: handle files without entries in the assembly table (modules).
29802
29803 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
29804
29805         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
29806         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
29807         allowed to be null when it's System.Object class setup.
29808
29809 2002-04-27  Martin Baulig  <martin@gnome.org>
29810
29811         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
29812         if `tb->parent == NULL' rather than crashing.
29813
29814 2002-04-28  Nick Drochak  <ndrochak@gol.com>
29815
29816         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
29817         calling acos() where asin() should have been called.
29818
29819 2002-04-26  Martin Baulig  <martin@gnome.org>
29820
29821         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
29822         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
29823         there's a subdirectory called `System', but we don't want to read that
29824         subdirectory as an assembly.
29825
29826 2002-04-25  Martin Baulig  <martin@gnome.org>
29827
29828         * debug-symfile.c: Reflect latest MonoString changes.
29829
29830 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
29831
29832         * rand.c, rand.h: instance method icalls need to have an explicit
29833         this pointer as first argument in the C implementation.
29834
29835 2002-04-25  Nick Drochak <ndrochak@gol.com>
29836
29837         * icall.c: Fix typo in map for GetNonZeroBytes
29838
29839 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29840
29841         * string-icalls.c : String does now passes unit tests without any 
29842         errors, the following changes has been made:
29843         
29844         Implemented replace methods.
29845         Renaming of methods to (try) follow the standard.
29846         Fixed compare ordinal
29847         Made all memory allocated directly to function instead of via icall function.
29848         Small performance fix in is_in_array function
29849                         
29850  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
29851
29852         c (mono_string_Internal_ctor_charp_int_int):
29853         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
29854         sindex < 0, throw ArgumentOutOfRangeException instead of
29855         ArgumentNullException.
29856
29857         Added new check for length == 0, however
29858         I need to make it return String.Empty from the C code.
29859         
29860         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
29861         that calculate the length for us here.
29862         
29863         (mono_string_Internal_ctor_sbytep_int_int): Replaced
29864         mono_string_new_utf16 with mono_string_new, since value is utf8.
29865
29866 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
29867
29868         * object.c: register the object for finalization if needed.
29869         Allocate one more char in the string for the terminating 0 char.
29870
29871 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
29872
29873         * class.c, class.h, image.c: check if a type implemenst a destructor.
29874         Use the proper key for array class lookups.
29875         * icall.c: register the icalls in the System.GC class.
29876         * gc.c, gc.h: GC-related functions and icalls.
29877
29878 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29879
29880         * icall.c:
29881         * socket-io.c:
29882         * unicode.c: free some strings gotten from mono_string_to_utf8 and
29883         changed a couple of free () by g_free ().
29884
29885         * decimal.c: one-liner in the comments for decimal2string ().
29886
29887 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29888
29889         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
29890
29891 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
29892
29893         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
29894         * object.c (mono_runtime_invoke_array) : handle null in params
29895
29896 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29897
29898         * string-icalls.c: fixed bug in split (one off bug)
29899
29900 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29901
29902         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
29903         * icalls.c: added String::Equals as internal method
29904
29905 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
29906
29907         * threads.c: fixed bug in the double interlocked functions
29908
29909 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
29910
29911         * threads.c: implemented all of the new interlocked icalls.
29912         * string-icalls.c: fix a bug in insert.
29913         * icalls.c: added the icalls for interlocked, removed old string functions.
29914         
29915 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
29916
29917         * loader.c: fix off-by-one error when reading argument names.
29918
29919 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
29920
29921         * profiler.c: win32 counter implementation (untested).
29922         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
29923         (the latter needs testing and more complete impl. from win32 folks).
29924
29925 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
29926
29927         * object.c: mono_array_new_full workaround mono_array_class_get
29928         problem.
29929
29930 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29931
29932         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
29933         * object.h (mono_string_chars): Changed casting type.
29934
29935 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29936
29937         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
29938                            method signatures to use gunichar2 instead of gint16.
29939
29940 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
29941
29942         * object.h, object.c: domain-specific versions of mono_object_new and
29943         mono_array_new.
29944
29945 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
29946
29947         * object.c: changed String layout
29948
29949         * string-icalls.c (mono_string_Internal_ctor_chara): added
29950         internal string constructors.
29951
29952 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
29953
29954         * threads.c: pass 'this' to the thread start routine.
29955
29956 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29957
29958         * string-icalls.c: fix IndexOf and LastIndexOf. Now
29959         InternalCompareStr don't call twice mono_string_cmp_char for the last
29960         character. Improved performance in mono_string_cmp_char.
29961
29962 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
29963
29964         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
29965         code into its own library: libmonoruntime.
29966
29967 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
29968
29969         * object.h, object.c: changed array format so that szarrays do not
29970         require a bounds structure.
29971         * icall.c, appdomain.c: support for new szarray format.
29972
29973 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
29974
29975         * metadata.c: compare also the retuns type when comparing signatures:
29976         we didn't do this as an optimization since really overloaded methods
29977         must differ also in the arguments, but this doesn't work with
29978         low-level IL code (or when using explicit conversion operators: see
29979         bug#23498 for an example).
29980
29981 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
29982
29983         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
29984
29985 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
29986
29987         * icall.c: make MonoType::GetElementType its own icall.
29988
29989 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
29990
29991         * icall.c: remove MonoMethod_get_Name().
29992         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
29993         object.
29994
29995 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
29996
29997         * string-icalls.c: optimized a few methods.
29998
29999 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
30000
30001         * icall.c: added all new string internal calls
30002         * string-icalls.c: added, new string internal call implementation.
30003         * object.c: added mono_string_new_size for allocating a string a size
30004
30005 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
30006
30007         * object.c (mono_object_isinst): use the same code as in the
30008         optimized x86 version.
30009
30010 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
30011
30012         * profiler.c: TSC-based timer code (faster and more accurate).
30013         Not hooked up in configure, yet (set USE_X86TSC to 1).
30014
30015 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
30016
30017         * profiler.c, profiler.h: track time spent compiling methods.
30018         * threads.c: track thread creation/destruction.
30019
30020 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
30021
30022         * profiler.c, profiler.h, profiler-private.h: profiling interface
30023         and sample implementation. Moved here so that it can be used also by
30024         the jit.
30025
30026 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
30027
30028         * reflection.c, reflection.h: keep types and other handles separate in
30029         the hash tables for referred tokens. Add guid for modules.
30030
30031 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
30032
30033         * assembly.c: fix bugs found with valgrind.
30034         * metadata.h, metadata.c: added mono_metadata_guid_heap().
30035
30036 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
30037
30038         * threads: added icall support for getting current domain for
30039                    the thread.
30040  
30041 2002-04-13  Martin Baulig  <martin@gnome.org>
30042
30043         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
30044         (MonoDebugVarInfo): Added `index' field for register based addresses.
30045         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
30046         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
30047         `MonoDebugVarInfo *params' and `guint32 this_offset' with
30048         `MonoDebugVarInfo *this_var'.
30049
30050         * debug-symfile.c (relocate_variable): New static function to write
30051         a location description for a local variable or method parameter.
30052
30053 2002-04-12  Martin Baulig  <martin@gnome.org>
30054
30055         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
30056         stack offset and begin/end scope address of a local variable.
30057         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
30058         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
30059         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
30060
30061         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
30062         Added new relocation types for start/end scope of a local variable.
30063
30064 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
30065
30066         * object.h: add mono_object_domain() macro.
30067         * reflection.c: handle typespecs.
30068         * icall.c: MonoMethod::get_Name() implementation.
30069
30070 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30071
30072         * icall.c: String::GetHashCode() icall implementation.
30073
30074 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30075
30076         * icall.c: String::IndexOfAny icall.
30077         * object.c, object.h: make array->max_length more useful.
30078         Intrduced mono_object_class() and mono_string_length() macros.
30079
30080 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30081
30082         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
30083         instead of g_unichar_isdigit.
30084
30085 2002-04-11  Nick Drochak  <ndrochak@gol.com>
30086
30087         * icall.c: Implement a simple Double.ToString().
30088
30089 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30090
30091         * appdomain.h: only io-layer.h is supposed to be included.
30092         * icall.c: explicitly import environ. Fix warning.
30093
30094 2002-04-10  Nick Drochak  <ndrochak@gol.com>
30095
30096         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
30097                 return true even if it's not Daylight Savings time.
30098                 Only return false for the case where the function isn't
30099                 implemented for a plaform (read Windows).
30100
30101 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30102
30103         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
30104         data with a mutex.
30105
30106 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
30107
30108         * mempool.c (mono_mempool_alloc): only use g_malloc when
30109         absolutely necessary.
30110
30111 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30112
30113         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
30114
30115         * class.c (mono_class_vtable): use domain mempool to allocate vtable
30116         (mono_class_proxy_vtable): use domain mempool
30117
30118 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
30119
30120         * appdomain.h, appdomain.c: split initialization that requires the
30121         execution engine support into mono_runtime_init().
30122
30123 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
30124
30125         * class.c (mono_class_init): don't include vtable inside MonoClass
30126         to save some memory, gather some statistics.
30127         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
30128
30129 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30130
30131         * icall.c: internalcall implementation for ValueType.Equals().
30132
30133 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
30134
30135         * object.c (mono_message_init): moved 
30136         (mono_runtime_exec_main): new arch. independent impl.
30137         (mono_runtime_invoke_array): new method - like
30138         mono_runtime_invoke, but you can pass an array of objects.
30139         (mono_remoting_invoke): new arch. independent impl.
30140         (mono_message_invoke): new arch. independent impl.
30141         (mono_runtime_class_init): new arch. independent impl.
30142         (mono_runtime_object_init): new arch. independent impl.
30143
30144 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
30145
30146         * metadata.c, object.c, reflection.c: documented the exported
30147         functions.
30148
30149 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30150
30151         * icall.c: simpler code to pass the assembly builder data to corlib.
30152         Implement GetNestedTypes() internalcall.
30153
30154 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
30155
30156         * class.c: warn if a type can't be loaded.
30157
30158 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
30159
30160         * image.h: typedef MonoImageOpenStatus
30161         * types.h: removed unused file
30162         
30163 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
30164
30165         * icall.c: Enum_ToObject accepts enum value arguments.
30166
30167 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
30168
30169         * class.c: move initialization of properties, events and nested
30170         classes, so that they happen for interfaces, too.
30171
30172 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
30173
30174         * icall.c: cleanup some ugly casts in Array_SetValue*.
30175
30176 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30177
30178         * icall.c: the values array fro enums is of the correct type, now.
30179         Implement (correctly) getFullName instead of assQualifiedName for
30180         MonoType.
30181         * reflection.h, reflection.c: added mono_type_get_name ().
30182
30183 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
30184
30185         * assembly.c, image.h: for each MonoImage, record from wich assembly
30186         it was loaded.
30187         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
30188         Make Type.Assembly work.
30189
30190 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
30191
30192         * debug-symfile.h: use char* instead of gpointer to avoid
30193         unnecessary casts.
30194
30195         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
30196
30197         * icall.c (ves_icall_InternalExecute): impl. FielSetter
30198         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
30199
30200 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
30201
30202         * icall.c (mono_message_init): impl. (code cleanup)
30203         (ves_icall_InternalExecute): impl. FieldGetter
30204
30205         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
30206         defined we call all (non-static)methods through the vtable. 
30207
30208 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
30209
30210         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
30211         finalizer even though the memory is still referenced (and the chunk of
30212         memory is not freed).
30213
30214 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
30215
30216         * assembly.c: fix brokeness.
30217
30218 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
30219
30220         * class.c: kill some warnings. Check explicit interface method
30221         implementation also without considering the namespace.
30222         Load also literal strings in static class data.
30223
30224 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
30225
30226         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
30227         (default_assembly_name_resolver): Make the resolver take the
30228         "base" directory where the assembly was originally defined, so we
30229         can load DLLs that are in the same directory as the assembly that
30230         is being referenced.
30231
30232 2002-03-28  Dick Porter  <dick@ximian.com>
30233
30234         * file-io.h: 
30235         * file-io.c:
30236         * socket-io.c: 
30237         * unicode.h: 
30238         * unicode.c: Warning cleanups
30239
30240 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
30241
30242         * object.h, reflection.h: use the correct type instead of MonoObject.
30243
30244 2002-03-28  Martin Baulig  <martin@gnome.org>
30245
30246         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
30247         (mono_debug_update_symbol_file): Initialize classes if necessary.
30248
30249 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30250
30251         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
30252         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
30253
30254 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
30255
30256         * assembly.h: fix function prototype.
30257         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
30258         * mono-endian.h: use const cast.
30259
30260 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30261
30262         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
30263
30264 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30265
30266         * loader.c: don't assert when a typeref can't be loaded, give
30267         a chance to the runtime to trow an exception instead.
30268         * loader.h: fix warning.
30269
30270 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
30271
30272         * class.c (mono_class_proxy_vtable): added proxy support
30273
30274 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
30275
30276         * icall.c: removed last of PAL calls, added System.Environment
30277         * file-io.h, file-io.c: MonoIO implementation
30278         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
30279
30280 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30281
30282         * appdomain.c: do not use the byte marker in ldstr table lookup.
30283         * debug-helpers.c: allow two ':' to separate class and method name.
30284         * object.c: allocate arrays bounds with the GC, too.
30285         * verify: add a few more checks.
30286
30287 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
30288
30289         * reflection.c: output also literal strings. Allocate parameter data
30290         with GC_malloc() (thanks, Martin, for catching this!).
30291
30292 2002-03-26  Martin Baulig  <martin@gnome.org>
30293
30294         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
30295         include the `this' offset in the `param_offsets'.
30296
30297 2002-03-25  Martin Baulig  <martin@gnome.org>
30298
30299         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
30300         mono_debug_get_class() function to get the classes. Added new
30301         relocation types for arrays and strings.
30302         (mono_debug_get_class): New static function to search in all
30303         referenced assemblies for a metadata token.
30304
30305         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
30306
30307 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30308
30309         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
30310         hold gc-allocated objects. Make the string heap a stream like the
30311         others. Removed duplicated code when writing stream info.
30312         Added asserts to catch possible buffer overflows. Set the sorted map
30313         for tables that need sorting. Added some documentation.
30314
30315 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
30316
30317         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
30318         for interned strings and vtables.
30319
30320 2002-03-24  Martin Baulig  <martin@gnome.org>
30321
30322         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
30323         it in the array since it was created with g_slist_prepend().
30324
30325 2002-03-24  Martin Baulig  <martin@gnome.org>
30326
30327         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
30328         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
30329         (mono_debug_method_from_token): Renamed to
30330         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
30331         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
30332
30333         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
30334         relocation types.
30335
30336         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
30337
30338 2002-03-24  Martin Baulig  <martin@gnome.org>
30339
30340         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
30341         (mono_debug_method_from_token): New func.
30342
30343         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
30344         New interncall, calls mono_debug_local_type_from_signature().
30345         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
30346         calls mono_debug_method_from_token().
30347
30348 2002-03-23  Martin Baulig  <martin@gnome.org>
30349
30350         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
30351         specifies the number of bytes to be converted, not the array size.
30352         Return the number of chars, not the number of bytes.
30353         (ves_icall_iconv_get_chars): The `byteCount' argument
30354         specifies the number of bytes to be converted, not the array size.
30355
30356 2002-03-23  Martin Baulig  <martin@gnome.org>
30357
30358         * reflection.h (MonoReflectionSigHelper): New type.
30359
30360         * reflection.c (mono_reflection_sighelper_get_signature_local),
30361         (mono_reflection_sighelper_get_signature_local): New functions.
30362
30363         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
30364         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
30365         interncalls.
30366
30367 2002-03-23  Martin Baulig  <martin@gnome.org>
30368
30369         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
30370         is_writeable is set.
30371         (mono_raw_buffer_update): New function to write the modified map
30372         back to disk.
30373
30374         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
30375
30376         * debug-symfile.c (mono_debug_update_symbol_file): Call
30377         mono_raw_buffer_update() when done writing.
30378
30379 2002-03-23  Martin Baulig  <martin@gnome.org>
30380
30381         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
30382
30383         * debug-symfile.c: Added support for arguments and local variables.
30384
30385 2002-03-23  Dick Porter  <dick@ximian.com>
30386
30387         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
30388         protected by ifdefs, hence breaking the w32 build.
30389
30390 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30391
30392         * object.c: implement is_interned() the right way.
30393
30394 2002-03-21  Martin Baulig  <martin@gnome.org>
30395
30396         * debug-symfile.[ch]: New files to handle debugging information
30397         files. There's also support to dynamically update these symbol
30398         files to include machine dependent information.
30399
30400 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
30401
30402         * threads.c (mono_thread_create): new function to create thread
30403         from C
30404
30405 2002-03-20  Martin Baulig  <martin@gnome.org>
30406
30407         * icall.c (ves_icall_InternalInvoke): Create a new object if the
30408         method is a constructor.
30409         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
30410         points to ves_icall_InternalInvoke().
30411
30412 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
30413
30414         * file-io.c: Flush shouldn't throw exceptions.
30415
30416 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
30417
30418         * file-io.c: FileStream flush support; FileSetLength now
30419         restores file pointer.
30420
30421 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30422
30423         * class.c: set image for pointer classes.
30424
30425 2002/03/19  Nick Drochak <ndrochak@gol.com>
30426
30427         * sysmath.c: Forgot one.
30428
30429 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
30430
30431         * sysmath.c: Avoid redefining existing names.
30432
30433 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
30434
30435         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
30436         handled by runtime as icall rather than dllimport from libm.so
30437         * file-io.c, file-io.h: fixed handle argument type.
30438
30439 2002-03-18  Dick Porter  <dick@ximian.com>
30440
30441         * reflection.c (mono_image_get_type_info): rename interface to
30442         iface, because of "#define interface struct" on windows.
30443
30444 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
30445
30446         * class.c, class.h: rename and export mono_ptr_class_get().
30447         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
30448         * reflection.c, reflection.h, icall.c: better/saner type name
30449         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
30450         method signatures.
30451
30452 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
30453
30454         * class.c (mono_class_init): removed hardcoded GHC_SLOT
30455
30456         * icall.c (ves_icall_InternalInvoke): impl.
30457
30458 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30459
30460         * reflection.c: output the interface map table, too.
30461
30462 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30463
30464         * class.c (class_compute_field_layout): separate computation of 
30465         static field layout
30466
30467 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
30468
30469         * icall.c: added System.Buffer support.
30470         * file-io.c: moved file icalls from PAL to FileStream.
30471
30472 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
30473
30474         * icall.c (ves_icall_System_Object_GetHashCode): impl.
30475
30476 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
30477
30478         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
30479
30480 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30481
30482         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
30483
30484 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30485
30486         * debug-helpers.{c,h}: moved here from monograph some useful functions
30487         to locate a method by name/signature in a class or image. Included
30488         also a small and flexible IL disassembler.
30489
30490 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30491
30492         * reflection.c: fixup tokens in methods with small header size, too.
30493
30494 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
30495
30496         * object.c (mono_string_to_utf8): remove assert(!error), instead
30497         print a warning. 
30498
30499 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
30500
30501         * icall.c: update to the new mono_Array_class_get interface.
30502
30503 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30504
30505         * appdomain.c, object.c: Boehm-GC enable.
30506         * icall.c: make get_data_chunk() support split data requests.
30507         Ensure a class is initialized in more cases. Return only the first
30508         property found in GetProperties() or the compiler gets confused. 
30509         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
30510         * reflection.h, reflection.c: add fixup mechanism for field and method
30511         tokens. Initialize assembly->typeref in a single place. Output
30512         properties after events. Support custom attributes for events, too.
30513         Typo fix for paramter custom attrs.
30514
30515 2002-03-07  Martin Baulig  <martin@gnome.org>
30516
30517         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
30518
30519 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
30520
30521         * class.c (mono_array_class_get): fix. for multi. dim. arrays
30522
30523 2002-03-06  Martin Baulig  <martin@gnome.org>
30524
30525         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
30526         non-zero lower bounds. See testcases #F10-#F13.
30527
30528 2002-03-05  Martin Baulig  <martin@gnome.org>
30529
30530         * exception.c (mono_get_exception_argument_out_of_range): New exception.
30531
30532         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
30533         ves_icall_System_Array_GetValue(), only calculate the absolute array position
30534         here.
30535         (ves_icall_System_Array_SetValue): Likewise.
30536         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
30537         as argument and does the actual work. This function is used when copying a
30538         multi-dimensional array.
30539         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
30540         now do all the widening conversions of value types.
30541         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
30542
30543 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30544
30545         * class.c: remove some magic numbers and use the smbolic names,
30546         instead. Added init_events() to load event info at class init time.
30547         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
30548         and mono_metadata_methods_from_event().
30549         * reflection.h, reflection.c: added support for writing out the evnets
30550         related information.
30551
30552 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
30553
30554         * reflection.h, icall.c: use a different method (GetInterfaces)
30555         to gather interface info and add isbyref, isprimitive and
30556         ispointer to the ves_icall_get_type_info() return value.
30557
30558 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
30559
30560         * class.h: stared adding support for events.
30561         * icall.c: split find_members implementation. Added debug icall to get
30562         the address of an object.
30563         * reflection.c: handle TypeBuilders in mono_type_get_object().
30564
30565 2002-03-01  Martin Baulig  <martin@gnome.org>
30566
30567         * icall.c (ves_icall_System_Array_GetLength): This must throw an
30568         ArgumentOutOfRangeException(), not an ArgumentException().
30569         (ves_icall_System_Array_GetLowerBound): Likewise.
30570         (ves_icall_System_Array_GetValue): Improved argument checking.
30571         (ves_icall_System_Array_SetValue): Improved argument checking.
30572
30573 2002-03-01  Martin Baulig  <martin@gnome.org>
30574
30575         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
30576         called with invalid arguments rather than just dying with g_assert().
30577         (ves_icall_System_Array_SetValue): Likewise.
30578         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
30579         raise a NotImplementedException instead.
30580         (ves_icall_System_Array_GetLength): Added argument checking.
30581         (ves_icall_System_Array_GetLowerBound): Added argument checking.
30582
30583 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
30584
30585         * object.h (mono_assert): new macros mono_assert and
30586         mono_assert_not_reached
30587
30588 2002-02-28  Martin Baulig  <martin@gnome.org>
30589
30590         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
30591         and "System::String::IsInterned" to "System::String::_IsInterned".
30592
30593 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
30594
30595         * icall.c: remove hacks for typebuilder. Added icall to create a
30596         modified type from a tybebuilder.
30597         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
30598         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
30599         to create a backing MonoClass for a TypeBuilder.
30600
30601 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30602
30603         * class.c, class.h: more refactoring of class init.
30604         Export mono_class_setup_mono_type() and mono_class_setup_parent().
30605
30606 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
30607
30608         * marshal.c, marshal.h: start of marshaling interface.
30609
30610 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
30611
30612         * icall.c: fix order in assembly qualified name icall.
30613
30614 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
30615
30616         * class.c: do not free str, since we store it in the hash table.
30617         * reflection.h: add label field to MonoILExceptionInfo.
30618         * reflection.c: handle references to more than one assembly. Handle
30619         case when there isn't a module created in the assembly.
30620
30621 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
30622
30623         * class.c: Fix typo. Start refactoring of class init code.
30624
30625 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
30626
30627         * appdomain.c: exit with 1 on error.
30628         * class.c: we already have the name in MonoClassField.
30629         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
30630         MonoStreamHeader instead of an offset of image->raw_metadata.
30631
30632 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
30633
30634         * appdomain.c (mono_init): Be even more descriptive about the error.
30635
30636 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
30637
30638         * appdomain.c: give the user an informative message when corlib can't
30639         be loaded.
30640
30641 2002-02-26  Martin Baulig  <martin@gnome.org>
30642
30643         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
30644         New icall to get the time zone data.
30645
30646 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30647
30648         * reflection.c: set virtual and raw size of section correctly.
30649         * threads.c: transfer domain information to newly created threads.
30650
30651 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
30652
30653         * class.c: when instancing a class in a domain, load the default
30654         vaules for static fields from the constant table. Fix System.Enum to
30655         not be an enum.
30656         * icall.c: implement Object::GetType() internalcall. Implemented
30657         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
30658         Fixed checking of binding flags in find_members().
30659         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
30660         * reflection.c: handle enumerations when writing to the constant
30661         table. Use a different object cache for types.
30662
30663
30664 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
30665
30666         * object.c (mono_object_isinst): fix for arrays
30667
30668         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
30669
30670 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
30671
30672         * object.c: don't use mprotect ()  and fix intern pool hash table
30673         lookup for big endian systems.
30674
30675 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30676
30677         * icall.c: change type_is_subtype_of () signature.
30678
30679 2002-02-21  Mark Crichton  <crichton@gimp.org>
30680
30681         * rand.c, rand.h: Added random number generator for
30682         System.Security.Cryptography classes.
30683
30684         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
30685
30686         * icall.c: Added System.Security.Cryptography calls.
30687
30688 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30689
30690         * class.c, icall.c, metadata.c: better support for pointer types.
30691         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
30692         * reflection.c: Add support for getting custom attrs for properties
30693         and simplify some code.
30694
30695 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
30696
30697         * icall.c: change getToken () and add custom attribute GetBlob()helper
30698         method.
30699         * reflection.h: add custom attrs array to the reflection builder structures.
30700         * reflection.c: encode and emit custom attributes for all the relevant
30701         reflection objects. Cache fieldref and methodref tokens. Change
30702         mono_image_create_token() interface to take a MonoDynamicAssembly.
30703         More complete custom attributes decoder. Load custom attributes for
30704         Assembly, Field, Method and Constructor objects, too. Make the
30705         returned array an Attribute[] one, not object[]. Added
30706         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
30707         custom attribute constructor.
30708
30709 2002-02-20  Dick Porter  <dick@ximian.com>
30710
30711         * icall.c:
30712         * rawbuffer.c:
30713         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
30714         problem code out for now).
30715
30716 2002-02-19  Radek Doulik  <rodo@ximian.com>
30717
30718         * object.c (mono_ldstr): use hash table to avoid multiple swapping
30719
30720 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
30721
30722         * icall.c: register the GetCustomAttributes method.
30723         * object.c, object.h: add mono_string_new_len ().
30724         * reflection.h, reflection.c: added mono_runtime_invoke(),
30725         mono_install_runtime_invoke(). Added
30726         mono_reflection_get_custom_attrs () to load custom attributes and
30727         create the attribute objects.
30728
30729 2002-02-19  Dick Porter  <dick@ximian.com>
30730         * threads-dummy-types.c:
30731         * threads-dummy-types.h:
30732         * threads-dummy.c:
30733         * threads-dummy.h:
30734         * threads-pthread-types.c:
30735         * threads-pthread-types.h:
30736         * threads-pthread.c:
30737         * threads-pthread.h:  Deleted obsolete files
30738
30739 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
30740
30741         * class.c (mono_class_vtable): runtime init the class when we
30742         allocate static class data.
30743
30744         * icall.c (ves_icall_System_Array_SetValue): check for null values.
30745
30746         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
30747         and String - but we will need generic marshalling support in the
30748         future. 
30749         (mono_init): set the domain name in a ms compatible way
30750
30751         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
30752         String[].
30753
30754 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
30755
30756         * object.c (mono_array_clone): use alloca() instead of g_malloc  
30757         for sizes
30758
30759         * appdomain.c (mono_domain_unload): impl.
30760
30761 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30762
30763         * appdomain.c, object.c: fix intern pool implementation.
30764         * class.c: fix alignment code.
30765
30766 2002-02-16  Radek Doulik  <rodo@ximian.com>
30767
30768         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
30769         and s2 > s1, just copy lower bytes to be compatible with little
30770         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
30771         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
30772
30773         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
30774         force big_endian to be 1 for big endian machines 
30775         (ves_icall_iconv_new_decoder): ditto
30776
30777 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
30778
30779         * socket-io.c (convert_sockopt_level_and_name): If the system
30780         doesn't define SOL_IP or SOL_TCP, get them by hand using
30781         getprotobyname() and caching the values (because this could be a
30782         slow operation).
30783         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
30784         Use the appropriate struct when the system does support it. Ie,
30785         not all systems have struct ip_mreqn so use struct ip_mreq when
30786         appropriate.
30787
30788 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
30789
30790         * reflection.c: handle finally clauses.
30791
30792 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
30793
30794         * socket-io.c: use g_snprintf() instead of snprintf.
30795
30796 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30797
30798         * reflection.c (mono_param_get_objects): Cast second argument to
30799         mono_method_get_param_names to a const char** to silence the
30800         compiler warning.
30801
30802         * appdomain.c (mono_domain_assembly_open): Put parens around the
30803         truth statement in the for-loop.
30804
30805         * unicode.c (iconv_convert): Got rid of a compiler warning about
30806         int i being unused when the system has a new iconv.
30807         (iconv_get_length): Same.
30808
30809         * image.c (load_class_names): Cast the second argument to
30810         g_hash_table_insert() to char* to hush compiler warnings about the
30811         arg being a const.
30812         (mono_image_open): Same here.
30813
30814         * socket-io.c: Don't conditionally include sys/filio.h or
30815         sys/sockio.h here anymore since we now get them from
30816         io-layer/io-layer.h
30817         (inet_pton): If the system doesn't support inet_aton, implement
30818         using inet_addr and also #define INADDR_NONE if it isn't defined
30819         by the system.
30820
30821 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30822
30823         * metadata.c, metadata.h: added function to get packing and size info
30824         of a typedef.
30825         * reflection.h, reflection.c: handle field RVA data. Save info about
30826         the table layout if needed. Assign typedef indexes to all the types
30827         before dumping the info about them to avoid forward reference problems.
30828
30829 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
30830
30831         * socket-io.c (convert_sockopt_level_and_name): ifdef
30832         SO_ACCEPTCONN because it is not defined on my system (old debian)
30833
30834 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30835
30836         * opcode.c: use stddef.h to get NULL.
30837
30838 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
30839
30840         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
30841         for FIONBIO, FIONREAD and SIOCATMARK.
30842         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
30843         define INADDR_NONE and besides, inet_addr() is deprecated and
30844         should not be used. Use inet_pton() instead - it also has the
30845         added bonus that it can easily handle IPv6 addresses as well.
30846         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
30847
30848 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
30849
30850         * decimal.c: remove _MSC_VER conditional.
30851
30852 2002-02-13  Dick Porter  <dick@ximian.com>
30853
30854         * socket-io.c: 
30855         * icall.c: Internal calls for Blocking, Select, Shutdown,
30856         GetSocketOption and SetSocketOption
30857
30858 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30859
30860         * assembly.cs: better resolver: use it instead of some kludgy
30861         code.
30862
30863 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
30864
30865         * reflection.c: the best way to speed-up the compiler is to avoid
30866         infinite loops.
30867
30868 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
30869
30870         * class.c (mono_class_vtable): changed the object layout
30871         (obj->vtable->class). 
30872         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
30873
30874 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30875
30876         * assembly.c: look for assemblies in the assembly dir, too.
30877
30878 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30879
30880         * class.c: fix thinko in mono_class_from_type().
30881
30882 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30883
30884         * exception.h, exception.c: added TypeLoadException.
30885         * object.h, object.c: added mono_array_clone ().
30886         * icall.c: handle throwOnError in AssemblyGetType().
30887         Added Array.Clone().
30888         * opcode.h, opcode.c: use a single value for the opcode val.
30889         Compile fix for non-gcc compilers.
30890
30891 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
30892
30893         * opcodes.c, opcodes.h: export interesting info about opcodes.
30894
30895 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
30896
30897         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
30898         icalls. 
30899
30900         * class.c (class_compute_field_layout): set element_class for enums
30901         (mono_class_create_from_typedef): set element_class for normal classes
30902
30903         * icall.c (ves_icall_System_Enum_get_value): impl.
30904
30905         * class.c (mono_class_create_from_typedef): do not set valuetype
30906         flag for System.ValueType and System.Enum
30907
30908 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
30909
30910         * unicode.c (iconv_convert): fix big endian problem.
30911
30912 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30913
30914         * class.c: add asserts if we are ever going to scribble over memory.
30915         * socket-io.c: not all systems have AF_IRDA defined.
30916
30917 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
30918
30919         * class.c (class_compute_field_layout): do not consider static
30920         fields to compute alignment
30921
30922 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
30923
30924         * appdomain.c (mono_appdomain_get): impl.
30925         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
30926
30927 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
30928
30929         * icall.c: ignore "file://" prefix when loading an assembly.
30930
30931 2002-01-23  Dick Porter  <dick@ximian.com>
30932
30933         * socket-io.c:
30934         * icall.c:
30935         * Makefile.am: Added socket support
30936
30937 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30938
30939         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
30940         code back.  This should return the assemblies that are loaded by
30941         the runtime on behalf of an application domain. 
30942
30943         The current implementation is still broken, it just returns every
30944         assembly loaded, but until we get real applications domain this
30945         will do.
30946
30947 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
30948
30949         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
30950         AppDomain object.
30951
30952 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
30953
30954         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
30955         the mono_class_from_name lookup.
30956         (ves_icall_get_parameter_info): ditto.
30957         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
30958         method.
30959         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
30960
30961 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30962
30963         * class.c: load also nested classes on class init.
30964         System.ValueType instance methods gets passed boxed
30965         values, unless methods in derived classed that get a pointer to the
30966         data.
30967         * icall.c: use better name parsing code in GetType().
30968         * image.c, image.h: add mono_image_loaded ().
30969         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
30970         * reflection.c, reflection.h: added mono_reflection_parse_type().
30971
30972 2002-01-22  Veronica De Santis <veron78@interfree.it>
30973
30974         * icall.c : Added mapping of internal calls for Manual and Auto reset events
30975         * threads.c : Added the implementation of internal calls for events
30976         * threads.h : Added prototypes of internal calls for events
30977         
30978 2002-01-21  Radek Doulik  <rodo@ximian.com>
30979
30980         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
30981
30982 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
30983
30984         * class.c (mono_class_init): set min_align to 1 (instead of 0)
30985         (mono_class_value_size): use min_align
30986
30987 2002-01-20  Dick Porter  <dick@ximian.com>
30988
30989         * threads.h:
30990         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
30991         so it compiles on w32.
30992
30993 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
30994
30995         * metadata.c (mono_type_stack_size): impl.
30996
30997         * class.c (mono_class_get_field): impl. memberref token
30998
30999 2002-01-16 Veronica De Santis <veron78@@interfree.it>
31000
31001         * icall.h : Added the internal calls mapping for CreateMutex_internal
31002                     and ReleaseMutex_internal.
31003         * threads.h : Added the prototype of mutexes internal calls.
31004         * threads.c : Added the implementations of mutexes internal calls.
31005
31006 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
31007
31008         * metaparse.h: removed unused file.
31009         * reflection.c, reflection.h: added stream_data_align () function 
31010         to align data in streams and keep stream aligned. Add support for
31011         exception support in method headers.
31012
31013 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
31014
31015         * unicode.c: make iconv_convert () return the number of bytess written
31016         in the output buffer.
31017
31018 2002-01-15  Dick Porter  <dick@ximian.com>
31019         * threads.c: Make the runtime's idea of infinite timeouts coincide
31020         with the class library's
31021
31022         Fix a particularly egregious bug in mono_thread_cleanup(). That
31023         code was so utterly bogus it must have been written on a Monday.
31024
31025 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
31026
31027         * reflection.h: add subtypes field to TypeBuilder.
31028         * reflection.c: encode constants for literal fields.
31029         Handle subtypes. Fix user string token (and add a zero byte)
31030         at the end.
31031         
31032 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
31033
31034         * class.c (mono_class_init): bug fix: assign slot numbers for
31035         abstract methods.
31036
31037 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
31038
31039         * reflection.c: don't try to output a code RVA for abstract methods.
31040         Small fixes for method header format. Output parameter info to the
31041         ParamDef table. Save method overriding info to MethodImpl table.
31042         Fix property support. Allow typedef.extends to be a type in the
31043         building assembly.
31044         * verify.c: fix off-by-one error.
31045
31046 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
31047
31048         * class.c: fix mono_class_from_mono_type () for szarray types.
31049         Remove unused cache check in mono_class_from_type_spec().
31050         * icall.c: *type_from_name () functions handle simple arrays and byref.
31051         * reflection.c: handle byref and szarray types. Handle methods without
31052         body (gets P/Invoke compilation working). Handle types and fields in
31053         get_token ().
31054         * reflection.h: add rank to MonoTypeInfo.
31055
31056 2002-01-10  Dick Porter  <dick@ximian.com>
31057
31058         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
31059         internal calls
31060
31061 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
31062
31063         * icall.c: initialize class in type_from_handle ().
31064         Loop also in parent classes for get_method ().
31065         * reflection.c: properly encode class and valuetype types.
31066         Start on encoding TypeBuilder types. Handle fieldrefs.
31067         Use correct length when registering a user string.
31068         Handle ConstructorBuilder and MonoMethod in get_token ().
31069         Make mono_type_get_object () aware of cached types.
31070         * object.c: back out change to mono_string_new ().
31071
31072 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
31073         * object.c: mono_string_new should return a NULL when the string 
31074         passed in is NULL -- not try to deference it.
31075         
31076 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
31077
31078         * icall.c: hack to make IsSubType work for TypeBuilders.
31079         * reflection.c: emit constructors before methods.
31080         Retrieve param names in mono_param_get_objects().
31081
31082 2002/01/05  Nick Drochak  <ndrochak@gol.com>
31083
31084         * Makefile.am: fix list of headers and sources so automake 1.5
31085         doesn't complain. Removed \# at end of list.
31086
31087 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
31088
31089         * reflection.c: get token for a method ref. Set return type of
31090         constructor to void.
31091         * loader.c: debug message.
31092         * class.c: typo fix.
31093
31094 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
31095
31096         * icall.c: fix array init with rank > 1. FindMembers
31097         loops in parent class as well.
31098         * image.c: do not insert nested types in name cache.
31099         * reflection.c: warning fix.
31100         * reflection.h: add override method (for interface impl).
31101
31102 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
31103
31104         * metadata.c: fix customattr decoding.
31105
31106 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
31107
31108         * rawbuffer.cs: Added native Win32 implementation, avoids using
31109         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
31110
31111 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
31112
31113         * class.c: make the low-level routines handle the cache.
31114
31115 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
31116
31117         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
31118
31119 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
31120
31121         * class.c: fix mono_array_element_size() for objects.
31122         * class.h, class.c: add properties to MonoClass and load them
31123         at init time.
31124         * icall.c: check with isinst() when assigning a value to an array
31125         instead of requiring the classes to match exactly.
31126         Implemented icall for System.Type::GetType().
31127         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
31128         enums. Handle bindingflags when looking for methods and fields.
31129         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
31130         and mono_metadata_methods_from_property().
31131         * reflection.h, reflection.c: added structures for propreties,
31132         parameters and enums. Implemented mono_property_get_object() and
31133         mono_param_get_objects().
31134
31135 2001-12-18  Dick Porter  <dick@ximian.com>
31136
31137         * file-io.c: Use mono_string_to_utf16() instead of
31138         mono_string_chars()
31139
31140         * object.c: Added mono_string_to_utf16(), which copies the non
31141         NULL-terminated MonoString into a new double-null-terminated
31142         buffer.
31143
31144 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
31145
31146         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
31147
31148 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
31149
31150         * file-io.c: raise exceptions if handle is invalid.
31151
31152 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
31153
31154         * assembly.c: yet another check for mscorlib.
31155         * class.c, class.h: load nesting info for classes.
31156         * icall.c: many new functions to support the Reflection classes.
31157         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
31158         * reflection.h, reflection.c: mono_image_create_token(),
31159         mono_assembly_get_object(), mono_type_get_object(),
31160         mono_method_get_object(), mono_field_get_object(): methods to return
31161         objects that parallel the C representation of assemblies, types,
31162         methods, fields.
31163
31164 2001-12-11  Dick Porter  <dick@ximian.com>
31165
31166         * icall.c:
31167         * file-io.c: Internal calls for file IO.
31168
31169 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
31170
31171         * tabledefs.h: missing FileAttributes.
31172         * verify.h, verify.c: use is_valid_string () to simplify and check for
31173         valid strings more correctly. Fix warnings and speeling.
31174         Check more tables: Filed, File, ModuleRef, StandAloneSig.
31175         Check code: branches, maxstack, method calls.
31176
31177 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
31178
31179         * object.c (mono_object_allocate): removed static, so that the jit
31180         can allocate value types.
31181
31182         * icall.c (ves_icall_System_DateTime_GetNow): impl.
31183
31184 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31185
31186         * class.c: init enum types right away and register the
31187         token->MonoClass map in mono_class_create_from_typedef ().
31188         * verify.h, verify.c: first cut of the verifier.
31189         * pedump.c: add --verify switch to verify metadata tables.
31190         * tabledefs.h: add some missing enums.
31191
31192 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
31193
31194         * class.c (mono_install_runtime_class_init): impl.
31195         (mono_class_init): renamed mono_class_metadata_init to
31196         mono_class_init, also removed the metadata_inited flag
31197
31198         * object.c (mono_object_isinst): use faster algorithm
31199
31200 2001-11-30  Radek Doulik  <rodo@ximian.com>
31201
31202         * mono-endian.h: reverted last change
31203         added function prototypes
31204
31205         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
31206         add mono-endian.c back
31207
31208         * mono-endian.c: returned back, as Paolo pointed out, it's needed
31209         for unaligned access, I've mistaked it with endianess. I am
31210         sorry.
31211         (mono_read16): fix reverted endianess
31212         (mono_read64): ditto
31213         (mono_read32): ditto
31214
31215 2001-11-30  Dick Porter  <dick@ximian.com>
31216
31217         * exception.c: Implement mono_exception_from_name()
31218
31219 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31220
31221         * metadata.h, metadata.c: remove params_size and locals_size and their
31222         calculation from the metadata code: they are only usefult to the
31223         interp.
31224
31225 2001-11-29  Radek Doulik  <rodo@ximian.com>
31226
31227         * object.c (mono_ldstr): swap bytes here, it's probably not the
31228         best place, but works for me now, I'll redo it once I know mono
31229         better, also note that I add PROT_WRITE and don't reset back, also
31230         note that it's only affects big endians, so x86 should be OK
31231
31232         * mono-endian.h (read16): use just glib macros for both endians
31233
31234         * mono-endian.c: removed as glib macros are used in in
31235         mono-endian.h so we don't need to care about endianess for read
31236         macros as glib does that for us already
31237
31238 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
31239
31240         * class.h, class.h: take minimum alignment into consideration so
31241         that the fields of a class remain aligned also when in an array.
31242
31243 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31244
31245         * loader.h, loader.c: add mono_method_get_param_names().
31246         * class.c: 0-init class fields.
31247
31248 2001-11-26  Dick Porter  <dick@ximian.com>
31249
31250         * icall.c:
31251         * threads-types.h:
31252         * threads.c: New file that handles System.Threading on all platforms
31253
31254         * object.c: 
31255         * object.h: Remove the synchronisation struct from MonoObject,
31256         replace it with a pointer that gets initialised on demand
31257
31258         * Makefile.am: Replace all the system-specific threading code with
31259         a single file that uses the new wrapper library
31260
31261 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
31262
31263         * class.c, class.h: add mono_install_trampoline() so that the runtime
31264         can register a function to create a trampoline: removes the ugly
31265         requirement that a runtime needed to export arch_create_jit_trampoline.
31266         * object.h, object.c: added mono_install_handler() so that the runtime
31267         can install an handler for exceptions generated in C code (with
31268         mono_raise_exception()). Added C struct for System.Delegate.
31269         * pedump.c: removed arch_create_jit_trampoline.
31270         * reflection.c: some cleanups to allow registering user strings and
31271         later getting a token for methodrefs and fieldrefs before the assembly
31272         is built.
31273         * row-indexes.h: updates and fixes from the new ECMA specs.
31274
31275 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
31276
31277         * class.h, class.c: add enum_basetype field to MonoClass.
31278         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
31279         to get index in the constant table reated to a field, param or
31280         property.
31281         * reflection.h, reflection.c: handle constructors. Set public-key and
31282         version number of the built assembly to 0.
31283         * row-indexes.h: update from new ECMA spec.
31284
31285 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31286
31287         * class.h, class.c: add a max_interface_id to MonoClass.
31288         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
31289         since it's used to do that. Added mono_type_type_from_obj().
31290         Make GetType() return NULL instead of segfaulting if the type was not
31291         found. Handle simple arrays in assQualifiedName.
31292         * object.h: add a struct to represent an Exception.
31293         * reflection.c: output call convention in method signature.
31294         Add code to support P/Invoke methods and fixed offsets for fields.
31295
31296 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
31297
31298         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
31299         the value.
31300         * icall.c: use mono_array_addr instead of array->vector: fixes the
31301         reflection image writing.
31302         * reflection.c: init call convention byte to 0 in method signature.
31303         Encode the property signature. Don't output property-related methods
31304         twice. Really process the properties for a type (don't cast a field to
31305         a property, my mom always told me that).
31306         Fix 64 bit issues in pointer alignment in a different and more
31307         readable way.
31308
31309 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
31310
31311         * loader.h: Removed type class from MonoDefaults, added monotype
31312
31313         * loader.c: Loaded MonoType, removed loading of Type
31314
31315         * icall.c (my_mono_new_object): Now returns a System.MonoType,
31316         and fills in System.Type._impl with a RuntimeTypeHandle rather
31317         than the actual MonoClass *
31318
31319         (ves_icall_type_from_handle): change from type_class to
31320         monotype_class
31321
31322         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
31323         implemented
31324
31325         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
31326         implemented
31327
31328         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
31329
31330         (ves_icall_System_Reflection_Assembly_GetType): implemented
31331
31332         (ves_icall_System_MonoType_assQualifiedName): implemented
31333
31334         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
31335
31336 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
31337
31338         * assembly.c (mono_assembly_open): Implement a cache for the
31339         assemblies. 
31340
31341         (mono_assembly_close): only destroy the assembly when the last
31342         reference is gone.
31343         
31344 2001-11-09  Dick Porter  <dick@ximian.com>
31345
31346         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
31347
31348 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
31349
31350         * class.c (mono_class_metadata_init): bug fix: compute the right slot
31351
31352 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
31353
31354         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
31355         from Martin Weindel.
31356         * object.h: add mono_string_chars ().
31357
31358 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
31359
31360         * reflection.c (build_compressed_metadata): Eliminates warnings
31361         and uses 64-bit clean code.
31362
31363         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
31364         (mono_type_equal): Change signature to eliminate warnings.
31365
31366 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
31367
31368         * icall.c, loader.c: remove the internalcall array constructors.
31369         Changes to match the new MonoArray structure.
31370         * object.h, object.c: an array object doesn't allocate an extra
31371         vector. Add mono_array_new_full () to create jagged arrays easily.
31372
31373 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
31374
31375         * metadata.h, metadata.c: add mono_metadata_field_info () to
31376         retreive all the info about a field from vairous tables.
31377         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
31378         * class.h, class.c: augment MonoClassField with more info.
31379         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
31380         policy and load a field's RVA if needed.
31381
31382 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
31383
31384         * class.c (mono_class_metadata_init): create a trampoline for all
31385         virtual functions instead of actually compiling them.
31386
31387 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
31388
31389         * class.h, class.c: include name in MonoClassField.
31390         * class.c: fix fundamental type of System.Object and System.String.
31391         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
31392         tokens in ldtoken.
31393         * icall.c: remove internalcalls for the Reflection stuff that is now
31394         done in C# code.
31395         * loader.c: mono_field_from_memberref () implementation.
31396         * mono-endian.c: thinko (s/struct/union/g).
31397         * object.c, object.h: make the mono_string_* prototypes actually use
31398         MonoString instead of MonoObject.
31399         * reflection.c, reflection.h: updates for changes in the reflection
31400         code in corlib: we use C structures that map to the actual C# classes.
31401         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
31402         fat method header if needed and use the info from the ILGenerator for
31403         methods. Handle fields in types. Misc fixes.
31404
31405 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
31406
31407         * class.c (mono_class_metadata_init): bug fix: always allocate
31408         space for static class data
31409
31410 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
31411
31412         * class.c (mono_compute_relative_numbering): use relative
31413         numbering to support fast runtime type checks.
31414
31415 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
31416
31417         * class.c (mono_class_create_from_typeref): added debugging output
31418         to print class name when MonoDummy is returned instead of real class
31419
31420 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
31421
31422         * class.c (mono_class_metadata_init): interface offset table now
31423         contains pointers into the vtable - this is more efficient for the jit
31424
31425 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
31426
31427         * class.c (mono_class_metadata_init): use a temporary vtable (the
31428         old algorithm only worked for the interpreter, but not for the jit)
31429
31430 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
31431
31432         * loader.c (method_from_memberref): use mono_class_get to get the
31433         class of an array instead of using System.Array directly.
31434         (mono_get_method): also add MEMBERREF methods to the method cache
31435         which usefull for arrays.
31436
31437 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
31438
31439         * pedump.c (arch_compile_method): added to compute vtable entry
31440
31441         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
31442         number of interfaces.
31443         
31444         * class.h: merged MonoArrayClass into MonoClass
31445
31446         * class.c (mono_class_create_from_typedef): compute the vtable size and
31447         allocate space to include the vtable inside MonoClass
31448         (mono_class_metadata_init): initialize the vtable
31449
31450 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
31451
31452         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
31453         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
31454         * image.c: endian fixes by Laurent Rioux.
31455         * object.h, object.c: rename MonoStringObject to MonoString and
31456         MonoArrayObject to MonoArray. Change some function names to conform to
31457         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
31458         guint16* as first argument, so don't use char*.
31459         Provide macros to do the interesting things on arrays in a portable way.
31460         * threads-pthread.c: updates for the API changes and #include <sched.h>
31461         (required for sched_yield()).
31462         * icall.c: updates for the API changes above.
31463         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
31464         platforms that need them.
31465
31466 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31467
31468         * class.c: set the correct type for all the fundamental
31469         type when loading the class.
31470
31471 2001-10-05  Dick Porter  <dick@ximian.com>
31472
31473         * threads-pthread.c (pthread_mutex_timedlock): Simple
31474         compatibility version for C libraries that lack this call.
31475
31476 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31477
31478         * class.c: MonoTypes stored in MonoClass are stored as
31479         fundamental MonoTypes when the class represents a
31480         fundamental type (System.Int32, ...).
31481         The TypeHandle return by ldtoken is a MonoType*.
31482         * icall.c: ves_icall_get_data_chunk () write out all the
31483         PE/COFF stuff. Implement ves_icall_define_method (),
31484         ves_icall_set_method_body (), ves_icall_type_from_handle ().
31485         * image.c: properly skip unknown streams.
31486         * loader.h, loader.c: add type_class to mono_defaults.
31487         * metadata.c, metadata.h: export compute_size () as
31488         mono_metadata_compute_size () with a better interface.
31489         Typo and C&P fixes.
31490         * pedump.c: don't try to print the entry point RVA if there is no entry point.
31491         * reflection.c, reflection.h: many cleanups, fixes, output method
31492         signatures and headers, typedef and typeref info, compress the metadata
31493         tables, output all the heap streams, cli header etc.
31494         * row-indexes.h: typo fixes.
31495
31496 2001-10-04  Dick Porter  <dick@ximian.com>
31497
31498         * object.h: Add a synchronisation mutex struct to MonoObject
31499
31500         * object.c (mono_new_object): Initialise the object
31501         synchronisation mutexes
31502
31503         * icall.c: System.Threading.Monitor internal calls
31504         
31505         * threads-pthread.h:
31506         * threads-pthread.c: System.Threading.Monitor internal calls
31507
31508         * threads-types.h: New file, includes the system-specific thread
31509         structures
31510         
31511         * threads-pthread-types.h:
31512         * threads-pthread-types.c: New files, handle pthread-specific
31513         synchronisation types
31514
31515         * threads-dummy-types.h: 
31516         * threads-dummy-types.c: New files of dummy support for
31517         thread-specific types
31518
31519         * metadata.c:
31520         * image.c:
31521         * pedump.c: include mono-endian.h not endian.h
31522         
31523         * Makefile.am: More threads files.
31524         Name mono-endian.h not endian.h
31525
31526 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
31527
31528         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
31529         stuff and implement a few more bits.
31530         * icall.c: a field needs to be dereferenced twice. Do not use the same
31531         name for two variables in the same scope.
31532         * image.c, image.h: cleanups.
31533
31534 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
31535
31536         * class.c (mono_class_metadata_init): bug fix: compute the right size
31537
31538 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
31539
31540         * icall.c: implemented some of the Reflection internalcalls.
31541         * image.c, image.h: start writing out the PE/COFF image.
31542         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
31543         that does the reverse than decode_blob_size ().
31544         * object.c: use mono_metadata_encode_value (). Move here
31545         temporary implementation of mono_string_to_utf8 ().
31546         * rawbuffer.c: make malloc_map static.
31547
31548 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31549
31550         * metadata.c: fix type comparison for arrays.
31551         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
31552         Added a couple of new classes to monodefaults.
31553         * icall.c: added a couple of Reflection-related internalcalls.
31554         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
31555         Added a byval_arg MonoType to MonoClass.
31556
31557 2001-09-28  Dick Porter  <dick@ximian.com>
31558
31559         * icall.c:
31560         * threads-pthread.h: 
31561         * threads-pthread.c: Implemented internal calls for
31562         LocalDataStoreSlot operations.  Applied mutexes around all shared
31563         data.  Reworked the thread creation and Start() operations to
31564         avoid a race condition.
31565         
31566         * threads-dummy.h:
31567         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
31568
31569 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
31570
31571         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
31572
31573 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
31574
31575         * class.c, loader.c: warn and return NULL instead of erroring out.
31576         * icall.c: added System.AppDomain::getCurDomain().
31577         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
31578
31579 2001-09-25  Dick Porter  <dick@ximian.com>
31580
31581         * threads-pthread.h:
31582         * threads-pthread.c: Implemented timed thread joining and added
31583         System.Threading.Thread::Join_internal internal call
31584
31585         * icall.c: Added System.Threading.Thread::Join_internal internal call
31586
31587         * threads-dummy.h:
31588         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
31589
31590 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
31591
31592         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
31593         mono_string_intern () to implement the semantics of the ldstr opcode
31594         and the interning of System.Strings.
31595         * icall.c: provide hooks to make String::IsIntern and String::Intern
31596         internalcalls.
31597
31598 2001-09-23  Dick Porter  <dick@ximian.com>
31599
31600         * threads-dummy.c: 
31601         * threads-dummy.h: New files of dummy threading routines
31602
31603         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
31604         support code based on system specifics
31605
31606         Rename PTHREAD_LIBS to THREAD_LIBS
31607         
31608 2001-09-23  Dick Porter  <dick@ximian.com>
31609
31610         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
31611         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
31612         internal calls.
31613         (mono_thread_init): Set up a Thread object instance to return when
31614         the main thread calls Thread.CurrentThread
31615         (mono_thread_cleanup): Wait for all subthreads to exit
31616
31617         * icall.c: New internal calls for System.Threading.Thread::Sleep
31618         (including Schedule) and CurrentThread
31619
31620         * threads.h: New file, to insulate thread-specific stuff from the
31621         rest of the code
31622
31623 2001-09-21  Dick Porter  <dick@ximian.com>
31624
31625         * threads-pthread.h: 
31626         * threads-pthread.c: New file, for handling pthreads-style
31627         threading support.  Start() now starts a new thread and executes
31628         the ThreadStart delegate instance.
31629
31630         * icall.c: Added the internalcall for
31631         System.Threading.Thread::Start_internal
31632
31633         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
31634
31635 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
31636
31637         * loader.c: work around the different signatures for delegates
31638         constructors csc generates in compiled code vs the ones compiled in mscorlib.
31639
31640 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31641
31642         * class.h, class.c: add mono_class_get_field_from_name ().
31643         * *: Fix C comments and other ANSI C issues.
31644
31645 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
31646
31647         * endian.h, assembly.c: fix some endianness issues.
31648
31649 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
31650
31651         * loader.h, load.c: add delegate_class to mono_defaults.
31652         Handle runtime provided methods in mono_get_method ().
31653
31654 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
31655
31656         * loader.c (mono_get_method): use pinvoke for internal call
31657
31658         * icall.c: use pinvoke for internal call
31659
31660         * loader.c (method_from_memberref): set the method name
31661
31662 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
31663
31664         * metadata.c: help the compiler generate better code for
31665         mono_class_from_mono_type ().
31666
31667 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
31668
31669         * class.c (mono_class_metadata_init): delayed computing of the
31670         class size to mono_class_metadata_init ()
31671
31672 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
31673
31674         * class.c, class.h: add an interfaces member to MonoClass.
31675         * image.c, image.h: add assembly_name field to MonoImage
31676         from the assembly table.
31677         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
31678
31679 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31680
31681         * class.c: Handle Array in mono_class_from_mono_type ().
31682         * metadata.c, pedump.c: some endian fixes.
31683
31684 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
31685
31686         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
31687         * metadata.c: fix small problem introduced with the latest commit.
31688
31689 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
31690
31691         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
31692         We don't need a MonoMetadata pointer anymore to compare signatures in
31693         mono_metadata_signature_equal (), update callers.
31694         Reduced memory usage an number of allocations for MonoMethodHeader and
31695         MonoMethodSignature.
31696
31697 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
31698
31699         * metadata.c: added compare for szarray.
31700
31701 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
31702
31703         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
31704         and add a couple more types to it and mono_defaults. Give an hint on
31705         classes that need implementing in our corlib and are referenced
31706         in mscorlib.
31707
31708 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
31709
31710         * class.h, class.c: keep track if a class is also an Enum.
31711         * loader.c: Implement a couple more types for use in libffi
31712         marshalling. Gives better diagnostics when failing to dlopen
31713         a library. Set method->klass for P/Invoke methods, too.
31714
31715 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
31716
31717         * class.c, class.h: add a MonoType this_arg to MonoClass that
31718         represents a pointer to an object of the class' type that
31719         can be used by the interpreter and later the type cache.
31720         Add best guess alignment info for valuetype objects.
31721
31722 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
31723
31724         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
31725         into MonoType: one less level of indirection and allocation and
31726         simplifies quite a bit of code. Added cache for MonoTypes that are
31727         used frequently, so that we don't need to allocate them all the time.
31728
31729 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
31730
31731         * class.c (mono_class_create_from_typedef): System.Enum is also a
31732         value type, although it does not derive from System.ValueType
31733         (maybe a bug in the ms compiler?)
31734
31735         * metadata.c (mono_type_size): return the right size for value types
31736
31737         * loader.c (mono_get_method): only initialize method header if not abstract
31738
31739         * class.c (mono_class_from_mono_type): use mono_default values. 
31740
31741 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
31742
31743         * *: use MonoClass pointers instead of <type_tokens>
31744         
31745         * class.h: new flag: metadata_inited.
31746
31747         * class.c (mono_class_metadata_init): impl.
31748         (mono_class_instance_size): impl.
31749         (mono_class_data_size): impl.
31750
31751 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
31752
31753         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
31754         MonoClass now has the name and name_space fields. 
31755         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
31756         mono_get_method () takes and optional MonoClass as argument.
31757         Removed mono_typedef_from_name() and added mono_class_token_from_name()
31758         instead that takes advantage of a map from class names to typedef
31759         tokens in MonoImage.
31760
31761 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
31762
31763         * metadata.c: zero is not a valid alignment boundary.
31764         Merge MONO_TYPE_VOID in default decoding code.
31765
31766 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
31767
31768         * image.h: merged MonoMetadata into MonoImage
31769
31770         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
31771         identify the type of elements.
31772
31773 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
31774
31775         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
31776         * cil-coff.h: split MonoMSDOSHeader and add size info.
31777         * image.c: add some consistency checks.
31778         * metadata.c: fix row size computation: one programmer
31779         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
31780         add explanation for the locator routine.
31781         Fix decoding of size in method header.
31782         
31783 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
31784
31785         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
31786         (g_concat_dir_and_file): Bring g_concat_dir_and_file
31787         function from gnome-libs.  This uses the right path separator
31788         based on the OS, and also works around a bug in some systems where
31789         a double slash is not allowed. 
31790         (default_assembly_name_resolver): Use g_concat_dir_and_file
31791         (mono_assembly_open): ditto.
31792
31793 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
31794
31795         * metadata.c (mono_metadata_signature_equal): impl.
31796
31797         * *: void is now a realy MonoType (instead of using NULL)
31798         
31799         * metadata.c (do_mono_metadata_parse_type): use
31800         mono_metadata_parse_type to parse void value.
31801
31802 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
31803
31804         * metadata.c, metadata.h: in the signature and method header store
31805         only the space required for holding the loca vars and incoming arguments.
31806
31807 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
31808
31809         * metadata.c (do_mono_metadata_parse_type): treat void like any
31810         other type (instead of assigning NULL);
31811
31812 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
31813
31814         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
31815
31816 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
31817
31818         * image.c (do_mono_image_open): added a cache for arrays.
31819
31820 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31821
31822         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
31823         decode a single column from a row in a metadata table and changes
31824         to take advantage of it in the typedef locator (gives a nice speed up).
31825         Store offset info for function params.
31826
31827 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
31828
31829         * image.h (MONO_IMAGE_IS_CORLIB): removed 
31830
31831 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
31832
31833         * assembly.c: how could mono_assembly_close () had ever worked?
31834         * metadata.c, metadata.h: provide offset info for local vars.
31835         Implement mono_type_size () to take care of alignment as well
31836         as size (it was mono_field_type_size in cli/class.c before).
31837
31838 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
31839
31840         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
31841
31842         * assembly.h (CORLIB_NAME): set to corlib.dll
31843
31844         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
31845
31846 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
31847
31848         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
31849         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
31850         tokentype.h: massive namespace cleanup.
31851
31852 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
31853
31854         * metadata.h, metadata.c: decode exception clauses when parsing method header.
31855
31856 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
31857
31858         * metadata.c (mono_metadata_free_type): added check for type !=
31859         NULL (void) before calling mono_metadata_free_type()
31860
31861 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
31862
31863         * metadata.h, row_indexes.h: added header with enumerations to use
31864         to index in the columns from tables in metadata and to decode coded
31865         tokens: we should start using this instead of embedding magic numbers
31866         all over the code.
31867
31868 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
31869
31870         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
31871         Move metadata_t info from cli_image_info_t to MonoImage, where
31872         it's easily accessible. Changed all the uses accordingly.
31873         Added the method and class caches to MonoImage.
31874         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
31875         and mono_metadata_decode_value () signature to be more consistent
31876         with the other parse functions (and simplify code). Taken advantage
31877         of zero-length array allocation with GCC. Removed reduntant (and
31878         wrong) MonoFieldType struct and use MonoParam instead. Changed
31879         mono_metadata_parse_field_type () to use common code for parsing.
31880         Added mono_metadata_typedef_from_field () and
31881         mono_metadata_typedef_from_method () to lookup a typedef index from a
31882         field or method token.
31883         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
31884
31885 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
31886
31887         * metadata.c (mono_metadata_parse_field_type): Implement. 
31888         (do_mono_metadata_parse_type): Split engine from
31889         mono_metadata_parse_type, so that we can create smaller structures
31890         for things that just have one pointer to the MonoType (look at
31891         the MonoFieldType)
31892
31893 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
31894
31895         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
31896         as Jan Gray found out, it is incorrect. 
31897
31898 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
31899
31900         * assembly.c: Implement asssembly loading.  This loads an image
31901         and loads all the referenced assemblies.  Come to think of it, we
31902         could always do lazy loading of the assemblies. 
31903
31904         * image.c (mono_image_open): Keep loaded images in a hashtable.
31905
31906         * image.h (MonoImage): Add reference count.
31907
31908 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
31909
31910         * assembly.c (mono_assembly_open): Keep track of the file name in
31911         case the assembly has no ASSEMBLY table.
31912
31913         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
31914         from get.c here.
31915
31916 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
31917
31918         * metadata.c, metadata.h: decode local vars in method header
31919         parse function. Change callers accordingly.
31920
31921 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
31922
31923         * metadata.h, cil-coff.h: protect against multiple inclusion.
31924         Added some new structures to hold information decoded from metadata:
31925         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
31926         and relevant decoding/free functions.
31927         * metadata.c: implement decoding functions. Add warning for out of bounds
31928         index in mono_metadata_locate(). Implement mono_get_method () to retreive
31929         all the info about a method signature and invocation. Remove check on
31930         uninitialized local var in parse_mh() and fix memory leak.
31931
31932 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
31933
31934         * metadata.h: More macros.
31935
31936         * tokentype.h: New file.
31937
31938 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
31939
31940         * assembly.c: added a consistency check and initialize
31941         some structures with g_new0().
31942         * metadata.c: fixed a couple more bugs in table size computation
31943         and add other checks for out-of bound access to metadata.
31944
31945 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
31946
31947         * metatada.c: fix bugs computing table sizes. Spew a
31948         warning when index in string heap is out of bounds.
31949
31950 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
31951
31952         * metadata.h: Add a couple of macros to manipulate tokens. 
31953
31954 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
31955
31956         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
31957         cli_section_tables).
31958
31959 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
31960
31961         * metadata.c (mono_metadata_user_string): New function, provides
31962         access to the UserString heap. 
31963
31964 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
31965
31966         * metadata.c: Add inline documentation.
31967
31968 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
31969
31970         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
31971         files. 
31972
31973 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
31974
31975         * typeattr.h: New file, TypeAttribute flags. 
31976
31977 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
31978
31979         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
31980         mono_assembly_ensure_section): Section loading code.
31981         (load_section_tables): Load the sections.
31982
31983         * mono/metadata/metadata.c (mono_metadata_locate_token,
31984         mono_metadata_locate): Functions to locate the information
31985         definition given a token or a table and an index.
31986         (mono_metadata_compute_table_bases): New.
31987         (compute_size): New function to compute the sizes of the various
31988         tables.
31989
31990         * mono/metadata/metadata.h: Finish listing the different index
31991         types. 
31992
31993         * mono/metadata/pedump.c: Improve to dump new information.
31994
31995 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
31996
31997         * mono/metadata/metadata.c: Entered all the tables matching
31998         Beta2. 
31999
32000         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
32001
32002
32003
32004