99480f40b2a8967e6d670a6936cb5dbeb3b00bfe
[mono.git] / mono / metadata / ChangeLog
1 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * verify.c (do_invoke_method): Remove return type validation.
4
5         * verify.c (do_ret): Do return type validation at return site instead of
6         call site.
7
8 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
9
10         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
11
12         * verify.c: Some todos cleaned and improved a few error messages.
13
14 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
15
16         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
17
18 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
19
20         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
21         system types correctly.
22
23         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
24         function.
25
26 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
27
28         * assembly.c (build_assembly_name): Fix a warning.
29
30 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
31
32         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
33         the called function takes an object type argument. Fixes storing or
34         valuetypes across remoting as well as reducing memory usage.
35         * image.c, metadata-internals.h: remove now unused ldfld_remote and
36         stfld_remote wrapper caches.
37
38 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
39
40         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
41         is not found.
42
43         * reflection.c (mono_image_register_token): New helper function to save
44         a token->object mapping.        
45
46         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
47         managed code.
48
49         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
50         one dimension arrays. Fixes #367670.
51         (mono_reflection_get_type_internal): Ditto.
52
53 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
54
55         * marshal.c: mono_load_remote_field_new() always returns object.
56         so use the proper signature (fixes bug #366445).
57
58 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
59         
60         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
61         add an 'inline_failure' flag instead.
62
63 2008-03-04  Mark Probst  <mark.probst@gmail.com>
64
65         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
66         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
67         contains the location of "this", used for exception handling.
68
69 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
70
71         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
72         their size on all platforms for perf reasons.
73
74 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
75
76         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
77         object-internal.h
78
79         * object-internal.h: Same.
80
81 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
82
83         * reflection.h: Fix the build I just broke.
84
85 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
86
87         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
88         Test if a token is valid, this remove explicit usage of 
89         MonoDynamicImage::tokens from the verifier code.
90
91         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
92
93         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
94         instead of direct access to MonoDynamicImage::tokens.
95
96 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
97
98         * verify.c (token_bounds_check): Fix the build I just broke.
99
100 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
103
104         * verify.c (verifier_load_method): Fixed the errors message.
105
106         * verify.c (mono_method_verify): Fixed a debug message.
107
108 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
109
110         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
111         mono-perfcounters.h, class-internals.h: support for predefined
112         writable counters, query of categories and counters, bugfixes.
113
114 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
115
116         * verify.c (do_refanytype): Verify the refanytype opcode.
117
118         * verify.c (mono_method_verify): Use do_refanytype.
119
120 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * verify.c (do_mkrefany): Verify the mkrefany opcode.
123
124         * verify.c (mono_method_verify): Use do_mkrefany.
125
126 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
127
128         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
129         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
130         implementation.
131
132 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
133
134         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
135         the type load exception.
136
137 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
138
139         * verify.c: Added a few FIXME for method signatures
140
141         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
142         of mono_method_get_signature and get vararg call working. Removed unused
143         checks for return value.
144
145         * verify.c (do_refanyval): Verify the refanyval opcode.
146
147         * verify.c (mono_method_verify): Implemented verification of arglist and
148         use do_refanyval.
149
150 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
151
152         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
153         vtypes to marshal.c.
154
155         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
156         it works for AOT as well.
157
158 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
159
160         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
161         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
162         the system time is adjusted.
163
164 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
165
166         * icall.c, icall-def.h: use the new time functions (fixes the
167         non-monotonic behaviour of TickCount).
168
169 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
170
171         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
172         it breaks the build.
173         
174         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
175         cattr is not finished yet.
176
177 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
178
179         * verify.c: Proper token validation for field, method and type.
180
181 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
182
183         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
184
185         * loader.c (method_from_memberref): Generate type load error instead of method missing
186         if the type is not found.
187
188 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
189
190         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
191         some of the conversions caused the generation of a marshal directive exception.
192
193 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         verify.c: Report which exception should be thrown by the JIT.
196         Added a lot of FIXME notes.
197
198 2008-02-22  Mark Probst  <mark.probst@gmail.com>
199
200         * generic-sharing.c: Runtime generic context slots are not
201         instantiated on init anymore.  Instead, provide function to do the
202         instantiating on demand.
203
204         * class-internals.h: Added vtable to runtime generic context.
205         Macros for encoding direct and indirect slot offsets in one
206         guint32.
207
208 2008-02-21  Mark Probst  <mark.probst@gmail.com>
209
210         * object.c, generic-sharing.c: Moved some generic sharing code
211         from object.c to generic-sharing.c.
212
213         * generic-sharing.c: Added support for extensible runtime generic
214         context.
215
216         * metadata-internals.h: Two new hash tables in MonoImage for
217         extensible runtime generic context support.
218
219         * domain.c: Unregister generic vtables upon domain unloading.
220
221         * image.c: Destroy new hash tables upon image unloading.
222
223         * metadata.c: Unregister generic subclasses upon image unloading.
224
225         * class-internals.h: New data structure for runtime generic
226         context template.  New fields in the runtime generic context for
227         extensible part.
228
229         * Makefile.am: Added generic-sharing.c.
230
231 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
232
233         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
234         there is a pending loader exception, raise it.
235
236         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
237         same.
238
239         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
240         same.
241
242         Fixes #363450.
243
244 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
245
246         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
247
248         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
249         
250         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
251         ref-only requests for compatibility with MS.
252
253 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
254
255         * reflection.c (mono_custom_attrs_from_method): Don't silently
256         return an empty list for generic method instances.
257         (mono_custom_attrs_from_param): Likewise.
258
259 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
260             Raja R Harinath  <harinath@hurrynot.org>
261
262         Fix #354757
263         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
264         * class.c (mono_class_inflate_generic_method_full): Initialize it
265         when a fully-open method is instantiated.
266         * metadata.c (inflated_method_equal, inflated_method_hash): Update
267         to new field.
268         * reflection.c (inflate_mono_method): Don't create a temporary context.
269
270 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
271
272         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
273         Compute correct value, to prepare for imethod->reflection_info going away.
274
275 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
276
277         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
278
279 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
280
281         * verify.c: Implement skip visibility flag.
282
283 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
284
285         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
286         which contains an extra field to tell the kind of exception that should be thrown.
287
288         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
289
290 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
291
292         * loader.c (mono_method_get_param_names): Initialize 'klass' after
293         'method' is updated.
294
295 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
296
297         * class.c (mono_class_layout_fields): Set class->min_align for classes using
298         explicit layout as well. Fixes #360375.
299
300 2008-02-11  Geoff Norton  <gnorton@novell.com>
301
302         * loader.c: Guard and dereference against inflated generic methods
303
304 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
305
306         * class.c: Include Retargetable spec in assembly name.
307         * assembly.c: Always include PublicKeyToken spec in assembly name
308         (with value "null" if assembly is not signed), and include
309         Retargetable spec.
310         * icall-def.h: Added icall for Assembly.get_fullname.
311         * icall.c: Added icall returning the fullname of an assembly.
312
313 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
314
315         * class.c (mono_class_setup_vtable_general): Add a missing call to
316         mono_class_setup_methods () which is needed in the AOT case.
317
318 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
319
320         * verify.c (mono_type_get_stack_name): Added. Return the name for the
321         stack type of the given MonoType.
322
323         * verify.c (verify_type_compatibility_full): Handle the void type.
324
325         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
326         way stack merging works.
327
328         * verify.c (store_local): Improved verification message.
329
330         * verify.c (do_branch_op): If the merging is invalid, the method
331         is unverifiable and not invalid. Improved error message.
332
333         * verify.c (merge_stacks): Properly merge a boxed valuetype and
334         a reference type diferent than System.Object. Improved error
335         message.
336
337 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
338
339         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
340
341         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
342         type of an enum even if the argument is byref.
343
344         * verify.c: Replace all explicit uses of enumtype and enum_basetype
345         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
346
347         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
348
349         *verify.c (verify_type_compatibility_full): Make enum types
350         compatible with their base types.
351
352         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
353         types are compatible for the special case of a boxed valuetype and
354         System.Object.
355
356         * verify.c (verify_stack_type_compatibility): The function
357         is_compatible_boxed_valuetype was extracted from here.
358
359         * verify.c (push_arg): Only set ctx->has_this_store if the method
360         is not static.
361
362         * verify.c (do_ldelem): Fixed a typo in an error message and added
363         strict check for mixing int32 and native int as the array type
364         and ldelem type.
365
366         * verify.c (merge_stacks): Consider boxed valuetypes in the
367         compatibility checks.
368
369 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
370         * profiler.h: (MonoGCEvent): Added start-stop the world events.
371
372 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
373         *class.c: use_new_interface_vtable_code: renamed the env var to have
374         a "MONO_" prefix, and fix the logic to enable it by default.
375
376 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
377         *class.c:
378         mono_class_setup_vtable_general: rewrote the way in which interface
379         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
380         makes the code more maintainable.
381         For now the old code is still there, and can be activated setting
382         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
383
384 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
385
386         * verify.c: guarded some debug functions around and #ifdef.
387
388         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
389
390 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
391
392         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
393         changes for now since they seem to break too many things.
394
395 2008-02-05  Mark Probst  <mark.probst@gmail.com>
396
397         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
398         mono_marshal_find_nonzero_bit_offset): Added macro and function
399         for finding the byte- and bit-offset of a bitfield within a
400         struct.
401
402 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
403
404         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
405         (mono_marshal_get_struct_to_ptr): Ditto.
406
407         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
408         cctor_signature.
409
410 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
411
412         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
413         between methods for non-corlib types.
414
415 2008-02-02  Geoff Norton  <gnorton@novell.com>
416
417         * loader.c (mono_method_get_param_names): Populate the parameter name for 
418         generic parameters as well. (Fixes #342536)
419
420 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
421
422         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
423
424         * verify.c (do_invoke_method): Fix for calling with byref structs.
425
426         * verify.c (do_cast): push a boxed value type based on the type token and not
427         the type of stack.
428
429 2008-01-31  William Holmes  <billholmes54@gmail.com>
430
431         * process.c (process_module_string_read): Check the size returned form 
432           VerQueryValue to avoid out of memory exception. 
433
434 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
435
436         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
437         Handle properly modules which are not in the moduleref table. Fixes
438         #356938.
439
440 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
441
442         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
443         the dynamic case which is now in managed code.
444         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
445
446         * marshal.c (mono_string_to_bstr): Fix a warning.
447         (init_com_provider_ms): Ditto.
448
449         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
450
451         * exception.c (mono_get_exception_out_of_memory): New helper function.
452
453 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
454
455         * marshal.c: Add support for BSTR marshalling
456         using other COM systems.
457
458         Code is contributed under MIT/X11 license.
459
460 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
461
462         * object.c (mono_runtime_invoke_array): reverted previous
463         commit as it breaks the build.
464
465 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
466
467         * object.c (mono_runtime_invoke_array): Verify arguments for
468         invalid types. Fixes #348522.
469
470 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
473         non-final virtual calls using call. 
474
475         * verify.c (do_invoke): fixed some TODOs.
476
477         * verify.c (push_arg): set has_this_store for "ldarga 0".
478
479 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
480
481         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
482         which belong to an inflated class. Fixes #356531.
483
484 2008-01-26  Robert Jordan  <robertj@gmx.net>
485
486         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
487         which resort to FindFirstFile when a certain error condition
488         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
489         Code is contributed under MIT/X11 license.
490
491 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
492
493         * marshal.c (emit_marshal_string): Fix out string marshalling
494         to use specified encoding. Fixes #323900.
495
496         Code is contributed under MIT/X11 license.
497
498 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
499
500         * class.c (mono_class_inflate_generic_method_full): Don't modify
501         iresult->context after cache check.
502
503 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
504
505         * class.c (mono_class_inflate_generic_method_full): Change the
506         struct assignments to memcpy for better visibility and add some comments.
507
508 2008-01-23  Dick Porter  <dick@ximian.com>
509
510         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
511         procedure, and make it work on windows.
512
513 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
514
515         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
516         a MonoReflectionTypeBuilder since it is always of that type.
517
518         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
519
520         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
521
522         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
523         
524         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
525
526         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
527
528         * reflection.c (mono_reflection_create_runtime_class): Remove already created
529         instantiations from the type cache.
530
531 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
534
535         * verify.c (do_unbox_value): push a controled mutability managed pointer.
536
537 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
538
539         * verify.c (do_ldstr): added, verifies if the #US token is valid.
540
541         * verify.c (mono_method_verify): removed old TODO
542
543 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * verify.c (do_newobj): add visibility check.
546
547 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
548
549         * verify.c (do_load_function_ptr): add visibility check.
550
551 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
552         *class.c:
553         mono_generic_class_get_class: hook profiler events.
554         mono_field_get_offset: added to support heap-shot in the new profiler.
555         *class.h: exported mono_field_get_offset.
556         * reflection.c:
557         mono_reflection_setup_internal_class: hook profiler events.
558
559 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
560
561         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
562         argument here too and use it to avoid checking for pending exceptions if 
563         possible.
564
565 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
566
567         * assembly.c (build_assembly_name): add arg for passing the assembly
568         flags. Do not consider a PublicKey with value "null" valid.
569         (mono_assembly_name_parse_full): added boolean argument that will be
570         set if the assembly name contains a PublicKeyToken spec. Added support
571         for the Retargetable spec for which only Yes or No are allowed as valid
572         value. Consider assembly name invalid if Retargetable spec is set, but
573         either version, culture or public key (token) are not specified.
574         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
575         with implementation in assembly.c.
576         * icall.c (fill_reflection_assembly_name): also copy assembly flags
577         from MonoAssemblyName.
578         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
579         introduced argument for mono_assembly_name_parse_full to know if the
580         assembly name has a PublicKeyToken spec, and if it has instruct
581         fill_reflection_assembly_name to use default value for keyToken (if
582         PublicKeyToken is null).
583
584 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
585
586         * verify.c (mono_method_verify): fixed ovf ops with
587         float values. They are unverifiable now.
588
589 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
590
591         * class.c (set_failure_from_loader_error): add BadImageException to the
592         list of exceptions that can cause a type to fail to load.
593
594         * class.c (mono_class_get_exception_for_failure): same.
595
596 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * verify.c (in_any_exception_block): added, check if offset
599         is part of any exception handling clause.
600
601         * verify.c (get_stack_type): added VAR and MVAR types.
602
603         * verify.c (do_stobj): better error messages.
604
605         * verify.c (do_cpobj): added, check cpobj.
606
607         * verify.c (do_initobj): added, check initobj.
608
609         * verify.c (do_sizeof): added, check sizeof.
610
611         * verify.c (do_localloc): added, check localloc.
612
613         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
614
615 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
616
617         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
618         save_lmf/restore_lmf opcodes.
619
620         * threads.c (mono_threads_install_notify_pending_exc): New function to
621         install a callback notifying the JIT there is a pending exception on a thread.
622         (mono_thread_request_interruption): Call the new callback.
623         (mono_thread_get_and_clear_pending_exception): New function to return the
624         exception pending on a thread.
625
626         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
627         to turn off checking for pending exceptions.
628         (mono_marshal_get_native_wrapper): Ditto.
629
630 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
631
632         * threads-types.h: Get rid of the unnecessary extern declarations.
633
634 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
635
636         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
637         return field from parent class if not private.
638         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
639         returns fields from parent class if they are not private.
640         (method_nonpublic): added function to determine if a given method
641         should be considered non-public. Returns false for private methods
642         on parent class, and internal methods from parent on the 1.0 profile.
643         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
644         use method_nonpublic function to determine whether method should be
645         returned.
646         (property_accessor_public): use newly introduced method_nonpublic
647         function to determine whether accessor is non-public. 
648         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
649         event from parent class if not private. Only return static event if
650         Static flag is set, and only return static event from parent class if
651         FlattenHierarchy flag is set.
652         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
653         include non-private events from parent class.
654
655 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
656
657         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
658         warning.
659
660 2008-01-16  Wade Berrier <wberrier@novell.com>
661
662         * security.c: Add assembly.h header to appease some warnings
663
664 2008-01-16  Dick Porter  <dick@ximian.com>
665
666         * process.c (process_module_string_read): Remove trailing null
667         when saving string.
668
669 2008-01-16  Mark Probst  <mark.probst@gmail.com>
670
671         * class-internals.h: A new data structure describing the layout of
672         a runtime generic context (MonoRuntimeGenericContextTemplate).
673
674         * metadata-internals.h: Added a hash table to MonoDomain that maps
675         from open generic classes to their runtime generic context
676         templates.
677
678         * object.c: Building of the runtime generic context, including
679         proper handling of generic type arguments of superclasses.
680         Building of the runtime generic context according to the template.
681
682 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
683
684         * class.c (mono_class_setup_fields): Set field.count for generic instances.
685         Fixes #350856.
686
687         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
688         mono_portability_find_file (). Fixes #325466.
689         (mono_image_get_public_key): Fix a warning.
690
691 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
692
693         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
694         Fixes #353550.
695         (mono_class_from_name_case): Ditto.
696
697 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
698
699         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
700           common storage for the tables used in the System/NumberFormatter class.
701
702 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
703
704         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
705
706 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
707
708         * verify.c (get_boxable_mono_type): check if the token is valid.
709
710         * verify.c (set_stack_value): changed to add an error if an
711         invalid type is set on stack. Changed all callers due to signature change.
712
713         * verify.c (do_stobj): implement stobj validation.
714
715 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
716
717         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
718         set container->is_method, it was set earlier.
719
720         * metadata.c (type_in_image): Handle MVARs which belong to not finished
721         generic methods.
722
723         * reflection.c (mono_reflection_initialize_generic_parameter): Set
724         is_method of the generic container to TRUE for methods.
725
726 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
727
728         * metadata.c (type_in_image): Handle type parameters properly.
729
730         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
731         memory ownership of this structure.
732
733 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
734
735         * verify.c (get_boxable_mono_type): make typedref types been just
736         unverifiable. check for void type.
737
738         * verify.c (do_unbox_any): added, verify opcode unbox.any.
739
740         * verify.c (do_load_function_ptr): accept method spec tokens.
741
742 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
743
744         * marshal.c (mono_class_native_size): Always set *align even if this is called
745         recursively.
746
747 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
748
749         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
750         out-of-date.
751
752 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
753
754         * verify.c: removed some old unused tables. A huge bunch of small fixes
755         to things found while testing the verifier with mono basic.
756
757         * verify.c (dump_stack_value): dump null literal flag to.
758
759         * verify.c (verify_type_compatibility_full): fix comparison
760         for types that have a generic super type.
761
762         * verify.c (verify_stack_type_compatibility): fix compatibility
763         between null literals and reference types. fix compatibility between
764         boxed valuetypes and object. fix corner case test for enums.
765
766         * verify.c (do_cmp_op): proper verification of cgt.un in case
767         of reference types.
768
769         * verify.c (do_invoke_method): fix error message.
770
771         * verify.c (do_store_indirect
772
773         * verify.c (check_is_valid_type_for_field_ops): proper verification
774         of managed pointers to valuetypes and boxed valuetypes. proper verification
775         of null literals.
776
777         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
778         allow token to be a reference type.
779
780         * verify.c (do_cast): proper handling of boxes valuetypes.
781
782         * verify.c (do_stelem): proper handling of storing a boxed valuetype
783         in object[].
784
785         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
786         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
787         fixed the decoding of unbox_any
788
789 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
790
791         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
792
793 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
794
795         * verify.c (do_newobj): do delegate verification.
796
797         * verify.c (verify_delegate_compatibility): perform delegate
798         verification.
799
800         * verify.c (verify_ldftn_delegate): perform tests related to
801         ldftn delegates.
802
803         * verify.c (mono_delegate_signature_equal): perform the
804         slightly diferent signature comparison required by delegates.
805
806         * metadata.c (mono_metadata_type_equal_full): added and exported
807         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
808         allows signature only comparison.
809
810         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
811         as MONO_INTERNAL.
812
813 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
814
815         * verify.c: added a bunch of stack_slot_* functions to
816         make access to stack slot type easier. This is required to
817         allow optional flags, like null literal, boxed value and
818         this pointer.
819         All access paths to IlStackDesc::stype have been changed 
820         to use these new funcions.
821         Removed a bunch of unused functions and cleared all warnings.
822         This patch introduces the usage of the this pointer and 
823         boxed value flags.
824
825 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
826
827         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
828
829 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
830
831         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
832         match managed version.
833
834         * appdomain.c: Bump corlib version.
835         
836         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
837         argument.
838
839 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
840
841         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
842         Set public key token to zero-length byte array if assembly is not
843         strongnamed.
844
845 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
846
847         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
848         writing a vtype array elem.
849
850 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
851
852         * assembly.c (build_assembly_name): return FALSE if length of token is
853         not 16 (if not "null").
854         (mono_assembly_name_parse_full): return FALSE if value of version,
855         culture, token or key is 0.
856         * icall.c (fill_reflection_assembly_name): add boolean arguments to
857         specify whether public key and public key token must be set to default
858         value (zero-length byte array) if not available. Set versioncompat to
859         SameMachine. If public key is available or the default is set, then
860         set PublicKey flag.
861         (ves_icall_System_Reflection_Assembly_FillName): if no public key
862         is available, use empty byte array as default value. On the 2.0
863         profile, use default value for public key token if not set.
864         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
865         profile, use default value for public key if not set. On the 2.0
866         profile, use default value for public key token if not set.
867         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
868         default values for public key and public key token.
869
870 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
871
872         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
873         field to keep it in synch with the managed object.
874
875         * marshal.c (emit_marshal_object): Add support for byref marshalling of
876         delegates. Fixes #351520.
877
878         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
879         contains defined memory.
880         
881         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
882
883         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
884         
885         * sgen-gc.c (check_consistency): New helper function to do a consistency check
886         of the GC data structures.
887
888         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
889
890         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
891         
892         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
893         barrier.
894         (mono_array_clone_in_domain): Ditto.
895         (mono_array_clone_in_domain): Ditto.
896
897         * threads.c (start_wrapper): Register the thread start argument as a GC root.
898         (cache_culture): Use a write barrier.
899
900         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
901         (ves_icall_get_property_info): Ditto.
902
903         * object.h (MONO_STRUCT_SETREF): New macro.
904
905         * class-internals.h (MonoStats): Add some GC statistics.
906
907         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
908
909 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
910
911         * exception.c (mono_exception_from_name_two_strings):
912         Break from loop after method is found.
913
914 2008-01-04  Dick Porter  <dick@ximian.com>
915
916         * process.c (process_module_string_read): Rename variable to
917         reflect correct usage, after fixing bug 345972.
918
919 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
920
921         * verify.c (mono_type_create_fnptr_from_mono_method): 
922         created a MonoType function pointer instance to be used during
923         verification. The verifier releases this memory at end.
924
925         * verify.c (mono_method_is_constructor): extracted repeated
926         checks for constructor into a single class.
927
928         * verify.c (do_push_field): use new extracted method
929         for constructor check.
930
931         * verify.c (do_newobj): same.
932
933         * verify.c (do_ldftn): renamed to do_load_function_ptr
934         and make it verify ldvirtftn too.
935
936         * verify.c (mono_method_verify: proper verification
937         of ldvirtftn. release created MonoMethod instances.
938
939 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
940
941         * verify.c (token_bounds_check): added.
942
943         * verify.c (do_ldftn): added.
944
945         * verify.c (mono_method_verify): proper verificartion of ldftn.
946
947 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
948
949         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
950         than the table row count. It's the resposibility of the caller to
951         make the bounds check and raise the correct error.
952
953         * metadata.c (mono_metadata_decode_row_col): Same.
954
955         * loader.c (mono_get_method_from_token): perform bounds check
956         on token for methoddef table.
957
958 2007-12-29  Miguel de Icaza  <miguel@novell.com>
959
960         * icall.c
961         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
962         assert into a negative result, the managed code already coped with
963         that.
964
965         Some folks on Windows reported this error. 
966
967 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
968
969         * appdomain.c: Bump corlib version.
970         * icall.c:
971         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
972         CultureInfo.CreateCulture to create CultureInfo for name.
973         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
974         create CultureInfo for name. Fixes bug #347174.
975
976 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
977
978         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
979         flags.
980
981         * verify.c (is_valid_branch_instruction): allow branching to the
982         first instruction of the protected block.
983
984         * verify.c (is_valid_cmp_branch_instruction): same.
985
986         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
987         avoid double initialization.
988
989         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
990         detect which cases the eval stack should just be copied.
991
992         * verify.c (mono_method_verify): check if the eval stack
993         is empty when entering a protected block.
994
995 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
996
997         * verify.c: added is_clause_in_range, is_clause_inside_range,
998         is_clause_nested and verify_clause_relationship. They perform
999         the verifications stated in P1 12.4.2.7.
1000
1001         * verify.c (mono_method_verify): remove some unused variables,
1002         add the new exception clause checks, add instruction border
1003         checks for protected block start/end, improved some error 
1004         messages and fixed a bug in the way invalid instruction access
1005         is detected.
1006
1007 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
1010         from GC 7.0 if available.
1011
1012         * object.c: Remove an unused define.
1013         
1014         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
1015
1016         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
1017
1018         * null-gc.c (mono_gc_make_descr_for_array): Implement.
1019
1020         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
1021
1022         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
1023         to take the same arguments as the other make_descr functions.
1024
1025         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
1026
1027         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
1028         directly.
1029
1030         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
1031         mini.c.
1032
1033         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
1034         call to boehm-gc.c.
1035
1036         * boehm-gc.c (mono_gc_register_root): Fix a warning.
1037
1038         * null-gc.c (mono_gc_register_root): Fix a warning.
1039
1040         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
1041
1042         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
1043         (mono_gc_base_init): Call GC_init ().
1044
1045         * null-gc.c: Define mono_gc_register_root () as a no-op.
1046
1047         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
1048
1049 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
1050
1051         * verify.c: add prototype for merge_stacks at top
1052
1053         * verify.c (do_switch): added.
1054
1055         * verify.c (merge_stacks): on some cases the stack merging
1056         was not happening properly. Unequal stack sizes at merge
1057         points should be invalid.
1058
1059         * verify.c (mono_method_verify): added more debug info on stack state.
1060         verify switch properly.
1061
1062 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * method-builder.h: New file, moved the mono_mb_ declarations here from 
1065         marshal.h.
1066
1067         * boehm-gc.c marshal.c: Include method-builder.h.
1068
1069         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
1070
1071         * marshal.c: Remove some code which is now in method-builder.c.
1072
1073 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * method-builder.c: New file, extraction of the method builder functionality 
1076         from marshal.c.
1077
1078         * marshal.c: Move the mb functions into method-builder.c.
1079
1080         * marshal.h marshal.c: Export some mono_mb_... functions.
1081
1082         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
1083
1084         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
1085         the caller.
1086
1087         * class.c (mono_class_get_full): Check the token type in the dynamic case.
1088
1089         * loader.c (mono_field_from_token): Ditto.      
1090
1091         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
1092         type as well.
1093         
1094         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
1095         Fixes #342565.
1096
1097         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
1098         a helper function for setting it.
1099
1100         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
1101
1102         
1103         * assembly.c: Significally simplify code now that referenced assemblies are 
1104         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
1105
1106         * threads.h: Don't include  the internal threads-types.h header file. Fixes
1107         #349952.
1108
1109 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
1110
1111         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
1112         instructions that were target of branches or are at protected block boundaries.
1113
1114         * verify.c (in_same_block): handle filter clauses.
1115
1116         * verify.c (is_valid_branch_instruction): added. checks the target of
1117         instructions br or brtrue/false.
1118
1119         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
1120         binary branch instructions such as beq and bge.
1121
1122         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
1123         and made it pin the instruction as been part of the exception block.
1124
1125         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
1126         of in_same_block.
1127
1128         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
1129         of in_same_block.
1130
1131         * verify.c (do_ret): ret from a protected block is unverifiable and
1132         not invalid.
1133
1134         * verify.c (do_static_branch): verify br and br.s instructions.
1135
1136         * verify.c (merge_stacks): add extra param to support detection
1137         of branches in the middle of instructions.
1138         
1139         * verify.c (mono_method_verify): verify branches and exception blocks
1140         that target the middle of instructions. Proper verification of br and br.s.
1141
1142 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
1145         skip_visibility field.
1146         (reflection_methodbuilder_from_dynamic_method): Ditto.
1147
1148         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
1149         registrations. Fixes #348193.
1150
1151         * threads.h: Move the internal mono_thread_get_pending_exception () to
1152         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
1153
1154 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
1157         icall registration. Fixes #348193.
1158
1159         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
1160         for corlib classes into object. Fixes #349621.
1161
1162 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
1163
1164         * icall.c (property_accessor_nonpublic): new function to determine
1165         whether an accessor allows a property to be considered non-public.
1166         Returns false for private accessor(s) from parent class, and internal
1167         accessor(s) from parent on 2.0 profile (and higher).
1168         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
1169         to determine whether property should be included if NonPublic flag
1170         is set. Fixes bug #349078.
1171
1172 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * verify.c (init_stack_with_value): added.
1175
1176         * verify.c (mono_method_verify): extracted common
1177         code for exception initialization into init_stack_with_value.
1178
1179         * verify.c (mono_method_verify): initialize the exception
1180         for handler clauses as well.
1181
1182         * verify.c (mono_method_verify): fix the exception clause
1183         ordering rules, it should use handler end offset and not
1184         start offset.
1185
1186 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
1187
1188         * rawbuffer.c: remove useless warning.
1189
1190 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
1191
1192         * threads.h, threads-types.h: move functions to the correct header
1193         (fixes bug#349952).
1194
1195 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * verify.c (mono_method_verify): proper verification
1198         of exception handling clauses ranges and fallthru in
1199         and out of protected blocks.
1200
1201 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1202
1203         * verify.c (mono_method_verify): fixed compilation issue.
1204
1205 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
1206
1207         * verify.c (mono_method_verify): a printf slipped in, changed
1208         to use verifier debug macro.
1209
1210 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
1211
1212         * verify.c (is_correct_leave): check for filter clauses.
1213
1214         * verify.c (do_filter): added.
1215
1216         * verify.c (mono_method_verify): property verification of leave.
1217
1218
1219 2007-12-18  Mark Probst  <mark.probst@gmail.com>
1220
1221         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
1222         Win32 build, until we figure out how to do the proper thing on
1223         Win32.
1224
1225 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
1226
1227         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
1228         by the previous patch.
1229         
1230         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
1231         the assembly resolve handler for refonly assemblies.
1232
1233 2007-12-17  Mark Probst  <mark.probst@gmail.com>
1234
1235         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
1236         Make sure only one thread is allowed to commence shutdown, and
1237         don't allow new threads to be started once shutdown is in
1238         progress.
1239
1240 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
1241
1242         * verify.c (is_correct_endfilter): added.
1243
1244         * verify.c (is_unverifiable_endfilter): added.
1245
1246         * verify.c (do_endfilter): added.
1247
1248         * verify.c (mono_method_verify): property verification of endfilter
1249         and fixed a corner case or endfinally.
1250
1251 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
1252
1253         * verify.h: new flags to support fail fast of unverifiable code and
1254         do non-strict verification. Non-strict verification is required to
1255         have MS runtime compatibility. There are a huge amount of unverifiable
1256         code that it accepts as verifiable. The strict mode verifies the code
1257         as the specs says.
1258         Non-strict mode will be required in cases where code needs to be
1259         accepted as verifiable but fails under strict mode.
1260
1261         * pedump.c: added support to fail fast and non-strict verification.
1262
1263         * verify.c: added support for both fail fast and non-strict verification.
1264
1265 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * verify.c (is_correct_endfinally): added.
1268
1269         * verify.c (mono_method_verify): property verification of endfinally.
1270
1271 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1272
1273         * verify.c (in_any_block): check for filter clauses.
1274
1275         * verify.c (is_correct_rethrow): added.
1276
1277         * verify.c (mono_method_verify): property verification of rethrow.
1278
1279         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
1280
1281 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
1282
1283         * verify.c (do_throw): added.
1284
1285         * verify.c (mono_method_verify): property verification of throw
1286
1287 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
1290         assemblies. Fixes #346425.
1291
1292 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
1295         FieldBuilders.
1296
1297         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
1298
1299         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
1300         prevent asserts when this is called with a token which might not be valid.
1301
1302         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
1303         lookup_dynamic_token_class with valid_token == FALSE.
1304
1305         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
1306
1307         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
1308
1309         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
1310         
1311 2007-12-10  Mark Probst  <mark.probst@gmail.com>
1312
1313         * gc.c: Don't delay threadpool thread finalization unless Mono is
1314         shutting down.
1315
1316 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1317
1318         * threads.c: turn an assert into a non-fatal warning.
1319
1320 2007-12-09  Robert Jordan  <robertj@gmx.net>
1321
1322         * icall.c (GetVirtualMethod): Add missing argument validation.
1323
1324 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1325
1326         * verify.c (do_cast): added.
1327
1328         * verify.c (mono_method_verify): property verification of castclass and isinst.
1329
1330
1331 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1332
1333         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
1334
1335         * verify.c (do_stelem): added.
1336
1337         * verify.c (mono_method_verify): property verification of stelem.X.
1338
1339 2007-12-07  Mark Probst  <mark.probst@gmail.com>
1340
1341         * class.c, class-internals.h: Introduce an environment variable
1342         (MONO_GENERIC_SHARING) through which the extent of generic code
1343         sharing can be controlled (share all classes, share only corlib
1344         classes, or share nothing).
1345
1346         * object.c: Only create runtime generic context for classes for
1347         which sharing is enabled.
1348
1349 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1350
1351         * verify.c (do_ldelem): refactor it to work with ldelem.any.
1352
1353         * verify.c (mono_method_verify): property verification of ldelem.any.
1354
1355 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
1356
1357         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
1358         added ldelem.X opcodes.
1359
1360         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
1361
1362         * verify.c: proper verification of ldelem.X 
1363
1364 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
1367
1368 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1369
1370         * verify.c (mono_method_verify): null literal requires special handling,
1371         the value pushed on stack need to be flagged as so.
1372
1373         * verify.c (do_ldelema): Verify ldelema properly.
1374
1375 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377         * verify.c: Verify ldlen properly.
1378
1379 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
1382         to the target object's type. Fixes #346160.
1383
1384 2007-12-05  Dick Porter  <dick@ximian.com>
1385
1386         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
1387         Solaris needs the same workaround as BSD-derived systems.  Fixes
1388         bug 323524, patch by Burkhard Linke
1389         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
1390
1391 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
1392
1393         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
1394         handle to use when error dialog is shown; otherwise, update mask
1395         to show no error dialog when an error occurs.
1396
1397 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
1400
1401         * class.c (mono_class_get_field_default_value): New helper function to initialize
1402         field->def_type and field->data.
1403
1404 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
1405
1406         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
1407         the general one.
1408
1409         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
1410
1411         * marshal.c: Avoid depending on delegate->method_info being set.
1412
1413         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
1414         
1415         * object.c (mono_delegate_ctor): Set delegate->method.
1416
1417         * object-internals.h (struct _MonoDelegate): Add 'method' field.
1418
1419         * appdomain.c: Bump corlib version.
1420
1421 2007-11-27  Raja R Harinath  <harinath@gmail.com>
1422
1423         * metadata.c (mono_generic_inst_equal_full): Short-circuit
1424         equality check if we're comparing canonicalized MonoGenericInsts.
1425
1426 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * class.c (generic_array_methods): Call mono_class_setup_methods () before
1429         accessing class->methods.
1430
1431 2007-11-22  Dick Porter  <dick@ximian.com>
1432
1433         * threads.c: Ensure that the synch_cs is set before trying to use
1434         it.
1435
1436 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
1437
1438         * profiler.c: r89126 broke the statistial profiler, unbreak.
1439
1440 2007-11-22  Martin Baulig  <martin@ximian.com>
1441
1442         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
1443
1444         * mono-debug.c
1445         (mono_debug_debugger_version): Bump to 3.
1446         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
1447         -> mono_debugger_class_initialized().
1448
1449         * mono-debug-debugger.c
1450         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
1451
1452         * class.c
1453         (mono_debugger_start_class_init_func): Removed.
1454         (mono_debugger_class_loaded_methods_func): Added.
1455         (mono_class_setup_methods): Call it here.
1456
1457 2007-11-22  Martin Baulig  <martin@ximian.com>
1458
1459         * mono-debug.c
1460         (mono_debug_add_delegate_trampoline): New public method.
1461         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
1462
1463         * mono-debug.h
1464         (MonoSymbolTable): Added `global_data_table'.
1465         (MonoDebuggerTypeKind): Removed.
1466
1467 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
1470         these methods.
1471
1472         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1473         
1474 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
1475
1476         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
1477
1478 2007-11-20  Martin Baulig  <martin@ximian.com>
1479
1480         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
1481
1482         * mono-debug-debugger.c
1483         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
1484         (mono_debugger_remove_breakpoint): Likewise.
1485         (mono_debugger_check_breakpoints): Likewise.
1486         (mono_debugger_register_class_init_callback): New public method.
1487         (mono_debugger_remove_class_init_callback): Likewise.
1488         (mono_debugger_add_type): Likewise.
1489
1490         * mono-debug-debugger.h
1491         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
1492
1493 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
1494
1495         * class.c: more interface implementations needed for the
1496         array enumerator (fixes bug #341112).
1497
1498 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
1499
1500         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
1501         fix ParamName of ArgumentNullExceptions.
1502
1503 2007-11-17  Miguel de Icaza  <miguel@novell.com>
1504
1505         * reflection.c (mono_reflection_encode_sighelper): Generate the
1506         modopts and modreqs.   I have a useless test that crashes monodis,
1507         but that shows the code working.
1508
1509 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
1510
1511         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
1512         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
1513
1514 2007-11-15  Dick Porter  <dick@ximian.com>
1515
1516         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
1517         When joining a thread, it's the thread that's calling Join that
1518         gets WaitSleepJoin state not the target.  Fixes the standalone
1519         test case in bug 334740, and hopefully the whole bug too.
1520
1521 2007-11-15  Dick Porter  <dick@ximian.com>
1522
1523         * process.c: Read file version info from the files pointed at by
1524         process modules, not the current process.  Fixes bug 315969.
1525
1526         Use windows typedef names in some places to fix warnings on the
1527         windows build.
1528
1529 2007-11-15  Mark Probst  <mark.probst@gmail.com>
1530
1531         * image.c, metadata-internals.h: Added a generic_class_cache hash
1532         to MonoImage for looking up generic classes when sharing generics.
1533
1534 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
1535
1536         * sgen-gc.c: warning cleanups.
1537
1538 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
1539
1540         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
1541         inherited properties.
1542
1543 2007-11-14  Mark Probst  <mark.probst@gmail.com>
1544
1545         * object.c, class-internals.h: Added more information to the
1546         runtime generic context.
1547
1548 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
1549
1550         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
1551         instead of just the target method. Generalize the abstract method handling to
1552         handle any non-static method.
1553
1554         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
1555         mono_marshal_get_delegate_invoke () signature change.
1556
1557 2007-11-13  Mark Probst  <mark.probst@gmail.com>
1558
1559         * class.c, class-internals.h: Made
1560         mono_type_get_basic_type_from_generic () public.  Fixed member
1561         access check for shared generics.
1562
1563         * loader.c: Don't insert field into field cache if it's part of a
1564         non-inflated generic class.
1565
1566         * domain.c, domain-internals.h: The generic sharing context is now
1567         part of the jit info data structure.  Added two accessor
1568         functions.
1569
1570 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
1571
1572         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
1573         the array Get/Set/Address methods, since the JIT inlines them.
1574
1575         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
1576
1577         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
1578         (mono_image_init): Initialize runtime_invoke_direct_cache.      
1579
1580         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
1581         mono_marshal_get_delegate_invoke signature change.
1582
1583         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
1584         an additional argument. Add support for invoking abstract methods.
1585
1586         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
1587
1588         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
1589
1590 2007-11-09  Mark Probst  <mark.probst@gmail.com>
1591
1592         * class.c: Do field layout for open generic classes as well.
1593
1594 2007-11-09  Mark Probst  <mark.probst@gmail.com>
1595
1596         * gc.c, gc-internal.h: Don't finalize threadpool threads with
1597         other objects, because the threadpool is still around.  Put them
1598         in a list instead and after finalizing all other objects in the
1599         root domain shut down the thread pool and then finalize the
1600         threads.  Fixes bug #337383.
1601
1602         * threads.c, thread-types.h: New mono_thread_create_internal()
1603         function for marking a thread with the threadpool flag before it
1604         started.  Set synch_cs to NULL after freeing it.
1605
1606         * threadpool.c: Mark threadpool threads before they start.
1607
1608 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
1609
1610         * reflection.h, reflection.c: don't export random functions
1611         and lazy load dbnull and missing objects.
1612
1613 2007-11-07  Jonathan Chambers <joncham@gmail.com>
1614
1615         * class.c: Initialize COM types if COM interfaces
1616         are present (not just COM classes).
1617         
1618         Code is contributed under MIT/X11 license.
1619
1620 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
1621         * reflection.c:
1622         create_dynamic_mono_image: hook module profiler events (dynamic case).
1623         mono_image_basic_init: hook assembly profiler events (dynamic case).
1624
1625 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
1626         * profiler.c:
1627         simple_appdomain_unload: completely terminate the profiler
1628         instead of only processing the statistical samples.
1629         simple_shutdown: make sure this is really called exactly once,
1630         even in multithreaded applications, and always listen to
1631         appdomain events.
1632         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
1633         here, the "[un]load" functions will do it.
1634         Fixes bugs #333791 and #325261.
1635
1636 2007-11-07  Geoff Norton  <gnorton@novell.com>
1637
1638         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
1639         rather than depend on __APPLE__.
1640
1641 2007-11-07  Mark Probst  <mark.probst@gmail.com>
1642
1643         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
1644
1645 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
1646
1647         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
1648         UTF16 MonoString. Fix the crash from bug #335488
1649
1650 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
1651
1652         * marshal.c: Correct (for non-Win32 OS) length != size in 
1653         mono_string_from_bstr. Fix #339530.
1654
1655 2007-11-06  Geoff Norton  <gnorton@novell.com>
1656
1657         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
1658         to succeed
1659
1660 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
1661
1662         * process.c: Added run-time GetProcessId API detection for Windows.
1663
1664 2007-11-04  Miguel de Icaza  <miguel@novell.com>
1665
1666         * reflection.c  (mono_param_get_objects): If a parameter has the
1667         attribute [System.Runtime.InteropServices.Optional] we should
1668         set the DefaultValue of the ParameterInfo to be
1669         System.Reflection.Missing instead of DBNull.
1670
1671         See bug #339013.
1672
1673         (mono_get_reflection_missing_object): New method,
1674         returns the System.Reflection.Missing.Value singleton instance.
1675
1676 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
1677
1678         * culture-info-table.h : regenerated.
1679
1680 2007-11-02  Jonathan Chambers <joncham@gmail.com>
1681
1682         * icall.c: Use GetEnvironmentStrings on windows
1683         so we are using the same environment block as 
1684         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
1685         #333740.
1686         
1687         Code is contributed under MIT/X11 license.
1688
1689 2007-10-31  Martin Baulig  <martin@ximian.com>
1690
1691         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
1692
1693         * mono-debug-debugger.h
1694         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
1695
1696 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
1699         classes.
1700
1701 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
1702
1703         * culture-info-table.h : regenerated.
1704
1705 2007-10-30  Robert Jordan  <robertj@gmx.net>
1706
1707         * icall-def.h, icall.c:
1708         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
1709
1710         Code is contributed under MIT/X11 license.
1711
1712 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * class.c (mono_class_setup_vtable): Find the inflated methods in the
1715         inflated class instead of inflating them again.
1716         
1717         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
1718         dynamic case.
1719
1720         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
1721         Call setup_supertypes () after klass->parent is set.
1722         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
1723
1724         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
1725         for inflated instances of not yet created dynamic generic classes.
1726         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
1727         times from inflated_method.
1728         (methodbuilder_to_mono_method): Ditto.
1729
1730 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
1731
1732         * gc.c: code cleanup and removed old untested option of not creating the
1733         finalizer thread.
1734
1735 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
1736
1737         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
1738         creating a jump trampoline for dynamic methods.
1739
1740 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
1741
1742         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
1743         generic TypeBuilders when called from another method of the same type (bug #335131).
1744
1745
1746 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
1749         doesn't seem to work perfectly.
1750         
1751         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
1752         called multiple times.
1753         (methodbuilder_to_mono_method): Ditto.
1754         (resolve_object): Inflate FieldBuilder's.
1755
1756 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
1757
1758         * string-icalls.c, string-icalls.h, appdomain.c: patch from
1759         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
1760         RemoveEmptyEntries in the string.Split implementation (bug #322375).
1761
1762 2007-10-26  Dick Porter  <dick@ximian.com>
1763
1764         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
1765         Thread initialisation changes
1766
1767 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
1768
1769         * verify.c: fix compatibility check between arrays and System.Array
1770
1771 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
1774         too. Fixes #336999.
1775
1776 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
1777
1778         * object.c (mono_value_box): Use typed allocation here.
1779
1780 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
1783         trampoline instead of compiling the method right away.
1784
1785         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
1786
1787 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
1790         related fields for dynamic classes. Fixes #334493.
1791
1792 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
1795         
1796         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
1797
1798         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
1799         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
1800
1801         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
1802
1803         * reflection.c (create_generic_typespec): Initialize klass->generic_container
1804         if needed.
1805         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
1806
1807 2007-10-18  Jonathan Chambers <joncham@gmail.com>
1808
1809         * marshal.c: Use correct key when removing item
1810         from ccw_hash.
1811         
1812         Code is contributed under MIT/X11 license.
1813
1814 2007-10-17  William Holmes  <billholmes54@gmail.com>
1815
1816         *marshal.c: Adding a case to marshal booleans to U1
1817
1818         Code is contributed under MIT/X11 license.
1819
1820 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * class.c (mono_class_from_name): Search the modules compromising dynamic
1823         assemblies. Fixes #331601.
1824
1825 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
1828         exception if the type name contains an assembly component. Fixes #334203.
1829
1830         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
1831         modules inside dynamic assemblies. Fixes #334200.
1832         
1833         * reflection.c: Set image->public_key and image->public_key_length;
1834
1835         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
1836         fields.
1837
1838         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
1839         
1840 2007-10-16  Mark Probst  <mark.probst@gmail.com>
1841
1842         * metadata.c: Implemented correct comparing of generic classes.
1843         An inflated generic class can be equal to a non-inflated one if it
1844         is inflated with generic type variables as type arguments.  Fixes
1845         bug #333798.
1846
1847 2007-10-15  Dick Porter  <dick@ximian.com>
1848
1849         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
1850         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
1851         81646.
1852
1853         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
1854         instead of a monitor lock.  This means that monitor_try_enter and
1855         co can set the thread state safely.
1856         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
1857         thread_interrupt_requested, so interrupt actually works.
1858
1859         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
1860         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
1861         state accessor function
1862
1863 2007-10-15  Martin Baulig  <martin@ximian.com>
1864
1865         * mono-debug.h
1866         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
1867         the debugger with the current runtime.
1868
1869 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
1870
1871         * object.c, object-internals.h: added the ability to set a single
1872         trampoline for all the slots in a vtable.
1873
1874 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
1875
1876         * marshal.c: deal with a possible race condition during multicast
1877         delegate invocation.
1878
1879 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
1880
1881         * class.c: ensure value type methods don't have the synchronized
1882         flag set.
1883
1884 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
1885
1886         * string-icalls.c, string-icalls.h: reverted unapproved patch that
1887         breaks the build.
1888
1889 2007-10-11  Joel Reed  <joelwreed@comcast.com>
1890
1891         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
1892         to take an options parameter so that empty entries can be removed during
1893         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
1894
1895 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
1896
1897         * marshal.c: make sure we don't store the signature from a dynamic
1898         method into the runtime invoke cache (bug #327189).
1899
1900 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
1901
1902         * marshal.c: make sure the wrapper methods are properly initialized.
1903
1904 2007-10-11  Mark Probst  <mark.probst@gmail.com>
1905
1906         * metadata.c, metadata-internals.h: Generalized
1907         mono_type_stack_size() to mono_type_stack_size_internal() which
1908         takes an additional argument specifying whether it allows open
1909         types.
1910
1911 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1912
1913         * verify.c (do_invoke_method): handle typedbyref params
1914         correctly and check for unverifiable return values.
1915
1916         * verify.c (do_newobj): fix a warning.
1917
1918 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1919
1920         * verify.c: don't tread typedbyref as allways unverifable,
1921         so uses, like (ld/st)loc.0 are valid. verify for the cases
1922         that it matters, like boxing related operations.
1923
1924 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1925
1926         * verify.c: add verification of the newobj opcode. verification
1927         of delegate instantation still missing due ldftn and virldftn not
1928         pushing the function type on stack
1929
1930 2007-10-08  Mark Probst  <mark.probst@gmail.com>
1931
1932         * class-internals.h: Runtime generic context data structure
1933         definition.
1934
1935         * object.c: Initialization of runtime generic context at runtime
1936         vtable creation time.
1937
1938 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
1939         * class.c (mono_class_create_from_typedef,
1940         mono_class_from_generic_parameter, mono_ptr_class_get,
1941         mono_fnptr_class_get, mono_bounded_array_class_get)
1942         * domain.c (mono_domain_create, mono_domain_free)
1943         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
1944         * image.c (do_mono_image_load, mono_image_close):
1945         Hooked up load-unload profiler events.
1946
1947 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1948
1949         * domain.c: track statistics about the actual amount of native code
1950         allocated.
1951
1952 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
1953
1954         * class.c: the valuetype enumerators don't have the additional
1955         supertypes interfaces.
1956
1957 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
1958
1959         * class.c: need more interfaces setup for the IEnumerator<T>
1960         object created for arrays (tests/ienumerator-interfaces.2.cs).
1961
1962 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
1965
1966 2007-10-05  Alp Toker  <alp@atoker.com>
1967
1968         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
1969         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
1970         #315863.
1971
1972 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
1973
1974         * verify.c (verify_type_compatibility_full): verification of
1975         compatibility improved, validates correctly non-strict checks between
1976         native int and I4 types different than (unsigned)int32.
1977
1978         * verify.c (do_store_indirect): added, do all verification of
1979         ldind.X opcodes. 
1980
1981         * verify.c (get_load_indirect_mono_type): renamed to
1982         get_indirect_op_mono_type, as it now returns the MonoType for 
1983         ldind.X and stind.X opcodes.
1984
1985 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
1986
1987         * reflection.c: Fix the encoding of generic type definition for
1988         TypeBuilders.
1989
1990         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
1991         mono_image_typedef_or_ref but allows to specify if typespec lookups should
1992         be made. Typespec check is done prior to typeref cache lookup.
1993
1994         * reflection.c (mono_image_typedef_or_ref): now just delegate to
1995         mono_image_typedef_or_ref_full.
1996
1997         * reflection.c (encode_generic_class): encode the generic class
1998         directly instead of calling encode_type.
1999
2000         * reflection.c (encode_type): encode the generic type definition
2001         MonoClass as a generic instantiation.
2002
2003         * reflection.c (create_typespec): cache typespec tokens in
2004         the assembly->typespec cache. Don't create typespec for a generic
2005         instance MonoClass. Create typespec for the generic type defintion.
2006
2007         * reflection.c (create_generic_typespec): encode the generic
2008         class directly instead of calling encode_type.
2009
2010         * reflection.c (mono_image_create_token): encode the generic
2011         type definition not using a typespec for MonoType instances.
2012
2013
2014 2007-10-04  Raja R Harinath  <rharinath@novell.com>
2015
2016         Fix #328812
2017         * class.c (mono_image_init_name_cache): Don't return nested
2018         'protected internal' classes.
2019         (mono_class_from_name_case): Likewise.
2020
2021 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
2022
2023         * icall-def.h, icall.c : get_bundled_machine_config() is now the
2024           common function used by both DefaultConfig in System.dll and
2025           InternalConfigurationHost in System.Configuration.dll.
2026
2027 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2028
2029         * class.c: automatically add to vectors only a few essential explicit
2030         generic interfaces. The rest of the interfaces that arrays should
2031         provide are currently implicitly added (but still not lazily, see the
2032         design in the discussion of bug#325495 for the details of what is
2033         needed for that). Additionally, implicit interfaces are assigned the
2034         same vtable slot as the explicit interfaces (as they are compatible):
2035         this enables huge memory savings since we don't need to instantiate
2036         as many memthods and as large vtables anymore. Also, Since
2037         GetEnumerator<T> returns an instance of a type that is required to
2038         support a similarly large set of interfaces as arrays, we add
2039         implicit interfaces and interface offset sharing support to those
2040         types, too. This change adds all the required interfaces so that
2041         the anonarray.cs test case in the bug report works (we don't add
2042         all the interfaces to arrays of arrays 3-level deep and more because
2043         of the memory requirements explained in the bug and since they are much
2044         less common: the lazy-loading support will enabled them to work, too).
2045
2046 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2047
2048         * verify.c (merge_stacks): major clean up, all type compatibility
2049         checks are done by verify_type_compatibility. This fix my earlier lack
2050         of understanding of the CLR type system and merge_stacks no longer looks
2051         scary.
2052
2053         * verify.c: fixed some bad spelling.
2054
2055 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
2056
2057         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
2058         a given stack slock.
2059         
2060         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
2061         verify_type_compatibility_full. This removed a near indentical function and fixed
2062         handling of Int32 and IntPtr across all opcodes.
2063
2064 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2065
2066         * class.c: only vectors have the additional generic interfaces.
2067
2068 2007-10-01  Jonathan Chambers <joncham@gmail.com>
2069
2070         * mono-config.c: Use g_strcasecmp instead of
2071         strcasecmp like everywhere else to fix
2072         compilation with MSVC.
2073         
2074         Code is contributed under MIT/X11 license.
2075
2076 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2077
2078         * object.c, object-internals.h: refactored the IMT code to enable
2079         building a single slot at a time and lazily creating the IMT trampolines
2080         and thunks.
2081
2082 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
2085
2086         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
2087         Fixes #328501.
2088         
2089 2007-09-29  Raja R Harinath  <harinath@gmail.com>
2090
2091         * loader.c (method_from_methodspec): Rearrange to avoid
2092         un-necessary exposition.  Don't assert out if the method's
2093         declaring type is a generic type definition.
2094
2095 2007-09-28  Martin Baulig  <martin@ximian.com>
2096
2097         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
2098
2099 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
2100
2101         * class-internals.h: optimize field layout of MonoClass to
2102         requires less cachelines at runtime and save a few bytes on 64 bit
2103         systems.
2104
2105 2007-09-28  Jb Evain  <jbevain@novell.com>
2106
2107         * reflection.c: when encoding type names in custom attributes,
2108         if the type is a closed generic type, its generic arguments
2109         have to be serialized as AssemblyQualifiedName, so that when
2110         they are deserialized, it's possible to re-create them properly.
2111         Fixes #329450.
2112
2113
2114 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2115
2116         * object.c, class-internals.h: added delegate-creation counter.
2117
2118 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
2119
2120         * class.c: cleanup of the code that synthetizes interfaces for
2121         arrays in 2.0: saves quit a bit of corlib mempool memory.
2122         Code to fix bug #325495 ifdeffed out for now until the issues
2123         with memory usage and O(n^2) behaviour are fixed.
2124
2125 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
2126
2127         * marshal.c: when possible, do not duplicate the name of the methods
2128         in the method builder and in the generated MonoMethod.
2129
2130 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2131         * verify.c: added support for type checking ldind_* opcodes.
2132
2133 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
2134
2135         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
2136         which is used to distinguish the fully open instantiation of a TypeBuilder
2137         with the rest. This temporary hack is required to restore the property that
2138         the fully open instantiation is the same type of the generic type definition.
2139
2140         * class-internals.h (mono_generic_class_is_generic_type_definition):
2141         new function as part of the internal API.
2142
2143         * class.c (inflate_generic_type): return NULL when the generic inst is
2144         fully open. The fully open generic type is now the same as the generic type
2145         definition for non TypeBuilder types.
2146
2147         * class.c (mono_generic_class_get_class): removed assert since it is
2148         no longer valid, gklass->cached_class can point to the generic type definition.
2149
2150         * class.c (mono_generic_class_is_generic_type_definition): new.
2151
2152         * metadata.c (mono_generic_class_hash): added is_tb_open field
2153         to the hash calculation.
2154
2155         * metadata.c (free_generic_class): if the generic class is associated
2156         with the generic type definition, its field will come from the mempool and
2157         must not be freed.
2158
2159         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
2160         new, this function identifies the corner case of a TypeBuilder fully open
2161         instantiation.
2162
2163         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
2164         for lookup. Set gclass->cached_class to be the container class in case of
2165         the fully open instantiation of non TypeBuilder types.
2166
2167         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
2168         to compare generic classes.
2169
2170         * reflection.c (method_encode_methodspec): remove assert that
2171         no longer is valid.
2172
2173         * reflection.c (mono_reflection_generic_class_initialize): add
2174         an aditional assert to ensure the proper type is used.
2175
2176 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
2177
2178         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
2179         to enjoy it.
2180
2181 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2182
2183         * verify.c (push_arg): Fixed support for ldarga
2184         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
2185         MonoType used as first arg in case of instance calls.
2186
2187 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * verify.c: Support for verifying VAR and MVAR types, 
2190
2191 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
2192
2193         * icall.c (ves_icall_get_property_info): Set the reflected type of the
2194         accessors correctly.
2195
2196 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
2197
2198         * threads.c: support OSX and other systems in
2199         mono_thread_get_stack_bounds (bug #328026).
2200
2201 2007-09-25  Martin Baulig  <martin@ximian.com>
2202
2203         * mono-debug.h
2204         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
2205
2206 2007-09-24  Martin Baulig  <martin@ximian.com>
2207
2208         * mono-debug.h
2209         (MonoDebugClassEntry): Moved the definition of this struct into
2210         mono-debug.c to make it private.
2211
2212         * mono-debug.c
2213         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
2214         type table per symbol file, we don't need to store the symfile id
2215         any longer.
2216
2217 2007-09-24  Martin Baulig  <martin@ximian.com>
2218
2219         Create one type table per symbol file, since a `MonoClass *' gets
2220         invalid when its image is unloaded.
2221
2222         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
2223         (MonoDebugHandle): Added `type_table'.
2224
2225 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
2226
2227         * mempool.c, mempool.h: added mono_mempool_new_size () API
2228         to be able to specify a smaller initial size for the pool.
2229         Adjusted the code to slowly increase pool size before using
2230         the previous default size.
2231         * image.c: use a small initial size for image mempools.
2232
2233 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
2234
2235         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
2236         Fixes ##320990.
2237
2238         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
2239         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
2240
2241 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * metadata.c (mono_type_create_from_typespec): Remove an invalid
2244         free. Fixes #327438.
2245
2246 2007-09-21  Raja R Harinath  <harinath@gmail.com>
2247
2248         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
2249         generic instantiations, etc.
2250         <MONO_TYPE_ARRAY>: Likewise.
2251
2252 2007-09-21  Martin Baulig  <martin@ximian.com>
2253
2254         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
2255         these structs were never defined.
2256         (MonoDebugHandle): Removed the `_priv' field, it was never used.
2257
2258 2007-09-21  Martin Baulig  <martin@ximian.com>
2259
2260         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
2261
2262 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
2263
2264         * image.c: removed the guid hash tables: we can get the same info
2265         without the additional memory usage hit (partially fixes also bug #327052).
2266
2267 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
2268
2269         * profiler.h, profiler-private.h, profiler.c: add a new profiler
2270         event to handle unloading methods. After the event is called, the
2271         corresponding MonoMethod* must be considered invalid.
2272         * loader.c (mono_free_method): call the new mono_profiler_method_free
2273         event.
2274
2275 2007-09-20  Mark Probst  <mark.probst@gmail.com>
2276
2277         * domain-internals.h: New flag in MonoJitInfo which marks shared
2278         generic methods.  New hash table (shared_generics_hash) in
2279         MonoDomain to keep track of shared generic methods.  Prototypes
2280         for functions to register and lookup shared generic methods.
2281
2282         * domain.c: Support for registering and looking up shared generic
2283         methods via a hash table (shared_generics_hash) in MonoDomain.
2284
2285         * class-internals.h: New exception to signal failure of shared
2286         compilation of a generic method.  New counters for generics
2287         sharing in MonoStats.
2288
2289 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
2290
2291         * image.c, metadata-internals.h: don't keep a file descriptor open
2292         for loaded assemblies (bug#325988).
2293
2294 2007-09-19  Raja R Harinath  <rharinath@novell.com>
2295
2296         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
2297         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
2298         use the corresponding datatypes.
2299         (type_in_image): Update to changes.
2300         (CleanForImageUserData): Simplify.
2301         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
2302         Avoid quadratic behaviour in handling the "stolen" list by
2303         separating the filter predicate out, and by prepending the stolen
2304         items rather than appending them.
2305         (steal_ginst_in_image): Likewise.
2306         (mono_metadata_clean_for_image): Update to changes.
2307
2308 2007-09-19  Martin Baulig  <martin@ximian.com>
2309
2310         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
2311
2312 2007-09-19  Martin Baulig  <martin@ximian.com>
2313
2314         * mono-debug.c (mono_debug_cleanup): Don't call
2315         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
2316
2317 2007-09-19  Raja R Harinath  <harinath@gmail.com>
2318
2319         Fix crash on 'make run-test' in mcs/errors
2320         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
2321         Avoid more potential allocations in mono_class_from_mono_type.
2322         (ginst_in_image): Update to changes.
2323         (gclass_in_image): Rearrange slightly.
2324
2325 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * class.c (mono_class_init): Move the code that sets up class->methods to 
2328         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
2329
2330         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
2331         canonical instance of an inflated generic signature.
2332         (mono_type_create_from_typespec): Remove an invalid free.
2333
2334         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
2335
2336 2007-09-18  Marek Habersack  <mhabersack@novell.com>
2337
2338         * domain-internals.h: added a declaration of the
2339         mono_assembly_load_full_nosearch internal function.
2340
2341         * assembly.c (mono_assembly_load_with_partial_name): use
2342         mono_try_assembly_resolve return value properly.
2343         (mono_assembly_load_full_nosearch): copied the function body from
2344         mono_assembly_load_full, without the code to invoke assembly
2345         search hooks.
2346         (mono_assembly_load_full): calls the above new function and if the
2347         assembly is not resolved, invokes the search hooks.
2348
2349         * appdomain.c (mono_runtime_init): restore the global postload
2350         assembly search handlers.
2351
2352 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
2353
2354         * class.c (mono_class_init): Make sure class->methods and class->properties
2355         are never NULL in the generics case.
2356
2357         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
2358
2359 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * metadata.c (free_generic_class): Disable some code to fix the build.
2362
2363         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
2364
2365         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
2366         from the image mempool.
2367
2368         * metadata.c (free_generic_class): Free more data from the inflated class.
2369
2370         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
2371
2372         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
2373         mempool.
2374         (mono_type_create_from_typespec): Ditto.
2375
2376         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
2377         MonoImage to the caller.
2378         (mono_init_internal): Save the opened image in a global variable.
2379         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
2380
2381         * reflection.c (resolve_object): Fix a leak.
2382
2383         * metadata.c: Fix the freeing of data in the generics caches.
2384         
2385         * metadata.c (free_generic_inst): Comment this out to fix the build.
2386         (free_generic_class): Ditto.
2387
2388         * metadata.c: Free cached generic methods, instantinations and classes when
2389         they are removed from the caches.
2390         (mono_metadata_free_type): Free the type itself.
2391
2392         * class.c: Free the result of mono_class_inflate_generic_type () in a few
2393         places.
2394
2395 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
2396
2397         * boehm-gc.c: restrict managed allocs to __thread supporting
2398         architectures.
2399
2400 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
2403         (mono_generic_class_get_class): Fix a leak.
2404
2405         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
2406         mono_metadata_free_type ().
2407         (mono_metadata_inflate_generic_inst): Fix a leak.
2408
2409 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * mono-debug.c (free_header_data): Fix a leak missed earlier.
2412
2413         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
2414         mempool.
2415
2416         * mono-debug.c (mono_debug_close_image): Fix call to 
2417         g_hash_table_remove ().
2418
2419 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
2420
2421         * icall-def.h: redirect all the string ctor to the managed
2422         CreateString () methods.
2423         * string-icalls.c, string-icalls.h: removed dead code for string
2424         ctors and icalls.
2425
2426 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
2427
2428         * mono-debug.c: Fix memory leaks.
2429
2430 2007-09-14  Jonathan Chambers <joncham@gmail.com>
2431
2432         * threads-types.h: Implement mono_hazard_pointer_set and 
2433         mono_hazard_pointer_clear macros using do/while(0) to fix
2434         compilation with MSVC.
2435         
2436         Code is contributed under MIT/X11 license.
2437
2438 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
2439
2440         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
2441         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
2442
2443 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2444
2445         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
2446         icalls.
2447
2448 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
2449
2450         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
2451         managed-code allocated as well.
2452
2453 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * class.c (mono_class_is_assignable_from): Add support for generic variance.
2456
2457 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
2458
2459         * boehm-gc.c: fixed the build after the AOT changes.
2460
2461 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * wrapper-types.h: Add an ALLOC wrapper type.
2464
2465         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
2466         reference managed allocator methods.
2467
2468 2007-09-12  Marek Safar  <marek.safar@gmail.com>
2469
2470         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
2471         of Type array and not MonoType, a fix suggested by Hari.
2472         
2473 2007-09-12  Jonathan Chambers <joncham@gmail.com>
2474
2475         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
2476         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
2477         
2478         Code is contributed under MIT/X11 license.
2479
2480 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
2481
2482         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
2483
2484 2007-09-12  Marek Habersack  <mhabersack@novell.com>
2485
2486         * image.c (do_mono_image_open): if assembly file fails to open and
2487         MONO_IOMAP is in effect, try to find the path in a
2488         case-insensitive way.
2489
2490         * appdomain.c (mono_runtime_init): do not install postload hooks -
2491         tests show that MS.NET doesn't use anything of that sort to
2492         trigger the AppDomain.AssemblyResolve event.
2493         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
2494         made non-static.
2495         (mono_runtime_init): init portability helpers here.
2496
2497         * assembly.c (mono_assembly_load_with_partial_name): if other   
2498         attempts fail, trigger the AppDomain.AssemblyResolve event handler
2499         to resolve the assembly.
2500
2501         * domain-internals.h: added mono_try_assembly_resolve and marked
2502         it as internal.
2503
2504 2007-09-11  Jb Evain  <jbevain@novell.com>
2505
2506         * object-internals.h (MonoReflectionDynamicMethod): add
2507         a `MonoReflectionType *owner` field. The owner is used
2508         * reflection.c:
2509         (mono_reflection_create_dynamic_method): use the owner of the dynamic
2510         method as the class declaring the dynamic method.
2511         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
2512         dynamic method to the declaring type of the methodbuilder.
2513
2514 2007-09-11  Mark Probst  <mark.probst@gmail.com>
2515
2516         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
2517         rules for calling methods via reflection.
2518
2519 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * reflection.c (resolve_object): Add support for MonoGenericClass. 
2522         Inflate MonoType's.
2523
2524 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
2525
2526         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
2527         provide a managed method that does fast allocations without needing
2528         a managed->unmanaged transition. Boehm GC implementation currently
2529         enabled for ptrfree objects on sane architectures.
2530
2531 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
2532
2533         * marshal.c, marshal.h: exported a couple of useful functions and
2534         added mono_mb_get_label () to easily handle backward branches.
2535
2536 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
2539
2540 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
2541
2542         * loader.c (find_method): Fixed the regression introduced while
2543         fixing bug #81466.
2544
2545 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
2548         well.
2549         
2550         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
2551         icall.c reflection.c: Pass a MonoGenericContext argument to 
2552         mono_lookup_dynamic_token ().
2553
2554         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
2555         #82744.
2556         
2557 2007-09-09  Robert Jordan  <robertj@gmx.net>
2558
2559         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
2560         for generic methods.
2561
2562         * object.c (mono_object_get_virtual_method): Handle generic methods.
2563         Fixes bug #78882.
2564
2565         Code is contributed under MIT/X11 license.
2566
2567 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
2568
2569         * image.c: fix locking in mono_image_load_file_for_image ().
2570
2571 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
2572
2573         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
2574         used only as a cache: added an icall to fill it.
2575
2576 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
2577
2578         * reflection.h: exposed mono_reflection_free_type_info
2579         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
2580         since mono_reflection_bind_generic_parameters makes a copy of it.
2581         * reflection.c (free_type_info): subinfos should be freed.
2582         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
2583         made non static.
2584         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
2585         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
2586         this fixes #82695 and #81726.
2587    
2588
2589 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
2590
2591         * process.h, process.c:  added support for user profile/info in
2592           ProcessStartInfo. For now only Windows works.
2593
2594 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
2595
2596         * metadata.c: consider the generic arguments when comparing
2597         signatures (bug #82614).
2598
2599 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2600
2601         * cil-coff.h, image.c: updated assembly loader to cope with the
2602         PE32+ 64 bit file format.
2603
2604 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
2605
2606         * assembly.c, class.c, domain.c, loader.c: remove useless
2607         inclusion of cil-coff.h.
2608
2609 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
2610
2611         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
2612         if interface is marked with CoClassAttribute. 
2613    
2614         Code is contributed under MIT/X11 license.
2615
2616 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
2617
2618         * sgen-gc.c: ensure no object from the to space is copied again or finalized
2619         if it's seen twice in major collections.
2620
2621 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
2622
2623         * sgen-gc.c: big objects are not copied to the gray area, but they
2624         need to be considered for scanning, too, if they are brought alive
2625         by an object ready for finalizations or a survived one.
2626
2627 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
2628
2629         * sgen-gc.c: properly account the number of disappearing links when
2630         they are nullified.
2631
2632 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
2633
2634         * sgen-gc.c: share the code to scan the registered roots between the
2635         different types of collections.
2636
2637 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
2640
2641 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
2644         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
2645
2646 2007-08-28  Mark Probst  <mark.probst@gmail.com>
2647
2648         * security-manager.c (mono_security_manager_get_methods):
2649         LinkDemandSecurityException now has 2 arguments instead of 3.
2650
2651 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
2654         platforms which need it.
2655
2656 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
2657
2658         * sgen-gc.c: unregister thread data structures with a pthread_key_t
2659         dtor.
2660
2661 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
2662
2663         * threads.c: free the thread static data on thread exit.
2664
2665 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
2666
2667         * class.c: walk the hierarchy to find the generic definition for
2668         a class (fixes runtime part of bug #82498).
2669
2670 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
2673         ...
2674
2675         * image.c (mono_image_close): Here. Hopefully fixes #82510.
2676
2677 2007-08-24  Mark Probst  <mark.probst@gmail.com>
2678
2679         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
2680
2681 2007-08-24  Robert Jordan  <robertj@gmx.net>
2682
2683         * appdomain.c: don't perform the ':'->';' substitution on Win32.
2684
2685 2007-08-24  Jb Evain  <jbevain@novell.com>
2686
2687         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
2688         for byref types.
2689
2690 2007-08-24  Mark Probst  <mark.probst@gmail.com>
2691
2692         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
2693         #82286.
2694
2695 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * assembly.c: Fix a warning.
2698         
2699 2007-08-23  Marek Habersack  <mhabersack@novell.com>
2700
2701         * appdomain.c: parse the <runtime> section looking for the probing
2702         element with the 'privatePath' attribute, which sets additional
2703         directories in which the runtime should look for assemblies.
2704
2705 2007-08-23  Robert Jordan  <robertj@gmx.net>
2706
2707         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
2708         Fixes #82499.
2709
2710 2007-08-23  Martin Baulig  <martin@ximian.com>
2711
2712         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
2713         _mono_debug_init_corlib() and remove it from the header file.
2714
2715 2007-08-23  Martin Baulig  <martin@ximian.com>
2716
2717         * mono-debug-debugger.c
2718         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
2719         don't notify the debugger about it.
2720
2721         * mono-debug-debugger.h
2722         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
2723
2724 2007-08-23  Robert Jordan  <robertj@gmx.net>
2725
2726         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
2727         Code is contributed under MIT/X11 license.
2728
2729 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
2730
2731         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
2732
2733 2007-08-22  Martin Baulig  <martin@ximian.com>
2734
2735         * mono-debug.c: Store debugging info on a per-domain basis and
2736         free it on domain unload.  Add support for unloading symbol files.
2737
2738         * mono-debug.h
2739         (MonoDebugList): New typedef.
2740         (MonoSymbolTable):
2741         - add `data_tables and `type_table'.
2742         - replace 'symbol_files' and `num_symbol_files' with a
2743           `MonoDebugList *'.
2744         (mono_debug_data_table): Removed.
2745         (mono_debug_list_add): New public function.
2746         (mono_debug_list_remove): New public function.
2747         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
2748         (mono_debug_init_2_memory): Renamed into
2749         mono_debug_open_image_from_memory().
2750         (mono_debug_close_image): New public function.
2751         (mono_debug_domain_create): Likewise.
2752         (mono_debug_domain_unload): Likewise.
2753         (MONO_DEBUGGER_VERSION): Bump to 60.
2754
2755         * mono-debug-debugger.h
2756         (MonoDebuggerEvent):
2757         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
2758         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
2759         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
2760         - rename `THREAD_CREATED' and `THREAD_EXITED' into
2761           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
2762         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
2763           meaning.
2764         (mono_debugger_add_symbol_file): Removed.
2765         (mono_debugger_add_type): Removed.
2766         (mono_debugger_lookup_type): Removed.
2767         (mono_debugger_lookup_assembly): Removed.
2768
2769         * domain.c
2770         (mono_domain_create): Call mono_debug_domain_create().
2771         (mono_init_internal): Call mono_debug_init_corlib().
2772
2773         * assembly.c
2774         (mono_assembly_close): Call mono_debug_close_image().
2775
2776 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
2777
2778         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
2779         mmap call.
2780
2781 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
2782
2783         * sgen-gc.c: ensure section->pin_queue_end is initialized
2784         correctly when non pinning objects in the section have been found.
2785
2786 2007-08-22  Marek Habersack  <mhabersack@novell.com>
2787
2788         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
2789         containing a list of directories separated by ':'. MSDN docs say
2790         the directories should be separated with ';'. Part of a bugfix for
2791         bug #81446
2792
2793 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
2794
2795         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
2796         it should MonoType and not MonoClass.
2797
2798 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
2799
2800         * culture-info-table.h : regenerated.
2801
2802 2007-08-20  William Holmes  <billholmes54@gmail.com>
2803
2804         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
2805          to call ReplaceFile Kernel32 on windows or in io-layer.
2806         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
2807         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
2808          as an internal call.
2809
2810         Code is contributed under MIT/X11 license.
2811
2812 2007-08-20  Jb Evain  <jbevain@novell.com>
2813
2814         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
2815         and MONO_EXCEPTION_FIELD_ACCESS.
2816
2817         * debug-helpers.[c|h]: new mono_field_full_name function.
2818
2819 2007-08-20  Mark Probst  <mark.probst@gmail.com>
2820
2821         * class.c: Removed class_security_level() and moved it to
2822         security-core-clr.c.
2823
2824         * security-core-clr.c, security-core-clr.h: class_security_level()
2825         is now public and renamed to mono_security_core_clr_class_level().
2826         It also looks for security attributes in the classes a class is
2827         nested in.
2828
2829 2007-08-20  Mark Probst  <mark.probst@gmail.com>
2830
2831         * security-core-clr.c, security-core-clr.h: CoreCLR security
2832         utility functions.
2833
2834         * Makefile.am: Added security-core-clr.[ch].
2835
2836         * security-manager.c, security-manager.h: Functions and enum for
2837         setting and getting the security mode.
2838
2839         * class.c: CoreCLR security checks.
2840
2841 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
2842
2843         * icall-def.h, process.c, process.h: implemented icall to get
2844         user/system processor times.
2845
2846 2007-08-17  Mark Probst  <mark.probst@gmail.com>
2847
2848         * domain.c, threads.c, class-internals.h, domain-internals.h: New
2849         reader-lock-free jit_info_table.
2850
2851 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
2854
2855         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
2856
2857         * object-internals.h (MonoException): Add missing _data member.
2858
2859 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
2860
2861         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
2862         checking that only methods with matching qname or fqname are picked
2863         from implemented interfaces.
2864
2865 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * verify.c (do_newarr):added, do type verification of
2868         newarr ops, push the right value on the eval stack.
2869         * verify.c (mono_method_verify): use do_newarr
2870
2871
2872 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
2873
2874         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
2875         factored the common code into get_boxable_mono_type, which
2876         is now using mono_type_get_full, this fixed byref related tests.
2877
2878 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
2879
2880         * class.c: added mono_type_get_full, this function has the same
2881         behavior of mono_class_get_full but the returned MonoType has
2882         all metadata of the associated token in case of a typespec token.
2883         * class.c: added mono_type_retrieve_from_typespec, used by 
2884         mono_type_get_full to retrieve the token type.
2885         * class.c (mono_class_create_from_typespec): changed to use
2886         mono_type_retrieve_from_typespec.
2887         * class.c (mono_ldtoken): changed to use mono_type_get_full
2888         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
2889         * class-internals.h: exported mono_type_get_full for internal use.
2890
2891 2007-08-16  Jb Evain  <jbevain@novell.com>
2892
2893         * domain.c (supported_runtimes): add entry for
2894         the 'moonlight' runtime version.
2895
2896 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
2897
2898         * verify.c (mono_method_verify): small typo sliped in.  
2899
2900 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
2901
2902         * verify.c (do_unbox_value): added, do type verification of
2903         unboxing ops
2904         * verify.c (mono_method_verify): use do_unbox_value
2905
2906
2907 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
2908
2909         * verify.c (dump_stack_value): fixed typo, was printing string
2910         instead of object on stack.
2911         * verify.c (do_box_value): moved the byref check up as it leads
2912         to invalid code and should be done earlier.
2913         * verify.c: improved error messages for and ldobj
2914
2915 2007-08-15  William Holmes  <billholmes54@gmail.com>
2916
2917         * marshal.c (emit_marshal_custom): Omit the call to 
2918           marshal_native_to_managed when calling native to managed 
2919           and the argument is specified as an out argument.
2920
2921         Code is contributed under MIT/X11 license.
2922
2923 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
2924
2925         * verify.c: fixed the type checks for generics, function pointers and vectors.
2926         Added type verification for ldobj and ldtoken. The verifier
2927         would segfault if header or signature of a method contained references
2928         to non-existant types.
2929
2930 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
2931
2932         * marshal.c (cominterop_get_ccw): Patch from
2933         Bill Holmes to no walk up interface hierarchy. 
2934         All parent methods should be present in the interface for COM.
2935    
2936         Code is contributed under MIT/X11 license.
2937
2938 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
2939
2940         * marshal.c (emit_marshal_com_interface): Patch from
2941         Bill Holmes to handle COM Interfaces as return values
2942         for native->managed calls.
2943    
2944         Code is contributed under MIT/X11 license.
2945
2946 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
2947
2948         * marshal.c (cominterop_get_idispatch_for_object): Implement
2949         for runtime callable wrappers.
2950    
2951         Code is contributed under MIT/X11 license.
2952
2953 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
2954
2955         * pedump.c (main): changed from mono_init to mono_init_from_assembly
2956         so 2.0 types are accessible
2957
2958
2959 2007-08-13  Miguel de Icaza  <miguel@novell.com>
2960
2961         * domain.c (mono_init_internal): Call mono_assembly_load_friends
2962         once we load mscorlib.   Due to the order in which we initialize,
2963         the mono_assembly_load_full routine that loads mscorlib did not
2964         load friends.   We now load it once we load the
2965         mono_defaults.internals_visible_class class. 
2966
2967         * assembly.c: Expose the mono_load_friend_assemblies method.
2968
2969 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
2970
2971         * verify.c: improved the handling of boxing, better
2972         type checking for unary ops and conversion. Fix bug
2973         regarding managed pointer compatibility checking
2974
2975 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
2976
2977         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
2978
2979         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
2980
2981 2007-08-09  Raja R Harinath  <rharinath@novell.com>
2982
2983         * reflection.c (dup_type): Remove.
2984         * class.c (dup_type): Remove.
2985         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
2986         instead of the dodgy 'dup_type'.
2987         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
2988         handle the case where 'dup_type' needed the second argument.
2989
2990 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * domain.c: Fix a warning.
2993
2994 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
2995
2996         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
2997         checking that methods with the same fqname are not overridden
2998         with a method from an ancestor.
2999
3000 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * threads.c (free_thread_static_data_helper): Avoid a crash if
3003         thread->static_data is not yet set.
3004
3005 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
3006
3007         * marshal.c: Use correct image when emitting
3008         native wrapper for COM calls.
3009    
3010         Code is contributed under MIT/X11 license.
3011
3012 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
3013
3014         * icall-def.h, security.c, security.h :
3015           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
3016
3017 2007-08-07  Martin Baulig  <martin@ximian.com>
3018
3019         * mono-debug-debugger.h
3020         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
3021
3022         * domain.c (mono_domain_free): Call
3023         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
3024
3025 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3026
3027         * verify.c (check_underflow, check_overflow): error message now returns IL offset
3028         * verify.c (in_same_block): code should test if either offset is inside the clauses
3029         * verify.c (mono_method_verify): push the exception into the eval stack of exception
3030         and filter blocks
3031
3032 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3033
3034         * image.c (mono_image_close): Fix a leak.
3035
3036         * object.c (mono_runtime_invoke_array): Avoid using alloca.
3037
3038         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
3039
3040 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
3041
3042         * domain.c, threads.c, threads-types.h: fix memory retention issue
3043         with thread static variables not being cleared on domain unload.
3044         Reuse thread static slots after domain unload.
3045
3046 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
3047
3048         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
3049         nullable type.
3050
3051         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
3052         now done in mono_runtime_invoke_array.
3053
3054         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
3055         receiver is a nullable type.
3056
3057         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
3058         generic parameter.
3059
3060 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
3061
3062         * marshal.c: Implement COM Objects as return type for 
3063         managed->unmanaged calls. Added Release calls for COM Object
3064         out/return values in managed->unmanaged calls.
3065
3066         Code is contributed under MIT/X11 license.
3067
3068 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
3069
3070         * threads.h, threads-type.h: move the hazard pointer declarations
3071         to the private header.
3072
3073 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
3074
3075         * file-io.c, appdomain.c: memory leak fixes.
3076
3077 2007-08-02  Dick Porter  <dick@ximian.com>
3078
3079         * socket-io.c
3080         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
3081         SO_REUSEADDR setting into io-layer/sockets.c.
3082
3083 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
3086         from Object when called on a generic parameter. Fixes #82211.
3087
3088 2007-08-01  Dick Porter  <dick@ximian.com>
3089
3090         * file-io.c (convert_share): Test FileShare values bit-by-bit.
3091         Fixes bug 79250 yet again.
3092
3093 2007-07-30  Martin Baulig  <martin@ximian.com>
3094
3095         Merged the `debugger-dublin' branch.
3096
3097         * mono-debug.h
3098         (MonoDebugDataTable): New typedef.
3099         (MonoDebugMethodAddressList): New typedef.
3100         (MonoDebugWrapperData): Removed.
3101         (MonoDebugSymbolTable): Removed `current_data_table',
3102         `current_data_table_size', `current_data_table_offset'.
3103         (MonoDebugDataItemType): Moved into mono-debug.c.
3104         (MonoDebugMethodJitInfo): Remove `address'.
3105         (mono_debug_data_table): New global variable.
3106         (mono_debug_lookup_method_addresses): New public function.
3107         (mono_debug_find_method): Take a `MonoMethod *', not a
3108         `MonoDebugMethodInfo *'.
3109
3110         * mono-debug.c: Drop support for the old symbol tables.
3111
3112 2007-06-28  Martin Baulig  <martin@ximian.com>
3113
3114         * mono-debug.c (mono_debug_debugger_version): New public variable.
3115
3116 2007-07-31  William Holmes  <billholmes54@gmail.com>
3117
3118         * metadata.c Changed mono_type_create_from_typespec to not insert
3119           the type into the hash map until after
3120           do_mono_metadata_parse_type has completed.
3121         Fixes Bug #82194
3122         Code is contributed under MIT/X11 license.
3123
3124 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
3127         generic parameter. Fixes #82211.
3128
3129 2007-07-27  Jb Evain  <jbevain@novell.com>
3130
3131         * pedump.c (dump_metadata, dump_metadata_header): dump
3132         versions contained in the metadata header.
3133
3134 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
3135
3136         * threads.c: register small_id_table with the GC.
3137
3138 2007-07-27  Mark Probst  <mark.probst@gmail.com>
3139
3140         * threads.c, threads.h, class-internals.h, object-internals.h:
3141         Hazard pointers, to be used by lock-free parallel algorithms.
3142
3143 2007-07-26  Dick Porter  <dick@ximian.com>
3144
3145         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
3146         routine on non-windows platforms, as I've not managed to think of
3147         a non-kludgy way of doing this.  Finishes off bug 78739.
3148
3149 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
3150
3151         * object.c: properly setup interface_bitmap in proxy vtables.
3152
3153 2007-07-25  Marek Habersack  <mhabersack@novell.com>
3154
3155         * appdomain.c (get_shadow_assembly_location): do not use TickCount
3156         to create unique shadow copy target directories, use the domain's
3157         serial number instead. Each domain gets a unique target directory
3158         that way.
3159
3160         * domain.c (mono_domain_create): added code to increment domain
3161         shadow copy serial number and cache the value in the current
3162         domain structure.
3163
3164         * domain-internals.h (struct _MonoDomain): added a new field -
3165         shadow_serial to hold the serial number used in generation of
3166         shadow-copy directories. This is to make sure that the directory
3167         name is unique for each and every domain created. We avoid a race
3168         condition with overriding assemblies already in use by other app
3169         domains.
3170
3171 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
3172
3173         * class.c (mono_bounded_array_class_get): fixed memory leak when 
3174         binding generic parameters.
3175
3176 2007-07-24  Raja R Harinath  <rharinath@novell.com>
3177
3178         * metadata.c (do_mono_metadata_parse_generic_class): Use
3179         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
3180         error.
3181
3182 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
3183
3184         * loader.c, class-internals.h, reflection.c: removed the per-method
3185         generics hashtable: we use the global one through the call of
3186         mono_class_inflate_generic_method ().
3187
3188 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
3189
3190         * class.c, metadata.c, class-internals.h: introduce yet another
3191         generics global cache for inflated methods (fixes 98% of the perf
3192         issue in bug #81806).
3193
3194 2007-07-23  Raja R Harinath  <rharinath@novell.com>
3195
3196         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
3197         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
3198         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
3199         return a MonoGenericInst containing (a copy) of those types.
3200         (mono_metadata_inflate_generic_inst): Update to changes.
3201         (mono_metadata_parse_generic_inst): Likewise.
3202         (mono_get_shared_generic_inst): Likewise.
3203         * reflection.c (mono_class_bind_generic_parameters): Likewise.
3204         (mono_reflection_bind_generic_method_parameters): Likewise.
3205         * metadata-internals.h: Likewise.
3206         * icall.c (free_generic_context): Kill.
3207         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
3208
3209         * reflection.c (reflection_methodbuilder_to_mono_method): Use
3210         mono_metadata_type_dup.
3211         * marshal.c (mono_mb_create_method): Likewise.
3212
3213         * metadata.c (mono_metadata_type_dup): Rename from
3214         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
3215         MonoImage.  Handle a few more cases, esp. when no mempool is given.
3216         * marshal.c, metadata-internals.h: Update to changes.
3217
3218 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
3219
3220         * class.c: fixed a small leak for array classes and removed warning.
3221
3222 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * loader.c (mono_method_get_param_token): Make this work on generic methods.
3225         Return 0x8000000 for return parameters. Fixes #82161.
3226
3227 2007-07-21  Marek Habersack  <grendello@gmail.com>
3228
3229         * appdomain.c (get_shadow_assembly_location): append the current
3230         ticks value to the path. Avoids overwriting the same assemblies by
3231         several threads at the same time.
3232
3233 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3234         and Raja R Harinath  <rharinath@novell.com>
3235
3236         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
3237         Simplify slightly.
3238         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
3239         property for testing if a method is a generic method definition.
3240
3241 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
3242
3243         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
3244
3245 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3246
3247         * verify.c: used function from private branch, reverted to the one in class.h 
3248
3249 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3250
3251         * verify.c: a typo slipped in and the code wont compile
3252
3253 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3254
3255         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
3256         disabled box instruction as it is doing the wrong thing
3257         improved stack dump messages, now it is easier to debug type related issues
3258
3259
3260 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
3261
3262         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
3263
3264 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3265
3266         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
3267         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
3268         grouped with class and valuetype. This change will simply 
3269         the code as it should be handled just like unmanaged pointers.
3270
3271 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3272
3273         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
3274
3275 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
3276
3277         * verify.c: several stack merge issues fixed, reference comparisons now
3278         check the type size. strict type check now works correctly.
3279         added more uses of IS_MANAGED_POINTER macro.
3280         fixed issues pointed by running the test suite against .net.
3281         
3282
3283 2007-07-19  Mark Probst  <mark.probst@gmail.com>
3284
3285         * class.c, loader.c, class-internals.h: Removed the
3286         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
3287         defines.
3288
3289         * icall.c: Better error checking in some internal reflection
3290         methods.
3291
3292 2007-07-18  William Holmes  <billholmes54@gmail.com>
3293
3294         * filewatcher.c : removed unused variable 'filename' in 
3295           ves_icall_System_IO_FSW_SupportsFSW
3296
3297 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
3298
3299         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
3300         obsolete, removed.
3301
3302 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
3305         
3306         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
3307
3308 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
3311         Implement generics support.
3312         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3313
3314         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
3315         type_args and method_args arguments.
3316         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
3317         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
3318         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
3319
3320 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
3321
3322         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
3323           It adds a rootimage parameter to mono_reflection_get_type_internal,
3324           adds new function mono_reflection_get_type_with_rootimage and use
3325           the rootimage to resolve the types instead of the current image
3326
3327 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3328
3329         * culture-info-table.h: Forgot to update after r78304.
3330
3331 2007-07-13  Raja R Harinath  <rharinath@novell.com>
3332
3333         * class.c (mono_class_is_open_constructed_type)
3334         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
3335
3336 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
3337
3338         * class.c (mono_bounded_array_class_get):  method fails if used with
3339         an incomplete TypeBuilder enum (no basetype field), fixed it by 
3340         avoiding calculating the size for such array as it cannot be instantiated.
3341         Fix bug #82015
3342
3343 2007-07-12  Raja R Harinath  <rharinath@novell.com>
3344
3345         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
3346         field.
3347         * metadata.c, reflection.c: Update to changes.
3348
3349 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
3352         mono_class_is_valid_enum, they are used to valide a enum when loading.
3353         * reflection.c: used new functions to throw TypeLoadException when and
3354         invalid enum is build with TypeBuilder. Fixes #82018
3355   
3356 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
3357
3358         * object.c: forgot commit of mono_class_setup_methods () to access
3359         iface->methods.
3360         * object-internals.h: added a few more handy fields to
3361         MonoIMTCheckItem.
3362
3363 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
3366         iface->methods.
3367
3368 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
3369
3370         * class-internals.h, object-internals.h, object.c: IMT-based
3371         interface invocation core from Massimiliano Mantione
3372         (massi@ximian.com) with a reworked arch-specific interface,
3373         bsearch implementation and a few bugfixes and memory savings by me.
3374
3375 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * class.c (mono_class_create_from_typedef): mono would segfault if 
3378         an enum did not have a __value field. It now throws a TypeLoadException
3379         for such cases. Fix bug #82022
3380
3381 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
3384
3385 2007-07-09  Mark Probst  <mark.probst@gmail.com>
3386
3387         * class.c (mono_class_init): If a class is already inited but has
3388         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
3389
3390 2007-07-09  Mark Probst  <mark.probst@gmail.com>
3391
3392         * class.c: Properly handle the case of an unimplemented interface
3393         method.  Fixes: 81673.
3394
3395 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
3396
3397         * class-internals.h, object.c: cleanup patch from massi: use
3398         MonoVTable->interface_bitmap since the vtable interfaces offset array
3399         is going away.
3400
3401 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
3404         GetMDStreamVersion icall instead.
3405
3406 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
3407
3408         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
3409         not use mono_dl_build_path() with a full library name: makes
3410         fallbacks to libgaim and libfam work.
3411
3412 2007-07-06  William Holmes  <billholmes54@gmail.com>
3413
3414         * assembly.c: Added a continue statement in probe_for_partial_name when
3415          parse_assembly_directory_name fails.  Fixes : 82002
3416
3417 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
3418
3419         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
3420         and added a verification  for TYPEDBYREF.
3421         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
3422         make native int interchangeable with int32 and some small cleanup and formating.
3423         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
3424         handle byref of byref.
3425         * verify.c (push_local): handle byref of byref.
3426         * verify.c (do_binop): invalid mix of values is unverifiable
3427         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
3428         added visibility checks
3429         * verify.c (field related method): added visibility checks
3430         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
3431
3432 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
3435         string.
3436
3437 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * profiler.c (mono_profiler_load): Fix an off-by-one error.
3440
3441         * marshal.c (emit_marshal_string): When returning a string from managed code,
3442         allways make a copy even for unicode strings. Fixes #81990.
3443
3444 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
3445
3446         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
3447         of byref generic inst types (bug #81997).
3448
3449 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
3450
3451         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
3452         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
3453
3454 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
3455
3456         * marshal.c (emit_marshal_string): Add support for unicode strings in
3457         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
3458
3459 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
3460
3461         * verify.c: field load/store are now verified, missing only access checks now
3462
3463 2007-06-28  Martin Baulig  <martin@ximian.com>
3464
3465         * mono-debug.c (mono_debug_debugger_version): New public variable.
3466
3467 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
3468
3469         * locales.c: When constructing DateTimeFormat or NumberFormat for
3470         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
3471         MonoCultureInfo contructed from the current locale is always
3472         read-only and has UseUserOverride set to true. All MonoCultureInfo
3473         instances returned for GetCultures have both IsReadOnly and
3474         UseUserOverride set to true. Fixes part of bug #81930.
3475
3476 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
3477
3478        * icall-def.h: Update System.__ComObject icalls
3479        * marshal.c: Avoid managed transition (and object creation)
3480        when looking up COM interface in RCW.
3481        * marshal.h: Ditto.
3482        
3483        Code is contributed under MIT/X11 license.
3484
3485 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
3488         to avoid crashes during assembly unloading.
3489
3490 2007-06-22  Raja R Harinath  <rharinath@novell.com>
3491
3492         Fix MethodInfo.IsGenericMethodDefinition
3493         * reflection.c (mono_reflection_bind_generic_method_parameters):
3494         Rearrange code to ensure we always uses a generic method definition.
3495         * class.c (mono_class_inflate_generic_method_full): Set
3496         'generic_container' field only for generic method definitions.
3497         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
3498         Use presense of 'generic_container' field as indication of being a
3499         generic method definition.
3500
3501 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3504
3505         * object-internals.h: Reflect changes in the layout of the managed Delegate
3506         class.
3507         
3508         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
3509         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
3510         runtime memory used by the dynamic method. Fixes #77146.
3511
3512 2007-06-21  Dick Porter  <dick@ximian.com>
3513
3514         * file-io.h: 
3515         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
3516         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
3517         81767.
3518
3519 2007-06-21  Raja R Harinath  <rharinath@novell.com>
3520
3521         * reflection.c (method_encode_methodspec): Add a tripwire.
3522         * class.c (inflate_generic_type): The fully open generic type is
3523         not the same as the generic type definition.
3524
3525 2007-06-21  Martin Baulig  <martin@ximian.com>
3526
3527         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
3528
3529         * mono-debug-debugger.h
3530         (MonoDebuggerBreakpointInfo): Removed.
3531         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
3532         (mono_debugger_remove_breakpoint): Likewise.
3533         (mono_debugger_breakpoint_callback): Likewise.
3534         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
3535
3536 2007-06-21  Raja R Harinath  <rharinath@novell.com>
3537
3538         * metadata.c (mono_metadata_lookup_generic_class): The fully open
3539         generic type is not the same as the generic type definition.
3540         * class.c (mono_generic_class_get_class): Likewise.
3541
3542 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
3543
3544         * icall.c: The second argument to 
3545         System.Reflection.MethodBase.GetMethodFromHandleInternalType
3546         is a MonoType not a MonoClass.
3547
3548 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
3549
3550         * verify.c: support for function pointers in the verifier
3551
3552 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
3553
3554         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
3555
3556 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
3557
3558         * assembly.c: removed Mono.Data.SqliteClient from the list of
3559         forward-compatible assemblies as it breaks the ABI (bug #81899).
3560
3561 2007-06-19  Raja R Harinath  <rharinath@novell.com>
3562
3563         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
3564         lookup/update with the loader lock.
3565         * reflection.c (mono_class_bind_generic_parameters): No need to
3566         protect mono_metadata_lookup_* with the loader lock.
3567         * class.c (inflate_generic_type): Likewise.
3568         
3569         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
3570         on a generic instantiated type.
3571
3572 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
3573
3574         *verify.c: produce meanfull error messages on verification error
3575         *verify.c: fixed some cases of verification errors reported as validation errors
3576         *pedump.c: fixed the error name array, now it shows validation errors properly
3577         *verify.h: fixed the contant that should be used for verification errors
3578
3579 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
3580
3581         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
3582         for bug #77596, 81858 and 80743 (generics data structures on domain
3583         unload).
3584
3585 2007-06-15  Raja R Harinath  <rharinath@novell.com>
3586
3587         Avoid allocating 'MonoGenericContext' on the heap.
3588         * class-internals (_MonoMethodInflated::context): Make field
3589         inline, not a pointer.
3590         * loader.c (method_from_methodspec): Allocate 'new_context' on the
3591         stack.  Use the context embedded within the inflated method as the
3592         hash key, rather than 'new_context'.
3593         * class.c (inflate_generic_context): Simplify.  Return a struct
3594         rather than allocating on the heap.
3595         (mono_class_inflate_generic_method_full): Update to changes.  Now,
3596         doesn't salt away a copy of the context -- simplifying the
3597         lifetime rules of a 'MonoGenericContext *'.
3598         (mono_method_get_context): Return pointer to embedded context.
3599         (setup_generic_array_ifaces): Allocate temporary context on stack.
3600         * reflection.c (inflate_mono_method): Likewise.
3601         (mono_reflection_bind_generic_method_parameters): Likewise.
3602         Use the context embedded within the inflated method as the hash key.
3603
3604         Avoid a source of allocation of 'MonoGenericContext'.
3605         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
3606         and 'cached_context' fields into embedded 'MonoGenericContext' field.
3607         * class.c: Update to changes.
3608         (mono_generic_class_get_context): Simplify drastically.  Now just
3609         returns a pointer to the field.
3610         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
3611         argument as a const pointer.
3612         (mono_metadata_generic_context_equal): Likewise.
3613         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
3614         Update to changes.
3615
3616 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
3617
3618         * verify.c improved the handling of brtrue/brfalse, factored out common code
3619
3620 2007-06-14  Raja R Harinath  <rharinath@novell.com>
3621
3622         Kill MonoGenericMethod.
3623         * class-internals.h (MonoGenericContext::method_inst): Rename from
3624         'gmethod' and convert to a MonoGenericInst.
3625         (MonoGenericMethod): Remove.
3626         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
3627         * loader.c (method_from_methodspec): Update to changes.  Use a
3628         MonoGenericContext as the key to the hashtable.
3629         * metadata.c (mono_metadata_generic_context_equal): Rename from 
3630         'mono_metadata_generic_method_equal' and take MonoGenericContext.
3631         (mono_metadata_generic_context_hash): Likewise from
3632         'mono_metadata_generic_method_hash'.  Change hash function.
3633         (mono_metadata_load_generic_params): Update to changes.
3634         (mono_get_shared_generic_method): Remove.
3635         * metadata-internals.h (mono_get_shared_generic_method): Remove.
3636         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
3637         (inflate_generic_context): Likewise.
3638         (mono_class_inflate_generic_method_full): Likewise.
3639         (setup_generic_array_ifaces): Likewise.
3640         (mono_class_create_from_typespec): Likewise.
3641         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
3642         (method_encode_methodspec): Update callsite.
3643         (reflection_methodbuilder_to_mono_method): Update to changes.
3644         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
3645         MonoGenericContext as the key to the hashtable.
3646         (inflate_mono_method): Update to changes.
3647
3648         * class-internals.h (MonoGenericMethod::container): Remove.
3649         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
3650
3651 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
3652
3653         * profiler-private.h, profiler.c, profiler.h: added API to profile
3654         exception events.
3655
3656 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
3657
3658         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
3659
3660 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
3661
3662         * verify.c: method invocation is now validated, now we verify parameter types on stack.
3663         Fixed overflow and underflow not aborting the verification process.
3664
3665 2007-06-13  Mark Probst  <mark.probst@gmail.com>
3666
3667         * class-internals.h (MonoStats): Added stats entries for dynamic
3668         code allocations.
3669
3670 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * loader.c (mono_free_method): Free header->locals and header->clauses.
3673
3674         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
3675         dynamic case.
3676
3677         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
3678
3679         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
3680
3681 2007-06-12  Raja R Harinath  <rharinath@novell.com>
3682
3683         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
3684         the tables.
3685
3686 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
3687
3688         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
3689
3690 2007-06-11  Raja R Harinath  <harinath@gmail.com>
3691
3692         MonoGenericMethod on a diet
3693         * class-internals.h (_MonoMethodInflated::reflection_info): Move
3694         here ...
3695         (_MonoGenericMethod::reflection_info): ... from here.
3696         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
3697         Update to changes.
3698         * reflection.c (inflate_mono_method): Likewise.
3699         (mono_reflection_bind_generic_method_parameters): Likewise.
3700
3701 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
3702
3703         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
3704         *verify.c: factored long ldarg forms to share code with short forms
3705
3706 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
3707
3708         *verify.c: fixed code formating factored some duplicate code
3709         into a new function
3710
3711         *verify.h: fixed binary incompatibility introduced earlier
3712
3713         *pedump.c: fixed formating
3714
3715 2007-06-11  Raja R Harinath  <harinath@gmail.com>
3716
3717         Fix assertion when disassembling Mono.C5.dll
3718         * loader.c (method_from_methodspec): Avoid inflating a method
3719         twice with the same context.  If the methodref is inflated, use
3720         the declaring method instead.
3721
3722         * class.c (mono_class_from_generic_parameter): Fix case similar to
3723         bug #81830 handled below, but for method containers.
3724
3725 2007-06-10  Raja R Harinath  <harinath@gmail.com>
3726
3727         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
3728         get_shared_generic_class.  Directly inflate the instance.
3729         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
3730         (inflate_generic_class): Delete.
3731         (get_shared_generic_class): Delete.  Move setting of
3732         'cached_class' and 'cached_context' ...
3733         * metadata.c (mono_metadata_lookup_generic_class): ... here.
3734
3735         * metadata.c (mono_metadata_lookup_generic_class): Change
3736         signature to take the components of a MonoGenericClass rather than
3737         an allocated MonoGenericClass.  Change semantics to be intern-like.
3738         * reflection.c (mono_class_bind_generic_parameters): Update to
3739         changes.  Make locking region tighter.
3740         * class.c (inflate_generic_class): Update to changes.
3741         (get_shared_generic_class): Likewise.
3742         * metadata-internals.h: Likewise.
3743
3744         * reflection.c (mono_class_bind_generic_parameters): Take and
3745         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
3746         (mono_reflection_bind_generic_parameters): Use
3747         'mono_class_bind_generic_parameters' rather than duplicate the code.
3748         * class.c (mono_bounded_array_class_get): Update to changes.
3749         * object-internals.h: Likewise.
3750
3751         * reflection.c (mono_class_bind_generic_parameters): Only support
3752         parameterizing generic type definitions.  Remove support for other
3753         open types.
3754
3755 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
3758
3759         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
3760         in the dynamic case.
3761
3762 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
3763
3764         * threads.c: When cleaning up thread, reset the Background bit.
3765         Fixes bug #81720.
3766
3767 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
3768
3769        * metadata.c: Move variable declarations to top of scope.
3770        * verify.c: Move variable declarations to top of scope.
3771
3772        Code is contributed under MIT/X11 license.
3773
3774 2007-06-08  Raja R Harinath  <rharinath@novell.com>
3775
3776         * reflection.c (mono_class_bind_generic_parameters): Replace
3777         open-coded loop with mono_metadata_inflate_generic_inst.
3778
3779         * class.c (get_shared_generic_class): Don't call
3780         mono_get_shared_generic_inst.  Use the container's own
3781         'class_inst'.
3782
3783         * metadata.c (mono_metadata_load_generic_params): Move
3784         initialization of 'context' field here from ...
3785         * class.c (mono_class_create_from_typedef): ... here, and ...
3786         * loader.c (mono_get_method_from_token): ... here.
3787
3788         * class.c (get_shared_generic_class): Rename from
3789         mono_get_shared_generic_class and make static.
3790         (mono_get_shared_generic_inst): Move to metadata.c.
3791         * loader.c (mono_get_shared_generic_method): Likewise.
3792         * class-internals.h, metadata-internals.h: Update to changes.
3793
3794         Fix #81830
3795         * class.c (mono_class_from_generic_parameter): Don't assume a
3796         generic container owner exists.  Generic containers from monodis
3797         don't have any.
3798
3799 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
3800
3801         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
3802         * verify.h: new typedefs to returns the non-verifiable status
3803         * verify.c: initial implementation of generics, stack merging and object compatibility check
3804
3805 2007-06-06  Mark Probst  <mark.probst@gmail.com>
3806
3807         * class.c, image.c, class-internals.h (MonoImage): class_cache is
3808         a MonoInternalHashTable again (fixed bug in internal hash table
3809         code).
3810
3811 2007-06-06  Mark Probst  <mark.probst@gmail.com>
3812
3813         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
3814         MonoInternalHashTable again (fixed bug in internal hash table
3815         code).
3816
3817 2007-06-06  Mark Probst  <mark.probst@gmail.com>
3818
3819         * class.c, image.c, class-internals.h, domain.c,
3820         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
3821         changes.  Have to figure out what makes them break the SWF
3822         regression.
3823
3824 2007-06-04  Mark Probst  <mark.probst@gmail.com>
3825
3826         * class.c, image.c, class-internals.h (MonoImage): class_cache is
3827         a MonoInternalHashTable now.
3828
3829 2007-06-04  Mark Probst  <mark.probst@gmail.com>
3830
3831         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
3832         MonoInternalHashTable now.
3833
3834 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
3835
3836         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
3837         invoke_impl code.
3838
3839         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
3840
3841         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
3842         dependent trampoline.
3843
3844         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
3845
3846         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
3847
3848 2007-05-29  Robert Jordan  <robertj@gmx.net>
3849
3850         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
3851
3852 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
3855
3856 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
3857
3858        * marshal.c: Fix interface lookup loops for
3859        cominterop_get_com_slot_for_method and 
3860        cominterop_get_method_interface. Only need to lookup
3861        if type is a class, else use interface type method is on.
3862
3863        Code is contributed under MIT/X11 license.
3864
3865 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
3866
3867         * reflection.c: HasSecurity can be present even if no specially 
3868         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
3869         SecurityAttribute). Fix CAS regression tests on buildbot.
3870
3871 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
3872
3873        * appdomain.c: Add configure checks for header files.
3874        * image.c: Add configure checks for header files.
3875        * file-io.c: Add configure checks for header files.
3876        * debug-mono-symfile.c: Add configure checks for header files.
3877        * threadpool.c: Add configure checks for header files.
3878        * console-io.c: Add configure checks for header files.
3879        * profiler.c: Add configure checks for header files.
3880        * rawbuffer.c: Add configure checks for header files.
3881        * icall.c: Add configure checks for header files.
3882        * rand.c: Add configure checks for header files.
3883        * socket-io.c: Add configure checks for header files.
3884
3885        Code is contributed under MIT/X11 license.
3886
3887 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
3888
3889         * reflection.c (mono_custom_attrs_from_builders): Remove the 
3890         assertion as it breaks the build.
3891         
3892         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
3893
3894         * reflection.c (lookup_custom_attr): Make a copy here too.
3895
3896         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
3897         dynamic images.
3898
3899         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
3900         images.
3901
3902         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
3903         info.
3904
3905 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
3906
3907         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
3908         (load_cattr_value): Ditto.
3909
3910 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
3913
3914 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
3915
3916         * threads.c: In "start_wrapper", set apartment_state to MTA if
3917         apartment_state is Unknown and we're running on 2.0 profile or
3918         higher.
3919         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
3920         to main method, then set apartment_state to Unknown on 1.0 profile,
3921         and MTA on 2.0 profile.
3922
3923 2007-05-16  Jb Evain  <jb@nurv.fr>
3924
3925         * class-internals.h (MonoDefaults): Add an attribute_class and
3926           customattribute_data_class.
3927         * domain.c (mono_init_internal): Populate them.
3928         * reflection.c: Use them to remove duplicates. Make a vew
3929         MonoClass variables `static'.
3930
3931 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
3932
3933         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
3934         step in implementing IMT, so that all isinst checks now can go
3935         through the bitmap.
3936         This was needed because vtables for TransparentProxy need to look
3937         like the vtable of the "target" class, so they need to point to
3938         its interface bitmap directly.
3939
3940         * object.c: inside "mono_class_create_runtime_vtable" and
3941         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
3942
3943 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
3944
3945         * object-internals.h
3946           culture-info.h : added territory field in MonoCulture and
3947           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
3948         * locales.c : fill territory field above too.
3949         * culture-info-table.h : regenerated.
3950
3951 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
3954         Fixes #81599.
3955
3956 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
3957
3958         * object.c: Always initialize apartment, even if 
3959         there is no custom attributes on entry point.
3960         
3961         Code is contributed under MIT/X11 license.
3962
3963 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
3964
3965         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
3966         * metadata.c: If no encoding is set, check for unicode
3967         on class.
3968         
3969         Code is contributed under MIT/X11 license.
3970
3971 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
3972
3973         * threads.c: Handle if mono_thread_current returns NULL 
3974         
3975         Code is contributed under MIT/X11 license.
3976
3977 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
3978
3979         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
3980         in start_wrapper. Added mono_thread_init_apartment_state and
3981         mono_thread_cleanup_apartment_state.
3982         * object.c: Initialize thread apartment state on main thread
3983         by checking for STAThreadAttribute on entry point.
3984         * object-internals.h: Add apartment_state field to MonoThread.
3985         * threads-types.h: Add unmanaged definition of 
3986         System.Threading.ApartmentState, MonoThreadApartmentState.
3987         
3988         Code is contributed under MIT/X11 license.
3989         
3990 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
3991
3992         * class.c: Fix windows build.
3993         * class-internals.h: Fix windows build.
3994         
3995         Code is contributed under MIT/X11 license.
3996
3997 2007-05-08  Robert Jordan  <robertj@gmx.net>
3998
3999         * process.c (CreateProcess_internal):
4000         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
4001         .CreateNoWindow was specified. Fixes #81496.
4002
4003 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4004
4005         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
4006         step in implementing IMT, replaced it with two compact arrays
4007         (interfaces_packed and interface_offsets_packed) and a bitmap that
4008         is used for isinst checks (interface_bitmap).
4009
4010         * class.c: (compare_interface_ids): compare function to pass to
4011         bsearch when looking for an interface with a given id.
4012         (mono_class_interface_offset): reimplemented using bsearch on
4013         interfaces_packed, getting the offset from interface_offsets_packed.
4014         (print_implemented_interfaces): utility debugging function.
4015         (setup_interface_offsets): reworked to initialize interfaces_packed,
4016         interface_offsets_packed and interface_bitmap.
4017
4018         * object.c: replaced all accesses to "MonoClass.interface_offsets"
4019         with uses of interfaces_packed and interface_offsets_packed.
4020
4021 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
4022
4023         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
4024         mono_class_interface_offset prototype to wrap all accesses to
4025         "MonoClass.interface_offsets".
4026
4027         * class.c: Implemented mono_class_interface_offset, and wrapped all
4028         accesses to "MonoClass.interface_offsets".
4029
4030         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
4031         "MonoClass.interface_offsets".
4032
4033 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
4034
4035         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
4036         GetMethodFromHandle overloads (bug #78637).
4037
4038 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
4039
4040         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
4041         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
4042
4043 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
4046         #81498.
4047
4048         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
4049         gracefully.
4050         (mono_custom_attrs_from_index): Ditto.
4051
4052         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
4053         Fixes #81501.
4054
4055 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
4056
4057         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
4058         is now allocated from a mempool.
4059
4060 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
4063         caller holds threads_lock, leading to deadlocks. Fixes #81476.
4064
4065 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
4066
4067         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
4068         mono_loader_clear_error () too late. Fixes #81463.
4069
4070 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
4071
4072         * culture-info-table.h : regenerated.
4073
4074 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
4077         is missing.
4078
4079 2007-04-25  Dick Porter  <dick@ximian.com>
4080
4081         * Makefile.am: Put the mingw enforced-optimisation back into the
4082         PLATFORM_WIN32 section.
4083
4084 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
4085
4086         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
4087         patch.
4088
4089         * image.c (mono_image_load_module): New API function to load a module reference.
4090
4091         * image.c (load_modules): Load modules lazily. Fixes #80812.
4092
4093         * class.c (mono_class_from_typeref): Use mono_image_load_module.
4094         
4095         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
4096
4097         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
4098         to mono_image_load_module_dynamic.
4099
4100 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
4101
4102         * marshal.c: Fix calling convention for CCW on non-windows
4103         platforms. STDCALL on windows, CDECL everywhere else to work 
4104         with XPCOM and MainWin COM.
4105         
4106         Code is contributed under MIT/X11 license.
4107
4108 2007-04-23  Martin Baulig  <martin@ximian.com>
4109
4110         Fix #80969.
4111
4112         * loader.c
4113         (method_from_memberref): Added `gboolean *used_context' argument.
4114         (mono_get_method_from_token): Likewise.
4115         (mono_get_method_full): Don't insert the method in the cache when
4116         `used_context' is true.
4117
4118 2007-04-23  Raja R Harinath  <rharinath@novell.com>
4119
4120         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
4121
4122         * reflection.c (mono_reflection_bind_generic_parameters): Don't
4123         create new MonoTypes for returned types.
4124         * class.c (mono_generic_class_get_class): Export mono-internal.
4125         * class-internals.h: Update to changes.
4126
4127 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
4128
4129         * threadpool.c, threadpool.h, icall-def.h: patch from
4130         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
4131
4132 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
4135         
4136         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
4137
4138         * threads.c (mono_thread_get_stack_bounds): New helper function.
4139
4140         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
4141         Correctly compute stack bounds when attaching. Fixes #81394.
4142
4143 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
4144
4145         * reflection.c: fix handling of doubles in custom attributes
4146         for the arm-fpa format (bug #81368).
4147
4148 2007-04-18  Raja R Harinath  <rharinath@novell.com>
4149
4150         * reflection.c (assembly_add_win32_resources): Mildly relax an
4151         bounds check to let the end pointer point just past the end of the
4152         allocated buffer.  (may fix #81384)
4153
4154 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4155
4156         * culture-info-table.h : regenerated.
4157
4158 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
4159
4160         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
4161         the thread is aborted early.
4162
4163 2007-04-05  Dick Porter  <dick@ximian.com>
4164
4165         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
4166         FindFirstFile()/FindNextFile() to find entries.  This lets the
4167         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
4168         81038.
4169
4170         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
4171         the parameters of
4172         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
4173
4174 2007-04-04  Martin Baulig  <martin@ximian.com>
4175
4176         * debug-helpers.c
4177         (mono_method_desc_full_match): Add support for nested classes.
4178
4179 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
4182
4183 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
4186         waiting for too many threads.
4187
4188 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
4189
4190         * environment.c: Fix return value check on uname so we can get the 
4191         executing version on Solaris operating systems.
4192
4193 2007-03-28  Jb Evain  <jbevain@gmail.com>
4194
4195         * class.c (mono_type_get_name_recurse): Complete the
4196         fix for the creation of assembly qualified names for
4197         pointer types. Fixes #81208.
4198
4199 2007-03-27  Dick Porter  <dick@ximian.com>
4200
4201         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
4202         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
4203         changed.
4204
4205         * threads.c
4206         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
4207         the value of ReleaseMutex().
4208
4209 2007-03-27  Dick Porter  <dick@ximian.com>
4210
4211         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
4212         in little-endian order, not network endian, so must be converted
4213         to host endian here.  Fixes bug 80593.
4214
4215 2007-03-22  Jb Evain  <jbevain@gmail.com>
4216
4217         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
4218         qualified names for pointer types. Fixes #81208.
4219
4220 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
4221
4222         * marshal.c: Add support for PreserveSigAttribute. 
4223         
4224         Code is contributed under MIT/X11 license.
4225
4226 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
4227
4228         * process.c: Fix endianness issues. Fixes #81126.
4229
4230         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
4231         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
4232
4233         * image.c (mono_image_lookup_resource): Make this work on big-endian
4234         machines.Change API contract so the caller needs to free the return value.
4235         
4236         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
4237         API change.
4238         
4239 2007-03-14  Martin Baulig  <martin@ximian.com>
4240
4241         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
4242         mono_type_get_desc() as well.
4243
4244 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
4245
4246         * icall.c:  Fix environ access in VS.  
4247         
4248 2007-03-13  Alp Toker  <alp@atoker.com>
4249
4250         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4251         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4252         #63841.
4253
4254 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
4257         circular references among dynamic methods. Fixes #81091.
4258
4259         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
4260
4261 2007-03-09  Martin Baulig  <martin@ximian.com>
4262
4263         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
4264
4265 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
4266
4267         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
4268         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
4269         
4270         Code is contributed under MIT/X11 license.
4271         
4272 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
4273
4274         * loader.c: Reapply patch for bug #79424.
4275
4276 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4277
4278         * metadata.c (mono_type_to_unmanaged): Only convert object to
4279         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
4280
4281 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
4282
4283         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
4284         (and incorrectly set) is_reference field from MonoGenericInst.
4285
4286 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
4289         a little earlier.
4290
4291         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
4292
4293         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
4294
4295 2007-03-05  Miguel de Icaza  <miguel@novell.com>
4296
4297         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
4298         FileOptions.1 value to mean "temporary", map that to
4299         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
4300
4301         Fixes 80688
4302
4303 2007-03-03  Marek Habersack  <mhabersack@novell.com>
4304
4305         * appdomain.c: implement MS .Net style shadow copying. Copies of
4306         the assemblies are made in a subdirectory of the dynamic base
4307         directory, the assembly names are preserved.
4308         Copy .mdb and .config files along with the assemblies being shadowed.
4309
4310 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
4313         (emit_marshal_handleref): Ditto.
4314
4315         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
4316         on Visual C++. Fixes #80671.
4317
4318 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
4319
4320         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
4321         for clone operations.
4322
4323 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * marshal.c: Fix warnings.
4326
4327 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
4328
4329         * loader.c: allow case-insensitive matching of the dll name
4330         in dllmap handling when prefixed with "i:".
4331
4332 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
4333
4334         * threads.c: Fix #ifdef for dummy_apc function for VS.
4335
4336 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
4337
4338         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
4339
4340 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
4341         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
4342         giving precedence to the methods with a fully qualified name
4343         (InterfaceName.MethodName) when building the interface sections
4344         of the vtable.
4345
4346 2007-02-16  Dick Porter  <dick@ximian.com>
4347
4348         * threadpool.c (append_job): Fix fast-path array handling, so it's
4349         less likely the array will grow exponentially when the load is
4350         heavy.
4351
4352 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
4353
4354         * metadata-internals.h, loader.c: fix dllmap lookup order
4355         for non-function maps, too, and prepare for fallback code.
4356
4357 2007-02-12  Robert Jordan  <robertj@gmx.net>
4358
4359         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
4360         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
4361         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
4362         GlobalFree. Fixes a part of bug #77075.
4363
4364 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
4365
4366         * loader.c: implemented typedef parent in field memberref.
4367
4368 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
4369
4370         * marshal.c: Fix warnings and remember to call Release on
4371         IUnknown of RCW.
4372         
4373         Code is contributed under MIT/X11 license.
4374
4375 2007-02-10  Miguel de Icaza  <miguel@novell.com>
4376
4377         * class-internals.h: Add MonoHandleRef definition, and
4378         handleref_class to mono_defaults. 
4379
4380         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
4381         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
4382
4383         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
4384         (do nothing on this stage)
4385         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
4386         (emit_marshal_handleref): New method, used for argument handling
4387         of HandleRefs. 
4388
4389 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
4390
4391         * class.c (mono_class_setup_parent): Lazily init com types.
4392         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
4393         init com types.
4394         * object.c (mono_remote_class_vtable): Lazily init com types.
4395         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
4396         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
4397         * domain-internals.h: Expose mono_init_com_types.
4398         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
4399         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
4400         Add support for COM Callable Wrapper marshalling.
4401         * marshal.h: Add icall definitions.
4402         * gc.c: Handle freeing of CCWs in finalizer code.
4403         
4404         Code is contributed under MIT/X11 license.
4405
4406 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
4407
4408         * reflection.c: changed all the signature encoding code to use
4409         a variable-sized buffer.
4410
4411 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
4412
4413         * marshal.c: locking fixes: never take the loader lock
4414         or other runtime locks when holding the marshal lock
4415         (fixes bug#80664).
4416
4417 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
4418
4419         * marshal.c: make the delegate function pointer mapping
4420         work for the moving GC.
4421
4422 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
4423
4424         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
4425         for bug #80618.
4426
4427 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
4428
4429         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
4430         gmodule.
4431
4432 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
4433
4434         * threadpool.c: made the code moving-GC safe.
4435
4436 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
4437
4438         * assembly.c, boehm-gc.c, class-internals.h, class.c,
4439         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
4440         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
4441         warning cleanup.
4442         * reflection.c: warning cleanup, some threading and moving GC fixes.
4443
4444 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
4445
4446         * class.c, loader.c: create the needed Set/Get/Address array methods
4447         as well as the .ctors in mono_class_init (), fixes bug #80567.
4448
4449 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
4450
4451         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
4452         we doesn't decrease its alignment. Should fix the sparc build.
4453
4454 2007-01-24  Dick Porter  <dick@ximian.com>
4455
4456         * socket-io.c
4457         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
4458         Create the returned object if we need to ignore an unsupported
4459         socket option.  Fixes a segfault reported by Atsushi.
4460
4461 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
4462
4463         * class.c, object.c: restrict GC-tracked fields to
4464         UIntPtr fields used inside corlib, so we provide better
4465         type info to the GC and also allow broken packing as in
4466         bug #80580.
4467
4468 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
4469
4470         * sgen-gc.c: removed duplicated function.
4471
4472 2007-01-19  Miguel de Icaza  <miguel@novell.com>
4473
4474         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
4475         value that means that the value is not supported, but that we
4476         should not return a failure, but instead report this as a
4477         successful operation.
4478
4479 2007-01-19  Raja R Harinath  <rharinath@novell.com>
4480
4481         Fix tests/bug79956.2.il
4482         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
4483         (mono_generic_class_get_class): If the generic definition in an
4484         enum, copy over other fields related to it.
4485
4486 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
4487
4488         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
4489         genericinst enums (bug #79215).
4490
4491 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
4492         * class.c: Fix bug 80307.
4493
4494 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
4495
4496         * image.c: if the file table is not present, try to load
4497         all the modules, since we don't have info about them
4498         having or not metadata (bug #80517).
4499         * assembly.c: allow mono_assembly_load_references () to
4500         work for netmodules.
4501
4502 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
4503
4504         * image.c, metadata-internals.h, object.c: execute module
4505         cctors when running on the 2 runtime if present (bug #80487).
4506
4507 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
4508
4509         * icall.c: optimized InitializeArray() on bigendian.
4510
4511 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
4512
4513         * icall.c: fix for the broken ARM FPA double format.
4514
4515 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
4516
4517         * icall.c: handle endian issues for r4 and r8 types, too, in
4518         the InitializeArray() icall.
4519
4520 2007-01-15  Miguel de Icaza  <miguel@novell.com>
4521
4522         * loader.c (mono_loader_error_prepare_exception): Clear the error
4523         once we have extracted the information from it, do this before we
4524         call into the JIT's class loading mechanisms.
4525
4526         * object.c (mono_class_create_runtime_vtable): Do not clear the
4527         loader error before calling mono_class_get_exception_for_failure
4528         as the loader error is needed inside
4529         mono_class_get_exception_for_failure to throw the error (thinko).
4530
4531         Fixes #80521
4532         
4533 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
4534
4535         * reflection.c: align fields rva data so it's faster to load at
4536         runtime.
4537
4538 2007-01-12  Raja R Harinath  <rharinath@novell.com>
4539
4540         Prepare to simplify GenericMethod handling.
4541         * class-internals.h (mono_method_get_context): New accessor function.
4542         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
4543         rather than directly accessing '->context' field.
4544
4545         * class-internals.h (_MonoGenericParam.method): Move ...
4546         (_MonoGenericContainer): ... here.  Add into union with klass field.
4547         * class.c, icall.c, loader.c, metadata.c, reflection.c:
4548         Update to changes.
4549
4550 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
4551
4552         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
4553         the wrapper type enum and reduce relocations.
4554
4555 2007-01-12  Raja R Harinath  <rharinath@novell.com>
4556
4557         * reflection.c (inflate_mono_method): Reuse method instantiation
4558         from the generic method, if available.
4559
4560 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
4561
4562         * marshal.c (emit_marshal_variant): Fix conv_arg
4563         type in last commit, based on whether parameter is byref.
4564         
4565 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
4566
4567         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
4568         marshalling.
4569         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
4570         MONO_TYPE_OBJECT back for VARIANT support.
4571
4572 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
4573
4574         * marshal.c, marshal.h, icall-def.h: Implement 
4575         Marshal.ReAllocCoTaskMem.
4576
4577 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
4578
4579         * marshal.c: memory retention fixes: use the proper
4580         image cache for runtime_invoke method lookups.
4581
4582 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
4583
4584         * mempool.c: added code to help debug mempool allocations.
4585
4586 2007-01-11  Dick Porter  <dick@ximian.com>
4587
4588         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
4589         support (experimenting with faking it with IP_MTU_DISCOVER for
4590         systems that don't have IP_DONTFRAGMENT.)
4591         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
4592         icall.
4593
4594         * icall-def.h: new System.Net.Sockets.Disconnect icall.
4595
4596         * socket-io.h: Add new fields to MonoSocketAsyncResult
4597         corresponding to the new ones in Socket.cs.
4598
4599 2007-01-11  Raja R Harinath  <rharinath@novell.com>
4600
4601         Fix IronPython regression mentioned in #80249
4602         * metadata.c (do_mono_metadata_parse_generic_class): Clear
4603         'cached_context' field, since it may have been initialized as a
4604         side-effect of metadata parsing.
4605
4606         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
4607         (_MonoGenericClass.cached_class): Move here and rename from lone
4608         remaining field of ...
4609         (_MonoInflatedGenericClass): ... this.  Remove.
4610         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
4611         to changes.
4612
4613         Fix mcs/tests/test-128.cs regression.
4614         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
4615         2007-01-10 change below.
4616         [MONO_TYPE_OBJECT]: Recurse into array case.
4617
4618 2007-01-11  Raja R Harinath  <harinath@gmail.com>
4619
4620         * class-internals.h (mono_get_inflated_generic_class): Remove.
4621         * class.c (mono_get_inflated_generic_class): Remove.
4622         (mono_generic_class_get_class): Rename from
4623         mono_class_create_generic.
4624         (mono_class_from_mono_type) [GENERICINST]: Use it.
4625         * reflection.c, metadata.c: Update to changes.  Use
4626         'mono_class_from_mono_type'.
4627
4628 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
4629
4630         * reflection.c: use passed type when encoding an array element
4631         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
4632
4633 2007-01-09  Robert Jordan  <robertj@gmx.net>
4634
4635         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
4636         result arguments (someDelegate.EndInvoke (unrelatedAres)).
4637         Fixes bug #80392.
4638
4639 2007-01-09  Raja R Harinath  <rharinath@novell.com>
4640
4641         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
4642
4643         * object.c (set_value): Avoid aliasing between type->data.klass
4644         and type->data.generic_class.
4645
4646         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
4647
4648 2007-01-08  Raja R Harinath  <rharinath@novell.com>
4649
4650         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
4651         between type->data.klass and type->data.generic_class.
4652
4653 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
4654
4655         * marshal.c: In MS.NET, StringBuilder objects are not copied by
4656         value in out parameters.
4657
4658 2007-01-08  Raja R Harinath  <rharinath@novell.com>
4659
4660         Simplify invariant for MonoGenericClass::klass field.
4661         * class.c (mono_class_create_generic): Verify 'klass' is null.
4662         * metadata.c (do_mono_metadata_parse_generic_class): Don't
4663         initialize 'klass' field.
4664
4665 2007-01-05  Raja R Harinath  <rharinath@novell.com>
4666
4667         Ongoing work to avoid redundant data and simplify invariants.
4668         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
4669         'generic_class', and change type to a GenericInst.
4670         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
4671         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
4672
4673 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
4674
4675         * class.c : skip io-layer under PLATFORM_WIN32.
4676
4677 2007-01-03  Tor Lillqvist  <tml@novell.com>
4678
4679         Fix #80305: In a bundled executable, look in the bundled exe
4680         assembly to determine the runtime version. Add the possibility to
4681         bundle also the machine.config file.
4682         
4683         * assembly.c (mono_assembly_open_from_bundle): Make
4684         non-static. Allow being called even if we have no bundled
4685         assemblies, and return NULL right away in that case.
4686
4687         * domain-internals.h: Declare mono_assembly_open_from_bundle()
4688         here.
4689
4690         * domain.c (app_config_parse): Take an assembly exe file name as
4691         parameter instead of a config file name. Check for a bundled
4692         config file for that assembly by calling
4693         mono_config_string_for_assembly_file() (see below) before looking
4694         for one in the file system.
4695         (get_runtimes_from_exe): Corrsponding change to call of
4696         app_config_parse().
4697         (get_runtimes_from_exe): Check for bundled assembly exe file first
4698         by calling mono_assembly_open_from_bundle(). If no bundled
4699         assembly exe file is found, call mono_image_open() as before to
4700         look it up in the file system.
4701
4702         * mono-config.c: Add variable bundled_machinec_onfig.
4703         (mono_config_string_for_assembly_file): New function.
4704         (mono_config_for_assembly): Move code snippet that looks for a
4705         bundled assembly .config file into the above new function. Call
4706         it.
4707         (mono_register_machine_config, mono_get_machine_config): New
4708         functions to set and retrieve
4709
4710         * assembly.h: Declare mono_register_machine_config().
4711
4712         * mono-config.h: Declare mono_get_machine_config() and
4713         mono_config_string_for_assembly_file().
4714
4715         * icall.c: No declaration of environ necessary on Win32. It is
4716         declared (as a macro expanding to a function call) in stdlib.h.
4717         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
4718         New internal mono function. Returns the value of
4719         mono_get_machine_config() as a Mono string.
4720
4721         * icall-def.h: Add get_bundled_machine_config().
4722
4723 2007-01-04  Raja R Harinath  <rharinath@novell.com>
4724
4725         Remove redundant field
4726         * class-internals.h (_MonoGenericContext.container): Remove field.
4727         * loader.c (mono_method_get_signature_full): Don't parse a
4728         "container" for a signature parse when the signature is inflated
4729         immediately.
4730         (method_from_methodspec): Likewise, for a generic_inst.
4731         * class.c, metadata.c, reflection.c: Update to changes.
4732
4733 2006-01-04  Raja R Harinath  <rharinath@novell.com>
4734
4735         * class-internals.h (_MonoGenericClass): Rename 'context' field to
4736         'cached_context', and change semantics -- it starts off NULL, and
4737         is initialized on demand.
4738         * class.c (mono_generic_class_get_context): New accessor to
4739         replace 'context' field accesses.
4740         (mono_class_get_context): New helper.
4741         (*): Update to changes.
4742         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
4743
4744 2007-01-03  Miguel de Icaza  <miguel@novell.com>
4745
4746         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
4747         before the memcpy.   Fixes Marshal2 regression.
4748
4749 2007-01-02  Jb Evain  <jbevain@gmail.com>
4750
4751         * blob.h: add a MONO_TYPE_ENUM definition
4752         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
4753         fix the encoding of arrays of enums in custom attributes.
4754
4755         Fixes #79666.
4756
4757 2007-01-01  Miguel de Icaza  <miguel@novell.com>
4758
4759         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
4760         string is null terminated, but only cut the string short if it
4761         overflows the buffer.   
4762         
4763         (mono_string_to_byvalstr): Also fix this routine.   The code here
4764         was not properly terminating a string (it was only terminated
4765         because of the previous catch-all memset). 
4766
4767         I left the memset, because I do not know if applications expect
4768         the runtime to clear this region. 
4769
4770         Fixes #79944.
4771
4772         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
4773         Clear the error before returning to unmanaged code to prevent the
4774         runtime from being confused later on (fixes  80420).
4775         (ves_icall_type_from_name): Always call mono_loader_clear_error
4776         after parsing a type that could have failed.
4777         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
4778
4779         * loader.c (mono_loader_clear_error): Fix indentation.
4780
4781 2006-12-28  Martin Baulig  <martin@ximian.com>
4782
4783         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
4784
4785 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
4786
4787         * reflection.c: patch from Rolf Bjarne Kvinge to fix
4788         getting a token for an EnumBuilder.
4789
4790 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
4791
4792         * reflection.c: be more careful in case resource generation
4793         fails to create the data array.
4794
4795 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
4796
4797         * sgen-gc.c: write barrier for clone and fix unregister handles.
4798
4799 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
4800
4801         * reflection.c: some fixes needed in the generics code for the moving GC.
4802
4803 2006-12-22  Robert Jordan  <robertj@gmx.net>
4804
4805         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
4806         account. Fixes bug #80299.
4807
4808 2006-12-21  Raja R Harinath  <rharinath@novell.com>
4809
4810         Fix WaitHandle usage in delegates.
4811         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
4812         * object.c (mono_wait_handle_new): Use the property set method to
4813         initialize the handle.
4814         (mono_wait_handle_get_handle): New.
4815         * threadpool.c (mono_async_invoke): Use it.
4816         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
4817         Likewise.
4818         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
4819
4820 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
4821
4822         * marshal.c (emit_marshal): Call emit_marshal_variant and
4823         emit_marshal_com_interface when applicable.
4824         (emit_marshal_variant, emit_marshal_com_interface): Add
4825         methods for this case and remove if's from emit_marshal_object.
4826         
4827 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
4828
4829         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
4830
4831 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
4832
4833         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
4834         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
4835         and GlobalFree on Windows. Remove FIXME.
4836
4837 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
4838
4839         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
4840         implementation for managed objects.
4841
4842 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
4843
4844         * object.c: implemented code to be used for checking
4845         that no reference field overlaps with non-references.
4846
4847 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
4848
4849         * threadpool.c: fix queue code to be compatible with the
4850         moving GC.
4851
4852 2006-12-18  Miguel de Icaza  <miguel@novell.com>
4853
4854         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
4855         in structures by throwing ArgumentNullException.
4856
4857         (emit_marshal_safehandle): Also when they are null parameters.
4858
4859         (emit_marshal_safehandle): Add support for ref
4860         SafeHandles parameters
4861
4862 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
4863
4864         * profiler.c: updated to use the mono-dl API instead of
4865         gmodule.
4866
4867 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
4868
4869         * profiler.c: updated to use the mono-dl dynamic loading
4870         API instead of gmodule.
4871
4872 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
4873
4874         * profiler.c: use readlink, older versions of glib don't have
4875         g_file_read_link ().
4876
4877 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
4878
4879         * profiler.c: try to detect the path to mono if libc fails to provide
4880         a useful name (bug #80286).
4881
4882 2006-12-16  Raja R Harinath  <rharinath@novell.com>
4883
4884         Fix #80242
4885         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
4886         instance, use the generic type definition instead.
4887         (ves_icall_Type_GetNestedTypes): Likewise.
4888         * class.c (mono_class_create_generic): Always set the
4889         nested_classes of a generic instance to NULL, even if the generic
4890         type definition has nested types.
4891
4892 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
4893
4894         * marshal.c (mono_string_from_bstr): Revert previous Windows change
4895         and fix on Linux.
4896         
4897 2006-12-15  Miguel de Icaza  <miguel@novell.com>
4898
4899         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
4900         my arguments were in the wrong order.   I also fixed the Windows
4901         version which seems to have had the same issue.
4902
4903         (mono_free_bstr): On Unix, this is g_free.
4904         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
4905         conversions (for the tests in corlib to pass).
4906
4907 2006-12-14  Miguel de Icaza  <miguel@novell.com>
4908
4909         * marshal.c (emit_ptr_to_object_conv): For now, ignore
4910         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
4911         exception if a ref SafeHandle in a struct has changed).
4912         
4913         (emit_struct_conv): Do not perform layout checks for classes
4914         derived from SafeHandle, as those are specially handled. 
4915
4916         (emit_object_to_ptr_conv): Add support for
4917         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
4918
4919         (emit_marshal_safehandle): Implement conversion of return values
4920         of safehandles (MARSHAL_ACTION_CONV_RESULT).
4921         
4922         * threads.c: WaitHandle now is compiled with two different handles
4923         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
4924         for 2.0.
4925         
4926         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
4927         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
4928         these routines to cope with both kinds of fields.
4929
4930 2006-12-12  Miguel de Icaza  <miguel@novell.com>
4931
4932         * metadata.c (mono_type_to_unmanaged): Handle the case where
4933         type->data.klass is a SafeHandle, and in that case, return the
4934         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
4935         MONO_MARSHAL_CONV_SAFEHANDLE. 
4936
4937 2006-12-11  Miguel de Icaza  <miguel@novell.com>
4938
4939         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
4940         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
4941         calling emit_marshal_object.
4942
4943         (emit_marshal_safehandle): Implement marshalling of
4944         SafeHandle parameters (no ref support yet).
4945
4946         (MarshalAction): Document the defines as I implement
4947         them for SafeHandle.
4948
4949         (emit_marshal_object): indentation police.
4950
4951         * class-internals.h: Define MonoSafeHandle.
4952         Add safehandle_class to MonoDefaults type.
4953
4954         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
4955         list of classes to check for fields. 
4956
4957         * domain.c (mono_init_internal): Add SafeHandle to the list of
4958         mono_defaults loaded.
4959
4960 2006-12-15  Raja R Harinath  <rharinath@novell.com>
4961
4962         Fix #80253
4963         * reflection.c (mono_reflection_bind_generic_parameters): If the
4964         generic type definition is a type builder, ensure that it is fully
4965         initialized before instantiating it.  Kill some dead code.
4966
4967 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
4968
4969         * object.c: clear the loader_error () before loading
4970         more metadata stuff (bug #80258).
4971
4972 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
4973
4974         * icall.c, icall-defs.h: type modifiers icalls for
4975         parameters and properties.
4976
4977 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
4978
4979         * object.c, icall.c: fixed warnings.
4980
4981 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
4982
4983         * marshal.c: fixed a couple of leaks and coding style in a few places.
4984
4985 2006-12-08  Dick Porter  <dick@ximian.com>
4986
4987         * process.c: Cope with NULL ProcessStartInfo arguments on windows
4988         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
4989         80173.
4990
4991 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
4992
4993         * process.c: ProcessStartInfo may have only filename set and
4994         arguments can be NULL.
4995
4996 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
4997
4998         * icall.c: fix leak found by Robert Jordan.
4999
5000 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
5001
5002         * marshal.c, marshal.h: generate managed method to access an element
5003         of a multi-dimensional array.
5004
5005 2006-11-30  Paolo Molaro (lupus@ximian.com)
5006
5007         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
5008
5009 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
5010
5011         * icall.c: back out GetFields () fix until the serialization code is
5012         fixed to not depend on the incorrect behaviour.
5013
5014 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
5015
5016         * profiler.c: provide defaults if none are set.
5017
5018 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
5019
5020         * Makefile.am, attrdefs.h: new public header file with
5021         constants for attributes for use by embedders.
5022
5023 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
5024
5025         * icall.c: GetFields () fix for bug #80064.
5026
5027 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
5028
5029         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
5030         removed long unused icalls.
5031
5032 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
5033   
5034         * marshal.c: 
5035                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
5036                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
5037                 can be generated without a delegate class.
5038                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
5039         
5040         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5041
5042 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5043
5044         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
5045         #80069.
5046
5047 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
5048
5049         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
5050         icall-def.h: added icalls needed by System.GC.
5051
5052 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
5053
5054         * loader.c: ensure the class in catch clauses is handled
5055         correctly for generics methods (fixes bug#79980).
5056
5057 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
5058
5059         * monitor.h, monitor.c: added mono_locks_dump () function
5060         to help debug deadlocks involving managed locks.
5061
5062 2006-11-13  Dick Porter  <dick@ximian.com>
5063
5064         * file-io.c (get_file_attributes): If the file is a symlink try
5065         and get the stat data for the target, but also add the
5066         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
5067         the specs for the windows symlink support, but will probably have
5068         to be reworked when I have test data from a vista machine.  Fixes
5069         bug 79887.
5070
5071 2006-11-13  Dick Porter  <dick@ximian.com>
5072
5073         * gc.c (mono_domain_finalize): 
5074         * marshal.c (mono_delegate_begin_invoke): 
5075         * threadpool.c (socket_io_init, mono_thread_pool_init)
5076         (mono_thread_pool_finish): 
5077         * monitor.c (mono_monitor_try_enter_internal): 
5078         * threads.c (mono_thread_resume, mono_thread_init)
5079         (mono_thread_suspend_all_other_threads)
5080         (mono_thread_execute_interruption): 
5081         * appdomain.c (mono_domain_unload): Check for NULL error returns
5082         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
5083         75733.
5084
5085 2006-11-11  Miguel de Icaza  <miguel@novell.com>
5086
5087         * process.c
5088         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
5089         Only close the handle if the value of the handle is not
5090         INVALID_HANDLE_VALUE.  This just makes the process a bit more
5091         robust.
5092
5093         Improvement for #75733, so that we do not run into this problem. 
5094
5095         
5096         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
5097         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
5098         internal variables.  Fixes #79462 
5099         
5100
5101 2006-11-09  Dick Porter  <dick@ximian.com>
5102
5103         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5104         Use poll() not select().  Fixes bug 79397.
5105
5106 2006-11-09  Raja R Harinath  <rharinath@novell.com>
5107
5108         Fix #79872
5109         * assembly.c (mono_assembly_load_from_full): Check that the given
5110         image has an assembly manifest.
5111
5112 2006-11-09  Ankit Jain  <jankit@novell.com>
5113
5114         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
5115         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
5116         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
5117
5118 2006-11-07  Dick Porter  <dick@ximian.com>
5119
5120         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5121         Put the old resolver behaviour back for pre-2.0 profiles.
5122
5123 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
5124
5125         * threadpool.c: precise GC and locking fixes.
5126
5127 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
5128
5129         * class.c: don't load types that have an explicit unaligned
5130         managed reference. Provide better info in the TypeLoad exception.
5131         Part of the fix for bug #79744.
5132         * object.c: use the correct check for class type load issues.
5133
5134 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
5135
5136         * class.c: enforce alignment of fields with managed references
5137         even when Pack=1 is forced by the user (bug #77788).
5138
5139 2006-11-03  Dick Porter  <dick@ximian.com>
5140
5141         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
5142         If the address reverse lookup fails, return it as the hostname
5143         anyway.  Fixes bug 79721.
5144
5145 2006-11-03  Dick Porter  <dick@ximian.com>
5146
5147         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
5148         Fix build on Windows.
5149
5150 2006-11-02  Dick Porter  <dick@ximian.com>
5151
5152         * icall-def.h: 
5153         * object-internals.h: 
5154         * exception.c (mono_get_exception_thread_interrupted): 
5155         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
5156         Fixes bug 74525.
5157
5158         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
5159         Check for pending Thread.Interrupt.
5160
5161 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
5162         * loader.c: Fixed bug 79684.
5163
5164 2006-10-27  Dick Porter  <dick@ximian.com>
5165
5166         * file-io.c (get_file_attributes): Force symlinks to directories
5167         to be returned as a regular file.  Fixes bug 79733.
5168 2006-10-26  Dick Porter  <dick@ximian.com>
5169
5170         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
5171         CreateFile to open a directory then we need to set the
5172         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
5173
5174 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
5175
5176         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
5177         friends.
5178
5179 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
5180
5181         * sgengc.c: small cleanup of timer code.
5182
5183 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
5184
5185         * sgen-gc.c: fix some warnings and start adding support for
5186         complete object removal on domain unload.
5187
5188 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
5189
5190         * assembly.c: build_assembly_name should not consider a version
5191         number without build or revision number invalid. Fixes bug #79715.
5192
5193 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
5194
5195         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
5196         call kernel32 function OutputDebugString directly.
5197         
5198         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
5199         
5200 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
5201
5202         * reflection.c: small cleanup, using a function to insert a MonoString
5203         in the string heap.
5204
5205 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
5206
5207         * reflection.c: moving GC fixes.
5208
5209 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
5210
5211         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
5212         all the objects with finalizers belonging to an unloading appdomain.
5213
5214 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
5215
5216         * sgen-gc.c: added ability to allocate even when the nursery is fully
5217         pinned and fixed a couple of bugs.
5218
5219 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * threads.h: Revert the last change for now.
5222
5223         * threads.h (mono_thread_get_pending_exception): Rename this to
5224         mono_thread_get_undeniable_exception ().
5225
5226 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
5227
5228         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
5229         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
5230         when fname does not refer to valid assembly. This result in a more
5231         meaningful error message.
5232         * exception.c: added mono_get_exception_bad_image_format2 which 
5233         constructs a BadImageFormatException using the ctor taking a custom
5234         message and the file name. Passing in a NULL msg results in a default
5235         message.
5236         * exception.h: define mono_get_exception_bad_image_format2 function.
5237         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
5238         when file name pointed to an invalid IL image. Use 
5239         mono_get_exception_file_not_found2 to construct FileNotFoundException,
5240         as this results in a more meaningful error message.
5241
5242 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
5245         #79465.
5246
5247 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * metadata.c (mono_type_size): Change the align parameter to guint32 for
5250         consistency with the other _size functions.
5251         (mono_type_stack_size): Ditto.
5252
5253         * class.c object.c icall.c: Fix warnings caused by the above change.
5254
5255         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
5256
5257         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
5258
5259         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
5260
5261 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
5262
5263         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
5264         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
5265         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
5266         threadpool.h, threads-types.h: mark more internal functions.
5267
5268 2006-10-11  Dick Porter  <dick@ximian.com>
5269
5270         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
5271         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
5272         reproduce the bug even before applying the fix.)
5273
5274 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
5275
5276         * reflection.c: allow retrieving attributes for arguments in generic
5277         methods (bug #79241).
5278
5279 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
5280
5281         * debug-mono-symfile.c: properly check fopen () result (found by
5282         coverity).
5283
5284 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
5285
5286         * reflection.c: make error message clearer and fixed two
5287         issuelets found by Coverity.
5288
5289 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
5292
5293 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
5294
5295         * object-internals.h, gc-internal.h, profiler-private.h:
5296         mark internal functions.
5297
5298 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
5299
5300         * reflection.c: put data in the text section.
5301         * icall.c: recognize more types in type_from_typename ().
5302         * process.c, marshal.c: added some GC FIXMEs.
5303
5304 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5305
5306         * loader.c: check for NULL before initializing.
5307
5308 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * gc.c (finalizer_thread): Use a non-alertable wait here.
5311
5312         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
5313         until the correct solution is found.
5314
5315 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
5316
5317         * reflection.c (mono_module_get_object): Avoid an assert when operating on
5318         modules with no metadata. Fixes #79596.
5319
5320         * image.c (load_metadata_ptrs): Put back the error message when
5321         the #- heap is encountered since the support is not complete yet.
5322
5323 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
5324
5325         * gc.c: do not allow the user to SuppressFinalize () a
5326         delegate because it would leak the trampoline if present.
5327
5328 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
5329
5330         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
5331         PropertyPtr table.
5332
5333 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
5336
5337         * metadata.c (mono_metadata_get_param_attrs): Ditto.
5338
5339         * row-indexes.h: Add definitions for *Ptr tables.
5340
5341         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
5342
5343         * metadata.c (mono_metadata_translate_token_index): New helper function to
5344         translate table indexes used in uncompressed metadata.
5345         (mono_metadata_decode_table_row): Ditto.
5346         (mono_metadata_decode_table_row_col): Ditto.
5347
5348         * metadata.c: Add table schema for *Ptr tables.
5349
5350         * class.c loader.c: Use the new helper function to access the affected metadata
5351         tables.
5352         
5353         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
5354         #38532.
5355         
5356 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
5359         sequences which can be unbounded in size. Fixes #79583.
5360
5361 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
5364         static initialization.
5365
5366         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
5367
5368         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
5369
5370         * domain.c (mono_domain_free): Free up type_init_exception_hash.
5371
5372         * object.c (mono_runtime_class_init): Implement correct semantics when a static
5373         ctor fails, i.e. throw the same exception on subsequent accesses.
5374         
5375 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
5376
5377         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
5378         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
5379         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
5380         Handle marshalling of interfaces and VARIANTs contained in structs.
5381         
5382         Code is contributed under MIT/X11 license.
5383         
5384 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
5385
5386         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
5387         
5388         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
5389         mempool.
5390
5391 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5392
5393         * console-io.c: ignore previous SIGINT handler.
5394
5395 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
5398         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
5399         #79460, #79461, #79485.
5400
5401         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
5402
5403         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
5404         #79217.
5405
5406 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
5409         could be generated from it.
5410
5411 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
5412
5413         * rand.c: fix read loop to correctly handle EINTR.
5414
5415 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
5416
5417         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
5418         internal calls are defined to keep methods closer to the declaring
5419         type and allow a significant reduction in runtime relocations and
5420         memory usage.
5421
5422 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
5423
5424         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
5425         exception message to have FileNotFoundException use the default
5426         assembly load error message. Fixes bug #79426.
5427         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
5428
5429 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5430
5431         * threadpool.c: (start_thread_or_queue) use the root domain when
5432         creating the thread instead of the async object one.
5433
5434 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
5435
5436         * class.c, object.c, class-internals.h, reflection.c:
5437         for arrays, store element_size inside MonoClass (speedup
5438         for array object creation).
5439
5440 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
5441
5442         * icall.c: fixed CodeBase to use the file name and not the module
5443         name (bug #79365).
5444
5445 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
5446
5447         * mono-debug.c, mono-debug.h: export find_method as
5448         mono_debug_find_method ().
5449
5450 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
5451
5452         * debug-helpers.c, class-internals.h: added a few functions useful
5453         when debugging under gdb.
5454
5455 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5456
5457         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
5458         characters that need special handling.
5459
5460 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
5461
5462         * mono-config.c: make the os/cpu specification more flexible,
5463         allowing lists and negation.
5464
5465 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
5466
5467         * marshal.c: COM Interop fixes. Handle case where method->klass.
5468         is interface. Handle BSTR/MonoString when null. Use CDECL as 
5469         calling convention on non-windows platforms. This is for
5470         compatibility with XPCOM and MainWin COM.
5471         
5472         Code is contributed under MIT/X11 license.
5473         
5474
5475 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
5478         correctly. Fixes #79217.
5479
5480         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
5481
5482 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
5483
5484         * mono-config.c: allow both an os and cpu attribute for dllmap
5485         and dllentry elemnets to enable a single config file to be used
5486         for multiple architectures.
5487
5488 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
5489
5490         * loader.c: MonoLoaderError was cleared too soon on load failure.
5491         Fixes bug #79424.
5492
5493 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
5494
5495         * icall.c: use the defining class vtable when accessing a
5496         static field, not a pobblibly derived class.
5497
5498 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * icall.c string-icalls.c: Remove references to unicode.h.
5501
5502         * unicode.h unicode.c Makefile.am: Remove these unused source files.
5503
5504         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
5505
5506         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
5507         indicating the image where custom marshaller types should be looked up.
5508         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
5509         custom marshallers, instead of corlib. Fixes #79425.
5510
5511 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
5512
5513         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
5514
5515 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
5516
5517         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
5518         Implement Environment.ProcessorCount.
5519         
5520         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
5521         Implement Environment.ProcessorCount.
5522         
5523         * icall.c: 
5524         Add Environment.ProcessorCount icall.
5525         
5526         Patch by Jason McFall.
5527
5528 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5529
5530         * assembly.c: don't append .exe/.dll when the filename already contains
5531         one of those extensions.
5532
5533 2006-09-12  Martin Baulig  <martin@ximian.com>
5534
5535         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
5536         to array interfaces.
5537
5538 2006-09-11  Martin Baulig  <martin@ximian.com>
5539
5540         * reflection.c (mono_image_build_metadata): Create the
5541         MethodImpl's after emitting all types and methods, so we don't
5542         need another fixup pass for them.
5543
5544 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
5545
5546         * class.c (mono_class_from_name_case): Fix regression introduced by the last
5547         change.
5548
5549 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
5550
5551         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
5552         unload.
5553
5554 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
5555
5556         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
5557         args is not set. Fixes #78926.
5558
5559 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
5562
5563         * image.c (load_class_names): Move this to class.c, and rename it to 
5564         'mono_image_init_name_cache'.
5565         (load_modules): Fix a warning.
5566
5567         * class.c icall.c image.c: Initialize image->name_cache lazily.
5568
5569         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
5570         on its name using information in the AOT file.
5571
5572         * class.c (mono_class_from_name): Use the new hook function.
5573
5574 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
5575
5576         * reflection.c (mono_param_get_objects): Handle enum default parameter values
5577         correctly.
5578
5579         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
5580         Fixes #79289.
5581         
5582 2006-09-06  Martin Baulig  <martin@ximian.com>
5583
5584         * icall.c (mono_lookup_internal_call): Small fix.
5585
5586 2006-09-05  Raja R Harinath  <rharinath@novell.com>
5587
5588         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
5589         double g_free.
5590
5591 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
5592
5593         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
5594         when --debug is specified.
5595
5596 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
5597
5598         * class.c (setup_generic_array_ifaces): Fix a warning.
5599
5600 2006-09-04  Miguel de Icaza  <miguel@novell.com>
5601
5602         * Temporarily remove the patch to assemly.c that checks the
5603         assembly versions as it breaks our gacutil.
5604
5605 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
5608
5609         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
5610         a net 1.0 runtime.
5611
5612         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
5613         created using the default ctor. Fixes #79152.
5614         (mono_string_builder_to_utf16): Ditto.
5615
5616 2006-09-01  Martin Baulig  <martin@ximian.com>
5617
5618         Fix handling of the generic array interfaces.
5619
5620         * class-internals.h
5621         (MonoDefaults): Removed `generic_array_class' and added
5622         `generic_ilist' class.
5623
5624         * class.c
5625         (mono_bounded_array_class_get): Add the new generic array interfaces.
5626         (setup_generic_array_ifaces): New static method; create vtable
5627         entries for each method in the generic array interfaces.
5628
5629         * metadata.c
5630         (select_container): Allow "parent-less" generic methods.
5631
5632         * marshal.c
5633         (mono_marshal_get_generic_array_helper): New public method.
5634
5635         * icall.c
5636         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
5637         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
5638         moved the interncall into System.Array.
5639
5640 2006-09-01  Raja R Harinath  <rharinath@novell.com>
5641
5642         A few more cases of avoiding work on types with ->byref set.
5643         Has the real fix for #79238
5644         * icall.c (is_generic_parameter): New helper.
5645         (ves_icall_Type_GetGenericParameterPosition): Use it.
5646         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
5647         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
5648         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
5649         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
5650         reference types.
5651         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
5652         reference types.
5653         (ves_icall_Type_get_IsGenericInstance): Likewise.
5654         (ves_icall_Type_get_IsGenericType): Likewise.
5655
5656 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
5657
5658         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
5659         class if possible.
5660
5661         * mempool.h (mono_mempool_get_allocated): New helper function.
5662
5663         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
5664         change.
5665
5666         * mempool.c: Fix warnings and the calculation of stats.
5667
5668         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
5669
5670         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
5671
5672         * loader.c (mono_get_method_from_token): Update method_count stat.
5673
5674         * class-internals.h (MonoStats): Add some stats.
5675
5676 2006-08-31 Robert Jordan  <robertj@gmx.net>
5677
5678         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
5679         with managed variants.
5680         All code is contributed under the MIT/X11 license.
5681         
5682 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
5685         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
5686
5687         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
5688
5689         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
5690         with cycles in classes.
5691
5692         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
5693
5694         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
5695         missing a [MarshalAs] directive. Fixes #79203.
5696
5697         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
5698         klass->marshal_info. Fixes #79217.
5699
5700 2006-08-30  Martin Baulig  <martin@ximian.com>
5701
5702         Committing a patch from Joachim Ante <joe@otee.dk>:
5703         Add support for binary data symbol stores.
5704
5705         * debug-mono-symfile.c
5706         (mono_debug_open_mono_symbol_file): Renamed into
5707         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
5708         arguments.
5709
5710         * mono-debug.c
5711         (mono_debug_open_image): Added `raw_contents' and `size' args.
5712         (mono_debug_init_2_memory): New public function.
5713
5714 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
5715
5716         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
5717
5718 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5719
5720         * appdomain.c: implement support for ShadowCopyFiles.
5721
5722 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
5723
5724         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
5725         when value is NULL (and should remove CID #51).
5726
5727 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5728
5729         * image.c: moved 2 functions to ../utils.
5730
5731 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
5732
5733         * gc.c: cope with the target object of a GC handle being NULL
5734         (bug #78877).
5735
5736 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
5737
5738         * class.c: recursively check parent's explicit implementations
5739         of interface methods (fixes bug #79125).
5740
5741 2006-08-19  Miguel de Icaza  <miguel@novell.com>
5742
5743         * filewatcher.c: Avoid warnings when building, do not redefine
5744         constants that are defined.
5745
5746         Remove warnings.
5747
5748 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5749
5750         * image.c: don't fail when the link points to an absolute path.
5751
5752 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
5753
5754         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
5755         Fix CID #3.
5756
5757 2006-08-17  Miguel de Icaza  <miguel@novell.com>
5758
5759         * image.c (full_path): A new method used to obtain the actual path
5760         of an assembly even in the presence of symbolic links.  
5761
5762         This is necessary for the case where we are running a binary that
5763         has been GACed, but we are using the "published" path name
5764         ($prefix/mono/1.0/blah.exe) which happens to point to the real
5765         file in the GAC.
5766
5767         This was the source of the failure for the `xsp' command with the
5768         recent AppDomain changes, as far as the runtime was concerned,
5769         there were two different assemblies: $prefix/mono/1.0/blah.exe and
5770         $prefix/mono/gac/blah/version/blah.exe.
5771
5772         (do_mono_image_open): use full path
5773
5774 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
5777
5778 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
5779
5780         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
5781         domain_id is supplied. Fix CID #241 and corlib's unit tests.
5782
5783 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
5786         small structures. Fixes #78990.
5787
5788 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
5789
5790         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
5791
5792         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
5793
5794 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5795
5796         * appdomain.c:
5797         * marshal.c: don't load all the assemblies from a domain into newly
5798         created ones. The new domains might have different rules and load
5799         assemblies from different locations. Fixes bug #76757.
5800
5801         Patch by Lluis. Conflicts resolved by Brian Crowell.
5802
5803 2006-08-16  Alp Toker  <alp@atoker.com>
5804
5805         * socket-io.c: First half of the fix for #79084.
5806         Set sa_size to the length of the content, not that of the struct.
5807         Don't add NULL suffix to the content, this should be done in
5808         managed code if needed.
5809
5810 2006-08-14  Raja R Harinath  <rharinath@novell.com>
5811
5812         Fix part of #79012
5813         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
5814         mono_metadata_parse_type returns NULL.
5815
5816 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
5817
5818         * normalization-tables.h : new file for string normalization data.
5819         * locales.c, locales.h, icall.c :
5820           added load_normalization_resource() for string normalization,
5821           and icall as well.
5822         * Makefile.am : added normalization-tables.h to the sources.
5823
5824 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * marshal.c: Add more helper functions to reduce code duplication and use them
5827         everywhere.
5828
5829 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * marshal.c: Fix non-x86 stdcall warnings.
5832         
5833         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
5834         them everywhere.
5835
5836 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
5837
5838         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
5839         type check on multi-dimensional arrays. Fixes #79000.
5840
5841 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
5842
5843         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
5844         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
5845         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
5846         * class-internals.h: add is_com_object to class structure.
5847         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
5848         null checks to COM object marshalling. Fix .ctor call on RCW.
5849         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
5850         
5851         All code is contributed under the MIT/X11 license.
5852
5853 2006-08-09  Dick Porter  <dick@ximian.com>
5854
5855         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
5856         racing mono_monitor_allocator_lock() somewhere, so don't delete
5857         the critical section for now.  Found by running and exiting
5858         monodevelop.
5859
5860 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
5861
5862         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
5863         (ves_icall_System_ComObject_FindInterface): Ditto.
5864         (ves_icall_System_ComObject_CacheInterface): Ditto.
5865
5866         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
5867         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
5868
5869 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5870
5871         * threadpool.c: treat pipes from process asynchronous reads as sockets
5872         when reading from them, so we get select/poll or epoll to wait for
5873         data.
5874
5875 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
5876
5877         * loader.c: Fix a typo (CID #233) in the null check.
5878
5879 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
5880
5881         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
5882         Hopefully fixes #78949.
5883         
5884         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
5885         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
5886         bytes. Fixes #78972.
5887
5888 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5889
5890         * filewatcher.c: we need to set errno here.
5891
5892 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5893
5894         * filewatcher.c: let Win32Exception get the error value.
5895
5896 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5897
5898         * filewatcher.c: translate errno into win32 errors for Win32Exception
5899         to know what happened.
5900
5901 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
5902
5903         * threadpool.c: Fix more warnings.
5904
5905         * assembly.c (search_loaded): Fix warnings.
5906
5907         * threadpool.c (mono_thread_pool_finish): Fix warnings.
5908         (mono_async_invoke): Ditto.
5909
5910 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
5911
5912         * object.c (mono_remote_class_vtable): Need to create proxy vtable
5913         entries for __ComObject type in addition to ComImport types.
5914         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
5915         about hash table.
5916         
5917         All code is contributed under the MIT/X11 license.
5918
5919 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
5920
5921         * image.c: avoid tentative loading of modulerefs that contain
5922         no metadata (P/Invoke library names).
5923
5924 2006-07-28  Dick Porter  <dick@ximian.com>
5925
5926         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
5927         mono_loader_lock() somewhere, so don't delete the critical section
5928         for now.  Found by running and exiting monodevelop.
5929
5930 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5931
5932         * filewatcher.c: define the inotify syscalls when we're building on
5933         linux and have sys/syscall.h. The build system might not have support
5934         for inotify but the target system might have it.
5935
5936 2006-07-26  Miguel de Icaza  <miguel@novell.com>
5937
5938         * domain.c: Documentation updates.
5939
5940         * loader.c (mono_free_method): Do not release the method
5941         information if we are being profiled, as profilers will use this
5942         information at shut down to present some data to the user.
5943
5944         This is needed so that the profiler does not crash, as the
5945         profiler tends to keep MonoMethods around, and they might become
5946         invalid if we free these.
5947
5948         (mono_get_method_constrained): Return the original CIL stream
5949         method as well, so verification can be performed against it.
5950
5951 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5952
5953         * filewatcher.[ch]: support for inotify file system watcher.
5954         * icall.c: add new internal calls for the inotify file system watcher.
5955
5956 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5957
5958         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
5959         #78888.
5960
5961 2006-07-20  Dick Porter  <dick@ximian.com>
5962
5963         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
5964         warning.
5965
5966 2006-07-20  Dick Porter  <dick@ximian.com>
5967
5968         * threads.c (start_wrapper): Do the thread cleanup while we still
5969         hold a reference to its object.  Fixes bug 78123.
5970
5971 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
5972
5973         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
5974         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
5975           "managed-to-managed".
5976         * icall.c: Redirect string constructors that take sbyte* to
5977           ves_icall_System_String_ctor_RedirectToCreateString.
5978         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
5979           to CreateString () methods with matching signature.
5980         * reflection.c: Use original security informations for
5981           MONO_WRAPPER_MANAGED_TO_MANAGED.
5982         * security-manager.c: Use original security informations for
5983           MONO_WRAPPER_MANAGED_TO_MANAGED.
5984         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
5985           that is a placeholder and only its address should be used.
5986         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
5987           that is a placeholder and only its address should be used.
5988
5989 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
5990
5991         Begin implementing COM Interop.
5992         * appdomain.c: Increment corlib version.
5993         * class.c: Set ComImport classes' parent to __ComObject.
5994         * loader.c: Mark cominterop methods as such.
5995         * domain.c: Add __ComObject class to MonoDefaults structure.
5996         * image.c: Add 2 hashtables to the image for COM Interop related methods
5997         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
5998         using the mempool allocator
5999         
6000         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
6001         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
6002         declaration for mono_metadata_type_dup_mp.
6003         
6004         * debug-helpers.c: Added strings for two additional wrapper types
6005         * object.c: Create proxy objects for ComImport classes
6006         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
6007         and added __ComObject class to MonoDefaults structure.
6008         
6009         * object-internals.h: Finish MonoRealProxy definition, and add definition of
6010         MonoComInteropProxy and MonoComObject.
6011         
6012         * marshal.c: Added support for COM Interop
6013         (signature_cominterop): Converts managed signature to corresponding
6014         unmanaged COM signature.
6015         (cominterop_get_function_pointer): gets unmanaged function pointer via
6016         COM object vtable
6017         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
6018         (cominterop_get_method_interface): returns interface type that method is defined on
6019         (mono_mb_emit_cominterop_call): emits native call to function pointer
6020         gotten from vtable
6021         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
6022         that matches signature of unmanaged function.
6023         (cominterop_get_native_wrapper): wrapper around adjusted method call.
6024         (cominterop_get_invoke): forwards call from proxy to __ComObject
6025         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
6026         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
6027         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
6028         
6029         * marshal.h: Added Marshal icall declarations.
6030         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
6031         so we can access them in finalizer
6032         
6033 2006-07-14  Dick Porter  <dick@ximian.com>
6034
6035         * object.c (mono_type_initialization_cleanup): Fix a race
6036         condition by temporarily commenting out the critical section
6037         deletion.
6038
6039 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
6040
6041         * reflection.c (create_custom_attr): Fix some warnings.
6042         (create_custom_attr_data): Ditto.
6043         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
6044         types. Fixes #78855.
6045
6046 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
6047
6048         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
6049
6050         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
6051
6052 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * reflection.c (resolve_object): Add support for DynamicMethod.
6055
6056         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
6057         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
6058
6059 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
6060
6061         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
6062         don't leak GPtrArray's pdata has we have no use (nor free) for it.
6063
6064 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
6065
6066         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
6067         Fixes #77888.
6068
6069 2006-06-30  Raja R Harinath  <rharinath@novell.com>
6070
6071         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
6072         slightly: remove a shadow local variable.
6073
6074 2006-06-29  Raja R Harinath  <rharinath@novell.com>
6075
6076         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
6077         definition that introduces the virtual function slot.
6078         Also fix Coverity #105.
6079
6080 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
6081
6082         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
6083         for dynamic assemblies. Fixes #78724.
6084
6085 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
6086
6087         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
6088         Fixes #78722.
6089
6090 2006-06-21  Martin Baulig  <martin@ximian.com>
6091
6092         * reflection.c
6093         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
6094         fixes #76484.
6095
6096 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
6097
6098         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
6099
6100 2006-06-20  Raja R Harinath  <rharinath@novell.com>
6101
6102         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
6103         nor TYPEREFs.
6104         * class.c (mono_class_create_from_typespec): Add 'context' argument.
6105         Inflate result if necessary.
6106         (mono_class_get_full): Remove old version.  Rename from
6107         'mono_class_get' and add 'context' argument.  Pass it to
6108         ..._create_from_typespec.
6109         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
6110         (mono_ldtoken): Revert change below.
6111
6112 2006-06-20  Martin Baulig  <martin@ximian.com>
6113
6114         * class.c (mono_ldtoken): Don't pass the generic context to
6115         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
6116
6117 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
6118
6119         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
6120         and later freeing it. Fixes #78638.
6121
6122 2006-06-15  Miguel de Icaza  <miguel@novell.com>
6123
6124         * icall.c (mono_class_get_throw): Revert over-zealous error
6125         throwing, the caller for mono_class_get_throw will cope with
6126         errors when classes are not properly initialized already.
6127
6128         The code still copes with loader exceptions though.
6129
6130         Fixes the regression in reftype1 and reftype3 from the CAS tests.
6131         
6132 2006-06-14  Miguel de Icaza  <miguel@novell.com>
6133
6134         Fixes the `make run1' version of RuntimeAbort (to be commited,
6135         source is in Bugzilla).
6136         
6137         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
6138         FALSE on class loading failure instead of returning true.
6139
6140         * class.c (mono_class_create_from_typedef): It is possible for
6141         mono_metadata_interfaces_from_typedef_full to fail if a class is
6142         not found, cope with this.
6143         
6144
6145 2006-06-14  Dick Porter  <dick@ximian.com>
6146
6147         * socket-io.c: 
6148         * process.c: Fix a bunch of signed/unsigned warnings from gcc
6149         4.1.1
6150
6151 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
6152
6153         * culture-info-table.h : oops, forgot to make it nsync with r61548.
6154
6155 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6156
6157         * icall.c: Another fix for building mono in Visual Studio.
6158
6159 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
6160
6161         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
6162         
6163 2006-06-09  Martin Baulig  <martin@ximian.com>
6164
6165         * debug-mono-symfile.c: Put this back and really fix it this
6166         time. Sorry for all the trouble.
6167
6168 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * icall.c (mono_class_get_throw): Fix a warning.
6171         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
6172         ReflectionTypeLoadException if needed. Fixes #78606.
6173
6174         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
6175         (mono_class_init): Ditto.
6176
6177         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
6178         ref_only exceptions.
6179         (mono_loader_clear_error): Make this work even if there is no error.
6180
6181 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
6182
6183         * object-internals.h marshal.c marshal.h icall.c: Implement method 
6184         Marshal.GetComSlotForMethodInfo using internal call.
6185
6186 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
6189         a function for signalling it.
6190
6191         * class.c (mono_class_from_typeref): Use the new kind of loader error when
6192         a referenced assembly is not found.
6193
6194         * loader.c (mono_loader_error_prepare_exception): Add support for 
6195         LOADER_ERROR_ASSEMBLY. Fix formatting.
6196
6197 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
6198
6199         * domain.c appdomain.c class-internals.h marshal.c: Add support 
6200         for VARIANT marshalling on windows and increment corlib version
6201         since Variant struct was added.
6202
6203 2006-06-03  Miguel de Icaza  <miguel@novell.com>
6204
6205         * debug-mono-symfile.c: Revert Martin's previous patch which broke
6206         stack trace line information:
6207
6208         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
6209         (Martin) when looking up B which is between A and C, return A not C.
6210
6211         Bug is #78573.
6212
6213         Thanks to Alexander Olk for tracking this down.
6214
6215 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
6216
6217         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
6218         
6219         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
6220         avoid clobbering its value.
6221         (mono_string_to_lpstr): Fix a warning on windows.
6222
6223 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
6226
6227         * reflection.c loader.c: Removed references to 'dummy' flag.
6228
6229         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
6230
6231         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
6232         it gets GC tracking.
6233
6234         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
6235         GC tracking.
6236         
6237         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
6238
6239         * marshal.c threadpool.c: Update callers of mono_async_result_new.
6240
6241         * appdomain.c: Bump corlib version.
6242
6243 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6246         CEE_STIND_REF when working with object references.
6247
6248 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
6249
6250         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
6251         Fixes #78539.
6252
6253 2006-05-30  Miguel de Icaza  <miguel@novell.com>
6254
6255         * loader.c (method_from_memberref): Fix argument value for
6256         mono_loader_set_error_method_load (I was passing the MonoClass
6257         instead of the class name char *).
6258
6259 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
6260
6261         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
6262         CEE_STIND_REF when working with object references.
6263
6264 2006-05-30  Martin Baulig  <martin@ximian.com>
6265
6266         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
6267         mono_method_full_name() change and replace the ':' with a '.'
6268         here.
6269
6270 2006-05-30  Martin Baulig  <martin@ximian.com>
6271
6272         * debug-mono-symfile.c
6273         (mono_debug_symfile_lookup_location): Fix the algorithm:
6274         when looking up B which is between A and C, return A not C.
6275
6276 2006-05-29  Martin Baulig  <martin@ximian.com>
6277
6278         * mono-debug.h
6279         (MonoDebugMethodInfo): Make the typedef public.
6280         (MonoDebugSourceLocation): New public struct.
6281
6282         * mono-debug.c
6283         (mono_debug_source_location_from_address): Removed.
6284         (mono_debug_source_location_from_il_offset): Removed.
6285         (mono_debug_il_offset_from_address): Removed.
6286         (mono_debug_address_from_il_offset): Removed.
6287         (mono_debug_lookup_method): New public function.
6288         (mono_debug_lookup_source_location): New public function; replaces
6289         the old mono_debug_source_location_from_*() functions; see the
6290         inline documentation.
6291         (mono_debug_free_source_location): New public function.
6292         (mono_debug_print_stack_frame): New public function; see the
6293         inline documentation.
6294
6295         * debug-mono-symfile.c
6296         (mono_debug_find_source_location): Renamed into
6297         mono_debug_symfile_lookup_location(); only take a
6298         `MonoDebugMethodInfo *' and an `offset' argument; added inline
6299         documentation.
6300         (mono_debug_find_method): Renamed into
6301         mono_debug_symfile_lookup_method().
6302
6303 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
6304
6305         * assembly.c (mono_assembly_open_full): Dont overwrite the status
6306         returned by mono_image_open_full ().
6307
6308         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
6309         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
6310         #78517.
6311
6312         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
6313         #78518.
6314
6315 2006-05-27  Miguel de Icaza  <miguel@novell.com>
6316
6317         * class.c (mono_class_from_typeref): handle missing images
6318         earlier, deals with bug #78418.   Refactor code; 
6319
6320         Fix a warning introduced in my previous commit (some stale code
6321         from before I revisited my patch).
6322
6323         * class.c (mono_class_create_from_typedef): On failure, remove the
6324         class from the MonoImage->class_cache as the class is not
6325         initialized;   Fixes the leak pointed out by Paolo.
6326
6327 2006-05-25  Dick Porter  <dick@ximian.com>
6328
6329         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
6330         DeleteCriticalSections until I figure out which one may still be
6331         sometimes locked when mono_thread_cleanup is called.
6332
6333 2006-05-24  Dick Porter  <dick@ximian.com>
6334
6335         * threads.c (mono_thread_cleanup): Move the threading cleanup out
6336         of mono_thread_manage and back into its own function, so it can be
6337         called after the finalizer thread has finished.
6338
6339         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
6340
6341 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
6342
6343         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
6344         Fixes #78495.
6345
6346         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
6347         with non-blittable elements.
6348         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
6349
6350 2006-05-24  Martin Baulig  <martin@ximian.com>
6351
6352         * mono-debug-debugger.h (MonoDebuggerEvent): Added
6353         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
6354
6355         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
6356         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
6357         `mono_debugger_event_handler' to NULL.
6358
6359 2006-05-24  Martin Baulig  <martin@ximian.com>
6360
6361         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
6362
6363 2006-05-24  Martin Baulig  <martin@ximian.com>
6364
6365         * mono-debug-debugger.h
6366         (mono_debugger_create_notification_function): Added
6367         `MonoCodeManager *' argument.
6368
6369 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
6370
6371         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
6372
6373 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
6374
6375         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
6376         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
6377         implementation.
6378
6379 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
6380
6381         * icall.c: precise GC support: objects can't be stored in unmanaged
6382         memory anymore, even if they are kept alive by other references: since
6383         they can move the GC needs to be able to always find them.
6384
6385 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
6386
6387         * object.c: precise GC support for static fields. Support
6388         for moving GCs: write barriers and pinned allocation for interned
6389         strings.
6390
6391 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
6392
6393         * domain.c, domain-internals.h: precise GC support for the MonoDomain
6394         structure.
6395
6396 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
6397
6398         * class.c, gc.c: sgen and precise GC updates.
6399
6400 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
6401
6402         * marshal.h, marshal.c: added write barrier wrapper and precise type
6403         fixes.
6404
6405 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
6406
6407         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
6408         support.
6409
6410 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
6411
6412         * reflection.c: precise and sgen GC updates.
6413
6414 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
6415
6416         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
6417
6418 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
6419
6420         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
6421
6422 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
6423
6424         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
6425         MONO_TYPE_OBJECT. Fixes #78462.
6426
6427 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
6428
6429         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
6430         and blittable types.
6431
6432 2006-05-17  Miguel de Icaza  <miguel@novell.com>
6433
6434         * class.c (mono_class_get_exception_for_failure): Implement parts
6435         of a TODO: if the loader error is set (instead of the class
6436         error), we return a Loader exception that can be properly thrown
6437         elsewhere.
6438
6439         This was exposed by some Winforms 2.0 code that I tried to run
6440         (Atsushi pointed me to it).
6441
6442 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
6445         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
6446         
6447         * marshal.c (emit_marshal_vtype): Add limited support for 
6448         UnmanagedType.LPStruct. Fixes #78427.
6449
6450         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
6451         Applied a patch from kangaroo to fix #77523.
6452
6453 2006-05-17  Martin Baulig  <martin@ximian.com>
6454
6455         * threads.c
6456         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
6457         (debugger_thread_created): Removed.
6458         (debugger_thread_exited): Removed.
6459
6460 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6463
6464         * object-internals.h (MonoReflectionResource): Sync with managed version.
6465
6466 2006-05-12  Wade Berrier <wberrier@novell.com>
6467
6468         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
6469
6470 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
6471
6472         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
6473         functions try to allocate from the image mempool.
6474
6475 2006-05-12  Dick Porter  <dick@ximian.com>
6476
6477         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
6478
6479 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
6480
6481         * object.c: The FieldGetter and FieldSetter methods require the full
6482         name of the class, not only the name. Fixes bug #78277.
6483
6484 2006-05-11  Miguel de Icaza  <miguel@novell.com>
6485
6486         * loader.c (method_from_memberref): Do not pass the NULL klass to
6487         mono_loader_set_error_() methods.  Pass the non-NULL value
6488         (class). 
6489
6490 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
6491
6492         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
6493         (mono_assembly_close): Null out assembly->image->references after freeing it.
6494
6495         * image.c (mono_image_close): Free image->references.
6496         
6497         * reflection.c (mono_image_basic_init): Fix a small memory leak.
6498
6499 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
6500
6501         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
6502         before checking if it's NULL (g_assert).
6503
6504 2006-05-10  Martin Baulig  <martin@ximian.com>
6505
6506         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
6507         I thought I already killed that two months ago, but now it somehow reappeared.
6508
6509 2006-05-10  Martin Baulig  <martin@ximian.com>
6510
6511         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
6512
6513 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
6514
6515         * reflection.c: Allocate memory for dynamically created methods in the image
6516         mempools.
6517
6518 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
6519
6520         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
6521         don't use the ad pointer before checking if it's NULL (g_assert).
6522
6523 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
6526         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
6527
6528         * marshal.c: Allocate all signatures from mempools.
6529
6530         * marshal.c: Allocate some more signatures from mempools.
6531
6532 2006-05-09  Miguel de Icaza  <miguel@novell.com>
6533
6534         * object.c (mono_load_remote_field): The code used to provide a
6535         temporary variable for returning results if the user did not
6536         provide a result pointer.  But our temporary variable was allocted
6537         on the satck.
6538
6539         Fix calling code to always pass a result area.   Coverity ID 103.
6540
6541 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
6544         value, not the old. Fixes #78312.
6545         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
6546
6547         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
6548         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
6549         per-image cache.
6550
6551         * assembly.c (mono_assembly_close): Free image->references.
6552
6553         * assembly.c (mono_assembly_names_equal): Fix a warning.
6554         (mono_assemblies_cleanup): Cleanup more global data.
6555
6556         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
6557
6558         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
6559         ptr_cache and image->modules.
6560
6561         * image.c (mono_image_init): Allocate array_cache lazily.
6562         
6563 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6564
6565         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
6566         behavior was changed recently and has bad side effects.
6567
6568 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
6571         
6572         * assembly.c (mono_assembly_close): Remove a debug printf.
6573
6574         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
6575
6576         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
6577         to also allow for temporary references between mono_image_open ()/close ().
6578
6579         * domain.c (get_runtimes_from_exe): Add a FIXME.        
6580
6581 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
6582
6583         * marshal.c: Fix support for dynamic methods.
6584
6585         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
6586
6587         * marshal.c (mono_marshal_cleanup): New cleanup function.
6588
6589         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
6590         image mempools.
6591
6592         * class.c (mono_class_init): Fix leaking class->nested_classes.
6593
6594         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
6595
6596         * image.c (mono_image_init): Initialize the new cashes.
6597
6598         * image.c (mono_image_close): Destroy the new cashes.
6599
6600         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
6601
6602         * mempool.c (mono_mempool_strdup): New helper function.
6603
6604         * class-internals.h: Add prototype for mono_loader_unlock ().
6605
6606         * domain.c (mono_jit_info_table_find): Fix a warning.
6607         (mono_debugger_check_runtime_version): Ditto.
6608
6609         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
6610         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
6611         functions to these modules.
6612
6613         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
6614         metadata modules.
6615         
6616         * marshal.c (mono_free_bstr): Fix a warning.
6617
6618         * assembly.c (mono_assembly_open_full): Fix another small leak.
6619
6620         * object.c: Fix some unload leaks in the remoting code.
6621
6622         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
6623         function.
6624
6625         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
6626
6627         * reflection.c: Fix some unload leaks in dynamic assemblies.
6628
6629 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
6630
6631         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
6632         * marshal.h: Add BSTR support on Win32
6633         * icall.c: Add BSTR icalls
6634         * metadata.h: Add BSTR enums
6635
6636 2006-04-28  Miguel de Icaza  <miguel@novell.com>
6637
6638         Work to catch the crash from #76795 and turn it into an
6639         exception.   As I stubbed out pieces of the VisualBasic support,
6640         I found a number of places where the code was failing and I added
6641         checks to those places. 
6642         
6643         * metadata.c (do_mono_metadata_parse_generic_class): Make this
6644         function return a status code.  If we fail to parse the signature
6645         from mono_metadata_parse_generic_inst, return FALSE.
6646
6647         * loader.c (mono_get_method_from_token): If we fail to load the
6648         method (mono_class_get) return NULL.   
6649
6650         * (method_from_memberref): Return NULL if we are unable to parse
6651         the method signature
6652
6653         (mono_loader_error_prepare_exception): Since we now use the
6654         loader_error flag internally to stop processing, and obtaining
6655         exceptions that might be thrown will walk this code path the
6656         proper way of going from a MonoLoaderError into a
6657         MonoException was convoluted.   This new routine encapsulates the
6658         process of turning the error into an exception and *clearing* the
6659         error afterwards.
6660         
6661 2006-04-27  Miguel de Icaza  <miguel@novell.com>
6662
6663         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
6664         with missing assemblies), and to cope with:
6665
6666                 * Missing fieldref from a non-existing assembly.
6667                 * Missing methodref from a non-existing assembly.
6668
6669         The first batch of work to address *some* of the issues from 76661.
6670         
6671         * object.c (mono_class_create_runtime_vtable): If we fail to
6672         initialize the class raise the exception here. 
6673
6674         * metadata.c (mono_class_get_overrides_full): If any methods fail
6675         to load return the failure to the caller.
6676
6677         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
6678         flagging assemblies that failed to load.   
6679
6680         Do not crash if we are unable to load the assembly.
6681
6682         (mono_assembly_close): Do nothing with REFERENCE_MISSING
6683         assemblies. 
6684
6685         * loader.c (mono_loader_set_error_type_load): Change the
6686         convention to always pass unallocated strings, so we make our own
6687         copies (I know our own code had duplicated strings before, but
6688         this keeps the normal conventions).
6689         (method_from_memberref): Call mono_loader_set_error_method_load
6690         for all possible failures of loading the class. 
6691         Remove assert, turn into a loader error.
6692
6693         (mono_loader_error_to_exception): Move this routine from mini
6694         (mini_loader_error_to_exception) there was no need to have that in
6695         mini. 
6696
6697         * class.c (mono_class_from_typeref): If we were not able to load
6698         the assembly with mono_assembly_load_reference, call the
6699         mono_loader_set_error_type_load to register the problem.
6700
6701         (mono_class_setup_fields): If we fail to load the type from
6702         mono_metadata_parse_type_full, call mono_class_set_failure and
6703         break from the loop.
6704
6705         If class->exception_type is set, we do not layout the fields as
6706         that might crash the runtime, and instead return (from breaking
6707         from the previous loop).
6708
6709         (mono_class_setup_vtable): This now returns a boolean indicating
6710         whether the table was properly setup.   The decision is driven by
6711         mono_class_get_overrides_full which might run into non-existing
6712         methods. 
6713         
6714         (mono_class_init): Returns TRUE on success or FALSE if there was a
6715         problem in loading the type (incorrect assemblies, missing
6716         assemblies, methods, etc).
6717
6718         When we call mono_class_setup_fields we also check for a potential
6719         error inside this call (either a class exception or a general
6720         loader exception).
6721
6722         (mono_class_create_from_typedef): If the parent fails to load
6723         (calling mono_class_get_full) return NULL.
6724         
6725         ** Important **
6726
6727         calls to mono_metadata_parse_type_full should be checked
6728         everywhere and set the mono_class_set_failure
6729         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
6730
6731         The current patch checks the places where my manually constructed
6732         tests show the errors are showing up, but we should do it
6733         everywhere. 
6734
6735         ** Important2 **
6736
6737         mono_class_init return values should be tested everywhere, like
6738         the previous case this is something that we should audit
6739         everywhere and not only on the cases exposed by the tests I
6740         created. 
6741
6742 2006-04-26  Miguel de Icaza  <miguel@novell.com>
6743
6744         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
6745         boolean parameter and instead pass the information on `options'
6746         parameter (FileOptions).
6747
6748         * icall.c: Register the new signature for MonoIO.Open.
6749
6750         * debug-helpers.c (dis_one): Trying to understand how coverity
6751         works.  Fix Run 5, item 78.
6752
6753 2006-04-26  Dick Porter  <dick@ximian.com>
6754
6755         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
6756         dereference.
6757
6758 2006-04-25  Martin Baulig  <martin@ximian.com>
6759
6760         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
6761
6762         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
6763         debugger_thread_created().
6764         (debugger_gc_push_all_stacks): Don't handle the main thread in any
6765         special way.
6766         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
6767         (mono_debugger_finalize_threads): New function; undo the effects
6768         of mono_debugger_init_threads().
6769         (mono_debugger_create_all_threads): Removed.
6770
6771 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * image.c (mono_image_close): Tidy up trace messages.
6774
6775         * assembly.c (mono_assembly_close): Ditto.
6776
6777         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
6778         no longer references an already freed assembly. Fixes #78168.
6779
6780 2006-04-21  Dick Porter  <dick@ximian.com>
6781
6782         * threads.c (mono_thread_detach): Fix reference counting when
6783         detaching threads.
6784
6785 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
6788         #78155.
6789
6790 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
6793         (mono_type_to_stind): Ditto.
6794
6795         * marshal.c: Use the new helper functions to simplify code.
6796
6797         * image.c (mono_image_close): Add some code for help debug assembly unloading
6798         problems.
6799
6800         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
6801         image mempool.
6802
6803         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
6804         assembly was already loaded in another appdomain. Fixes #78083.
6805
6806 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
6809         referenced assemblies.
6810         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
6811
6812         * domain.c (mono_domain_free): Add a trace message.
6813
6814         * appdomain.c (add_assemblies_to_domain): Ditto.        
6815
6816         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
6817         field.  
6818
6819 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
6820
6821         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
6822
6823 2006-04-12  Martin Baulig  <martin@ximian.com>
6824
6825         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
6826         `USE_INCLUDED_LIBGC'.   
6827
6828 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
6831         the patch contains ../ and a small directory name later. Hopefully fixes
6832         #78035.
6833
6834 2006-04-10  Martin Baulig  <martin@ximian.com>
6835
6836         Clean up the debugger's thread-handling code.
6837
6838         The debugger's thread-handling code has been moved from
6839         ../mini/debug-debugger.c to threads.c.  We now iterate directly
6840         over the `threads' hash, keep track of exiting threads and also
6841         use proper locking.
6842
6843         We can now debug XSP and XSP based applications with the debugger.
6844
6845         * object-internals.h (MonoThread): Added `gpointer end_stack'.
6846
6847         * threads.h
6848         (MonoThreadCallbacks): Removed; this was only used by the debugger.
6849         (mono_install_thread_callbacks): Likewise.      
6850
6851         * threads.c (mono_thread_callbacks): Removed.
6852         (debugger_thread_created, debugger_thread_exited): New static functions.
6853         (start_wrapper): Call debugger_thread_created().
6854         (thread_cleanup): Call debugger_thread_exited().
6855         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
6856         (mono_debugger_init_threads): New public function.
6857         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
6858         iterate directly over the `threads' hash and also use proper locking.
6859
6860         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
6861
6862         * mono-debug-debugger.h
6863         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
6864
6865 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
6868         argument type=array. Fixes #78057.
6869
6870 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
6871
6872         * culture-info-table.h : regenerated. Fixed bug #69652.
6873
6874 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
6875
6876         * loader.c metadata.c: Reapply a variant r59116.
6877         
6878         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
6879
6880         * class.c (mono_class_setup_interface_offsets): New internal function.
6881
6882         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
6883         interfaces too. Fixes #77398.
6884
6885         * reflection.c (encode_cattr_value): Add support for 
6886         parameter type=object, argument type=array.
6887         (load_cattr_value): Ditto. Fixes #77916.
6888
6889         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
6890         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
6891
6892         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
6893         a byval char array and CharSet is Ansi.
6894
6895         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
6896
6897 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
6898
6899         * metadata.c: Add some locking comments.
6900         
6901         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
6902         mempool.
6903         (mono_metadata_free_method_signature): Don't free the signature itself.
6904
6905         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
6906
6907         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
6908         reference the same MonoImage.
6909         (mono_assembly_load_from_full): Add an assert.
6910
6911 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * image.c (mono_image_close): Don't put the image we are about to free into the
6914         loaded_images_guid_hash.
6915
6916         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
6917         to reduce code duplication.
6918
6919         * marshal.c: Register the native functions called by this module as icalls, to
6920         somewhat centralize the creation of MonoMethodSignature's.
6921
6922         * loader.c (mono_method_signature): Add a cache for method signatures.
6923
6924         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
6925         the parameter attributes of a method.
6926         (mono_metadata_parse_method_signature_full): Refactored the computation of
6927         parameter attributes into a separate function. Also avoid one allocation in
6928         most cases.
6929
6930         * assembly.c (mono_assembly_close): Ditto.
6931
6932         * image.c (mono_image_close): Log trace messages with INFO level.
6933
6934         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
6935
6936         * image.c reflection.c: Correct reference counting of image modules.
6937         
6938         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
6939         of this function from the image mempool.
6940         
6941         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
6942         to allow more cached types to be used.
6943
6944         * mono-debug.c (mono_debug_add_method): Appled patch from
6945         David S. Miller  <davem@sunset.davemloft.net>: Access 
6946         minfo->lexical_blocks[] entry elements using read32().
6947
6948 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
6949
6950         * loader.c (mono_free_method): No longer free the method header for non-dynamic
6951         methods as it is allocated from the mempool.
6952
6953         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
6954         image mempool.
6955
6956         * metadata-internals.h: Add comments describing the reference counting scheme
6957         used for MonoImage and MonoAssembly.
6958
6959         * image.c assembly.c reflection.c: Rework reference counting of images and 
6960         assemblies so they are freed when the runtime is shut down. Free some 
6961         additional memory structures when an image is unloaded.
6962         
6963 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
6964
6965         * class.c loader.c reflection.c: Allocate more data structures in
6966         the image mempool.
6967
6968 2006-03-31  Miguel de Icaza  <miguel@novell.com>
6969
6970         * icall.c
6971         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
6972         build on pre glib 2.4 systems.
6973
6974 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
6977
6978         * icall.c: Fix some warnings.
6979
6980 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
6981
6982         * culture-info-table.h : regenerated.
6983
6984 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
6985
6986         * threads.c, object-internals.h, verify.c: changed the culture caching
6987         code to use a normal MonoArray for storage so the GC can keep track of
6988         them easily. Fixed bits of the cache logic, too and simplified the
6989         code.
6990
6991 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
6992
6993         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
6994         thread for non-Boehm GCs.
6995
6996 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
6997
6998         * domain.c, object.c, domain-internals.h: reduce the amount of memory
6999         needed to keep track of the data for static fields.
7000
7001 2006-03-29  Raja R Harinath  <rharinath@novell.com>
7002
7003         Fix #75172
7004         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
7005         for interface classes.  Use 'num_methods' instead.
7006         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
7007         before using '->vtable_size' field.
7008
7009 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
7010
7011         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
7012         doesn't contain managed pointers, so use a normal hashtable.
7013
7014 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
7015
7016         * reflection.c, class-internals.h, domain.c: fixed handling of types
7017         used as values for objects in custom attributes (bug #77915):
7018
7019 2006-03-24  Martin Baulig  <martin@ximian.com>
7020
7021         * class.c (mono_class_setup_fields): Added support for generic
7022         instances; fixes #77580.
7023
7024 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7025
7026         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
7027
7028 2006-03-24  Dick Porter  <dick@ximian.com>
7029
7030         * file-io.c (get_file_attributes): More stat macro breakage.
7031         Fixes bug 77759.
7032
7033 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
7034
7035         * profiler.c: added the file=filename option in the default profiler
7036         to output the profile data to filename.
7037
7038 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7039
7040         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
7041         bug #77877.
7042
7043 2006-03-22  Martin Baulig  <martin@ximian.com>
7044
7045         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
7046         allocated `MonoClassField *' in `fb->handle'.
7047
7048 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7049
7050         * class.c, image.c, metadata-internals.h: implemented new mechanism to
7051         allocate interface ID to save memory and allow better ID reuse on
7052         appdomain unload. setup_generic_vtable () removal from Martin.
7053
7054 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7055
7056         * object.h, appdomain.c, domain.c, exception.c, icall.c,
7057         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
7058         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
7059         write barriers for reference stores with managed objects accessed with
7060         C structures in the runtime and in embedding programs.
7061
7062 2006-03-20  Raja R Harinath  <rharinath@novell.com>
7063
7064         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
7065         'interface_id' and 'max_interface_id' fields of MonoClasses
7066         representing open generic types.
7067
7068 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
7069
7070         * object.h, object.c, icall.c: added functions to deal with
7071         storing valuetypes that contain references in managed objects.
7072         * reflection.c, string-icalls.c, threads.c, marshal.c: small
7073         fixes and comments around uses of mono_array_addr ().
7074
7075 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
7076
7077         * object.h, icall.c, monitor.c: object.GetHashCode ()
7078         implementation that supports the moving garbage collector.
7079
7080 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
7081
7082         * icall.c, threads-types.h, threads.c: implemented finalizer for
7083         LocalDataStoreSlot.
7084
7085 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * metadata.c (mono_type_size): Add a fixme.
7088         (mono_type_stack_size): Ditto.
7089
7090         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
7091         'type_forwarders' field.
7092
7093         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
7094         attribute from net 2.0.
7095
7096         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
7097         from class.c.
7098
7099         * class.c (mono_class_setup_fields): Fix a warning.
7100         
7101         * class.c (mono_class_from_name): Add support for assemblyref entries
7102         in the EXPORTEDTYPE table.
7103
7104         * reflection.c: Add support for handling type forwarders under net 2.0.
7105
7106         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
7107         
7108 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
7111         overwriting entries in ModuleBuild->types, also clean up the code
7112         a little. Fixes #77774.
7113
7114 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
7115
7116         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
7117         load friend assembly info when present.
7118
7119 2006-03-14  Raja R Harinath  <rharinath@novell.com>
7120
7121         Fix crasher on gtest-158.cs.
7122         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
7123         the return value if the MonoClass we want is yet in an
7124         inconsistent state.
7125         * class.c (mono_class_create_from_typedef): Add an comment
7126         explaining an order dependency between mono_class_setup_parent and
7127         mono_class_setup_mono_type.
7128
7129 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
7130
7131         * class.c: documentation updates and events bug fix.
7132
7133 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7134
7135         * class.c: some cleanup, locking fixes.
7136
7137 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
7138
7139         * class.c: fix the generics code to setup nested
7140         type info to the instantiated type (bug #77770).
7141
7142 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7143
7144         * marshal.c: fixed a few type correctness issues.
7145
7146 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7147
7148         * loader.c: the Set/Get/Addrtess array methods should be public.
7149
7150 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
7151
7152         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
7153         
7154         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
7155         info->wrapper.
7156
7157 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
7160
7161         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
7162
7163         * mempool.c (mono_mempool_alloc): Speed this up a bit.
7164         (mono_mempool_alloc0): Ditto.
7165
7166 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7167
7168         * socket-io.c:
7169         (create_object_from_sockaddr): it was allocating 4 extra bytes
7170         for the AF_UNIX data. Fixes bug #77747.
7171
7172 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
7173
7174         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
7175
7176 2006-03-09  Dick Porter  <dick@ximian.com>
7177
7178         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
7179         Fixes bug 76966 again.
7180
7181 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
7182
7183         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
7184         names from r57532
7185         * appdomain.c: Bumped corlib version to 48 (due to r57532)
7186
7187 2006-03-07  Martin Baulig  <martin@ximian.com>
7188
7189         * object.c
7190         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
7191
7192 2006-03-07  Martin Baulig  <martin@ximian.com>
7193
7194         * class.c
7195         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
7196         regression introduced in r56970; see gtest-252.cs.
7197
7198         * loader.c (mono_get_method_constrained): Correctly handle generic
7199         methods; see gtest-253.cs.
7200
7201 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
7202
7203         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
7204
7205 2006-03-04  Martin Baulig  <martin@ximian.com>
7206
7207         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
7208         compute the parent type at runtime, just like we're already doing
7209         it for interfaces.
7210
7211         * reflection.c
7212         (mono_reflection_bind_generic_parameters): Don't compute the
7213         parent type anymore.
7214
7215         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
7216
7217 2006-03-04  Martin Baulig  <martin@ximian.com>
7218
7219         * mono-debug-debugger.h
7220         (mono_debugger_create_notification_function): Allocate memory at
7221         runtime and return a pointer to it.
7222
7223 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * assembly.c: Fix windows build.
7226         
7227         * assembly.c: Fix build.
7228
7229         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
7230
7231         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
7232         
7233 2006-03-03  Dick Porter  <dick@ximian.com>
7234
7235         * process.c
7236         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
7237         Check parameters before dereferencing them.  Fixes Aaron's part of
7238         bug 77393.
7239
7240 2006-03-03  Raja R Harinath  <rharinath@novell.com>
7241
7242         Fix performance regression.
7243         * loader.c (find_method_in_class): Add 'from_class' argument.
7244         Rename 'klass' argument to 'in_class'.  The signature is compared
7245         against the method in 'in_class', and the corresponding method is
7246         returned from 'from_class'.
7247         (find_method): Walk both 'in_class' and 'from_class' in parallel.
7248         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
7249         type definition and generic instantiation in parallel.
7250         (mono_get_method_constrained): Update to changes.
7251
7252 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
7253
7254         * threads.c: make sure the domain is correct, too when doing
7255         mono_thread_attach ().
7256
7257 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
7258
7259         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
7260         windows. Fixes #77683.
7261
7262 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
7263
7264         * object.h, *: introduced specific way to set elements of an array
7265         of references to be used as write barrier. Still need to audit the
7266         uses of mono_array_addr.
7267
7268 2006-03-01  Miguel de Icaza  <miguel@novell.com>
7269
7270         * object-internals.h: New field to cache the assmebly name, patch
7271         from Tambet Ingo (tambet@ximian.com)
7272
7273 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
7274
7275         * decimal.h, class-internals.h, metadata-internals.h,
7276         file-io.h: mark a few function declarations as internal, to
7277         reduce the number of PLT entries.
7278
7279 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7280
7281         * file-io.c: fix typo in warning message.
7282
7283 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
7284
7285         * loader.c: on unix, lookup the "*A" version of a function
7286         if charset is auto as a second option before failing.
7287
7288 2006-02-28  Raja R Harinath  <rharinath@novell.com>
7289
7290         * class.h (mono_class_inflate_generic_method): Revert to two
7291         argument version.
7292         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
7293         (mono_class_inflate_generic_method_full): Add.
7294         * class.c (mono_class_inflate_generic_method_full): Rename from
7295         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
7296         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
7297         * loader.c, reflection.c: Update to changes.
7298
7299 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
7300
7301         * icall.c: const fixes and small improvements.
7302
7303 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7304
7305         * threadpool.c: for asynchronous connect(), enable the same workaround
7306         for BSD 6 as for the Mac. Fixes bug #77637.
7307
7308 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
7309
7310         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
7311         formatted classes. Fixes #77524.
7312
7313 2006-02-24  Raja R Harinath  <rharinath@novell.com>
7314
7315         * class.c (inflate_generic_type): Add a couple more
7316         micro-optimizations.
7317         (inflate_generic_context): Don't use the 'gmethod' from
7318         'inflate_with'.
7319         (mono_class_inflate_generic_method): If the method has generic
7320         parameters, but the passed-in context doesn't have a 'gmethod',
7321         create one.  Use the possibly simplified generic instantiation
7322         from the declaring class instead of the one passed in.
7323
7324 2006-02-24  Raja R Harinath  <harinath@gmail.com>
7325
7326         Make generic method signature and method header handling lazy.
7327         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
7328         (inflate_generic_header): Likewise.
7329         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
7330         parameter to avoid inflating types.
7331         (mono_get_inflated_method): Empty out.
7332         * class.h (mono_class_inflate_generic_method): Update to changes.
7333         * loader.c (mono_get_method_from_token): Don't parse signature for
7334         generic methods, nor methods of generic classes.
7335         (mono_method_signature): Rename from 'mono_method_signature'.
7336         Inflate signature on demand.
7337         (mono_method_get_header): Inflate method header on demand.
7338         * reflection.c: Update to changes.
7339
7340 2006-02-23  Raja R Harinath  <rharinath@novell.com>
7341
7342         * metadata.c (mono_metadata_inflate_generic_inst): If the
7343         instantiation is closed, don't bother expanding it in the new
7344         context.
7345         * class.c (inflate_generic_class): If the generic instantiation
7346         doesn't change after inflation, return the argument itself.
7347         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
7348         Add bounds checks.
7349         (inflate_generic_context): If neither the generic class nor the
7350         generic method instantiations change, return the original context.
7351         * reflection.c (mono_method_get_object): Do
7352         'mono_get_inflated_method' before accessing the ->klass field.
7353         (inflate_mono_method): Don't create a MonoGenericMethod unless
7354         necessary.
7355         (inflate_method): Don't pass a constructed type as the declaring
7356         type of a methodbuilder.
7357
7358 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
7359
7360         * object.c: fix memory overwrite.
7361
7362 2006-02-22  Dick Porter  <dick@ximian.com>
7363
7364         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
7365         it doesn't work any more.
7366         (mono_threads_request_thread_dump): Fix unused variable warnings.
7367
7368 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7369
7370         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
7371         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
7372         the public header file.
7373
7374 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
7375
7376         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
7377
7378 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
7379
7380         * class-internals.h, object.c: reduce the size of MonoVTable
7381         and store the interface_offsets array at negative offsets.
7382
7383 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
7384
7385         * metadata.c: tweak table descriptors data structures to reduce
7386         size and runtime relocations.
7387
7388 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7389
7390         * marshal.c: fix some types and opcodes to be type-safe
7391         in marshaling wrappers.
7392
7393 2006-02-21  Ankit Jain  <jankit@novell.com>
7394
7395         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
7396
7397 2006-02-21  Raja R Harinath  <rharinath@novell.com>
7398
7399         * metadata.c (get_constraints): Relax debugging checks for monodis.
7400
7401 2006-02-21  Ankit Jain  <jankit@novell.com>
7402
7403         * metadata.c (mono_metadata_load_generic_params): Move the code
7404         checking for ambiguous generic params from here to mono/dis/get.c
7405         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
7406
7407 2006-02-21  Raja R Harinath  <harinath@gmail.com>
7408
7409         Fix assertion triggered when compiling nemerle.
7410         * class.c (mono_get_shared_generic_inst): Rename from
7411         get_shared_inst and make non-static.
7412         * loader.c (mono_get_shared_generic_method): New.  Used to create
7413         the MonoGenericContext-equivalent of a MonoGenericContainer.
7414         (mono_get_method_from_token): Initialize the 'context' field of
7415         the created MonoGenericContainer.
7416         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
7417         * metadata.c (get_constraints): Add sanity check.
7418         * class-internals.h: Add new internal methods.
7419
7420         * reflection.c (verify_safe_for_managed_space): New sanity check.
7421         Currently checks that owner-less generic parameters aren't allowed
7422         in managed space.
7423         (mono_type_get_object): Use it.
7424         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
7425         that are now in mono_type_get_object.
7426         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
7427
7428 2006-02-19  Raja R Harinath  <harinath@gmail.com>
7429
7430         * metadata.c (mono_type_create_from_typespec): Rename from
7431         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
7432         argument and caching of types in the generic container.
7433         (unwrap_arrays, find_generic_param): Remove.
7434         * metadata-internals.h: Update.
7435         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
7436
7437 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * class.c (mono_class_get_exception_for_failure): Fix a warning.
7440
7441         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
7442         return values. Fixes #77581.
7443
7444         * class.c (mono_fnptr_class_get): Switch name and name_space.
7445
7446         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
7447         classes and add support for [In, Out] attributes.
7448         (mono_marshal_free_asany): Ditto. Fixes #77524.
7449
7450 2006-02-18  Raja R Harinath  <harinath@gmail.com>
7451
7452         * class.c (mono_class_from_generic_parameter): Make more robust to
7453         incomplete MonoGenericContainers from monodis.
7454
7455 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7456
7457         * class-internals.h: added some more exception types.
7458         * class.c, metadata.c: added a few checks to handle missing
7459         types.
7460
7461 2006-02-17  Raja R Harinath  <rharinath@novell.com>
7462
7463         Use owner-less generic-params some more.
7464         * class.c (my_mono_class_from_generic_parameter): Remove.
7465         (mono_class_from_generic_parameter): Handle null image,
7466         param->name and param->owner.
7467         (mono_class_from_mono_type): Update.
7468         (mono_class_create_from_typespec): Remove 'container' parameter.
7469         If that parameter is non-null, the result is always inflated by
7470         'mono_class_get_full' anyway.
7471         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
7472         parameter.
7473         (mono_class_get_full): Update.
7474
7475         * class.c (inflate_generic_type) [GENERICINST]: If the generic
7476         instance is not open, don't bother inflating.
7477         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
7478         parse metadata for inflated classes.
7479         (_mono_class_get): Change GenericContext* parameter to
7480         GenericContainer*.
7481         (mono_class_create_from_typespec): Likewise.  Simplify, and
7482         implement trivially.  All the cases are handled in
7483         mono_class_from_mono_type.  Don't inflate returned class.
7484         (mono_class_get_full): Delegate GENERICINST optimization to
7485         inflate_generic_type.
7486         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
7487
7488 2006-02-16  Dick Porter  <dick@ximian.com>
7489
7490         * socket-io.c (create_object_from_sockaddr): Fix typo.
7491         (create_sockaddr_from_object): Check array lengths before
7492         potentially accessing items off the end.
7493         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
7494         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
7495         (ves_icall_System_Net_Sockets_Socket_Send_internal)
7496         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
7497         length checks to avoid wraparound overflows.
7498         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
7499         contents of the array of sockets
7500         (hostent_to_IPHostEntry2)
7501         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
7502         Check return value of inet_ntop ().
7503         (addrinfo_to_IPHostEntry): Fix typo
7504
7505 2006-02-16  Raja R Harinath  <rharinath@novell.com>
7506
7507         Type metadata parsing doesn't use generic-instantiation information.
7508         * metadata.c (mono_metadata_parse_array_full): Change
7509         MonoGenericContext* parameter to MonoGenericContainer*.
7510         (mono_metadata_parse_type_full): Likewise.
7511         (mono_type_create_from_typespec_full): Likewise.
7512         (mono_metadata_parse_mh_full): Likewise.
7513         (mono_metadata_parse_generic_inst): Likewise.
7514         (do_mono_metadata_parse_generic_class): Likewise.
7515         (do_mono_metadata_parse_type): Likewise.
7516         * metadata-internals.h: Update to changes.
7517         * class.c (mono_class_find_enum_basetype): Likewise.
7518         (mono_class_setup_fields): Likewise.
7519         (mono_class_create_from_typespec): Likewise.
7520         * loader.c (method_from_methodspec): Likewise.
7521         (mono_get_method_from_token): Likewise.
7522         (mono_method_get_header): Likewise.
7523
7524 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7525
7526         * marshal.c: handle additional GENERICINST case (patch from
7527         Thong Nguyen <tum@veridicus.com>).
7528         Fix a few cases where LDIND_I/STIND_I was used for references.
7529
7530 2006-02-16  Raja R Harinath  <rharinath@novell.com>
7531
7532         * reflection.c (mono_reflection_get_token): Remove unused variable.
7533
7534 2006-02-16  Martin Baulig  <martin@ximian.com>
7535
7536         * reflection.c (mono_reflection_get_token): Add support for fields
7537         in instantiated generic types.
7538
7539         * icall.c
7540         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
7541
7542 2006-02-15  Martin Baulig  <martin@ximian.com>
7543
7544         * icall.c
7545         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
7546         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
7547         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
7548         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
7549
7550 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
7551
7552         * class.c, metadata.c, metadata.h, object.c, icall.c,
7553         marshal.c: changed mono_type_get_underlying_type () to do
7554         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
7555         Fixed handling of instantiated generic valuetypes (bug #75479).
7556
7557 2006-02-15  Raja R Harinath  <rharinath@novell.com>
7558
7559         * metadata.c (mono_metadata_decode_signed_value): Simplify.
7560         Delegate to mono_metadata_decode_value, and work on the returned value.
7561
7562         * icall.c (ves_icall_MonoType_GetGenericArguments):
7563         Add consistency check here too.
7564         
7565 2006-02-15  Ankit Jain  <jankit@novell.com>
7566
7567         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
7568         char/short etc.
7569
7570 2006-02-15  Ankit Jain  <jankit@novell.com>
7571
7572         * metadata.c (mono_metadata_decode_signed_value): New function to decode
7573         signed values, used only for representing lower bounds of arrays.
7574         (mono_metadata_parse_array_full): Use new
7575         mono_metadata_decode_signed_value to decode lower bounds.
7576
7577 2006-02-14  Martin Baulig  <martin@ximian.com>
7578
7579         * reflection.c
7580         (mono_reflection_get_token): Support "MonoGenericMethod" and
7581         "MonoGenericCMethod" and allow generic instances / methods.
7582
7583 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
7586         to obtain the terminal size using an ioctl.
7587
7588         * object.c (mono_nullable_init): Revert this as nullable reference
7589         types are not valid.
7590         (mono_nullable_box): Ditto.
7591
7592 2006-02-09  Dick Porter  <dick@ximian.com>
7593
7594         * threads.c (mono_thread_detach): Drop a reference to the thread
7595         we're detaching.
7596
7597 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * object.c (mono_nullable_init): Handle nullable reference types.
7600         (mono_nullable_box): Ditto. Fixes #77446.
7601
7602 2006-02-07  Martin Baulig  <martin@ximian.com>
7603
7604         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
7605
7606 2006-02-07  Ankit Jain  <jankit@novell.com>
7607
7608         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
7609         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
7610         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
7611         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
7612         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
7613         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
7614
7615 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
7616
7617         * class.c (mono_class_create_generic): Set type_token as well.
7618
7619         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
7620         compatible with MS.
7621
7622 2006-02-02  Martin Baulig  <martin@ximian.com>
7623
7624         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
7625         has never been used so far.
7626
7627 2006-02-02  Martin Baulig  <martin@ximian.com>
7628
7629         * mono-debug-debugger.h: Changed comment at the top of this file;
7630         the header is not installed, but it's safe to #include it from
7631         within the JIT.
7632
7633         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
7634         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
7635
7636 2006-02-02  Martin Baulig  <martin@ximian.com>
7637
7638         * mono-debug.h
7639         (MonoSymbolTable): Removed the `metadata_info' field.
7640
7641         * mono-debug.c
7642         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
7643
7644         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
7645         (mono_debugger_add_builtin_types): Removed.
7646         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
7647         (mono_debugger_create_notification_function): We now operate on a
7648         pre-allocated area; take a `gpointer' and return `void'.
7649
7650         * mono-debug-debugger.c
7651         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
7652         (mono_debugger_add_builtin_types): Removed.
7653
7654 2006-02-02  Martin Baulig  <martin@ximian.com>
7655
7656         * threads.c (mono_debugger_create_all_threads): New public method.
7657
7658 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7659
7660         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
7661         breaks on several platforms.
7662
7663 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
7664
7665         * assembly.c: the VS.NET build doesn't supply default values for
7666         MONO_ASSEMBLIES and MONO_CFG_DIR.
7667
7668 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
7669
7670         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
7671         helper function.
7672
7673         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
7674
7675         * loader.c (method_from_memberref): Fix a warning.
7676
7677         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
7678
7679         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
7680         with explicit layout. Fixes #77433.
7681
7682 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
7683
7684         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
7685         max_interface_id is initialized before using it. Fixes #77398.
7686         (ves_icall_Type_GetInterfaces): Ditto.
7687
7688 2006-01-30  Raja R Harinath  <rharinath@novell.com>
7689
7690         * metadata.c (mono_metadata_parse_method_signature_full): Don't
7691         allocate memory for parameter attributes when parsing memberref
7692         signatures.
7693         * loader.c (mono_loader_set_error_method_load): Don't warn.
7694         (method_from_memberref): Ensure MissingMethodException gets thrown
7695         if method is not found.  Make warning more informative.
7696
7697 2006-01-29  Raja R Harinath  <harinath@gmail.com>
7698
7699         Fix #77397
7700         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
7701         return true if is byref.
7702         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
7703         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
7704         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
7705
7706 2006-01-27  Raja R Harinath  <rharinath@novell.com>
7707
7708         Fix tests/find-method.2.il
7709         * loader.c (find_method, find_method_in_class): Remove is_inflated
7710         argument.  Revert 2006-01-18 change.
7711         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
7712         is generic, search for method in its generic definition.
7713         * class.c (mono_class_setup_vtable_general): Print generic
7714         arguments of generic types in debugging printf.
7715
7716 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
7717
7718         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
7719
7720         * threads.c (mono_threads_request_thread_dump): New helper function.
7721
7722 2006-01-25  Raja R Harinath  <rharinath@novell.com>
7723
7724         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
7725
7726 2006-01-25  Ankit Jain  <jankit@novell.com>
7727
7728         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
7729         move definition to ..
7730         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
7731         
7732 2006-01-25  Ankit Jain  <jankit@novell.com>
7733             Raja R Harinath  <rharinath@novell.com>
7734
7735         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
7736         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
7737         as necessary.
7738
7739 2006-01-25  Martin Baulig  <martin@ximian.com>
7740
7741         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
7742         `MonoDebuggerThread' into debug-debugger.c.
7743
7744 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
7745
7746         * profiler.c: fix printing of data.
7747
7748 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
7749
7750         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
7751           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
7752
7753 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
7754
7755         * object.c: fix deadlock related to string interning.
7756
7757 2006-01-23  Martin Baulig  <martin@ximian.com>
7758
7759         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
7760
7761         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
7762
7763 2006-01-23  Martin Baulig  <martin@ximian.com>
7764
7765         * mono-debug.h: Moved the prototypes of some functions which are
7766         used by the JIT here from mono-debug-debugger.h.
7767
7768 2006-01-21  Martin Baulig  <martin@ximian.com>
7769
7770         * Makefile.am: Don't install mono-debug-debugger.h.
7771
7772 2006-01-21  Martin Baulig  <martin@ximian.com>
7773
7774         * mono-debug-debugger.h: Enforce the private status of this header
7775         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
7776         Moved some stuff from mono-debugger-jit-wrapper.h here.
7777
7778 2006-01-20  Raja R Harinath  <rharinath@novell.com>
7779
7780         * class.c (mono_class_from_typeref): Add a sanity test to help
7781         catch lack of assembly load/search hooks.
7782
7783 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * marshal.c (emit_struct_conv): Relax the fields with same offset
7786         check even more. Fixes #77230.
7787
7788 2006-01-18  Martin Baulig  <martin@ximian.com>
7789
7790         * loader.c (find_method_in_class): Added `gboolean is_inflated'
7791         argument; if false, we compare the uninstantiated signatures.
7792         (method_from_memberref): Compare the uninstantiated signatures;
7793         fixes #76417.
7794
7795 2006-01-18  Robert Jordan  <robertj@gmx.net>
7796
7797         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
7798         Clear the weak link. Fixes bug #77170.
7799
7800         * gc.c (mono_gchandle_free):
7801         Reflect *-gc.c changes (tiny optimization).
7802
7803 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
7804
7805         * metadata.c (mono_metadata_signature_dup): Applied patch from
7806         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
7807         Fixes #77288.
7808
7809 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * marshal.c (emit_struct_conv): Allow fields with the same offset when
7812         marshalling from native to managed code. Fixes #77230.
7813
7814 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7815
7816         * threadpool.c: fix problem (Mac only) when more than one asynchronous
7817         connect. Fixes bug #77020.
7818
7819 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
7820
7821         * class.c: fixed id assignement for nested interfaces (bug #77275).
7822         Added also better info for --print-vtable debugging.
7823
7824 2006-01-12  Martin Baulig  <martin@ximian.com>
7825
7826         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
7827         interfaces on-the-fly; fixes #76625.
7828
7829         * class-internals.h
7830         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
7831         don't need that anymore.
7832
7833 2006-01-12  Miguel de Icaza  <miguel@novell.com>
7834
7835         * socket-io.c
7836         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
7837         To avoid initing the nested_classes when not needed I turned the
7838         PeerCredData as a toplevel internal class, as it has to be shared
7839         anyways. 
7840
7841         Fixes the CASA issue.
7842
7843 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
7844
7845         * domain.c: Accessors for MonoJitInfo
7846
7847         * profiler-private.h: Add jitinfo to the end jit hook
7848
7849         * profiler.[ch]: Define new hooks, called after jitting which give
7850         the MonoJitInfo that was compiled
7851
7852 2006-01-10  Martin Baulig  <martin@ximian.com>
7853
7854         * class.c (mono_class_setup_events): Add support for generic
7855         classes; fixes #76440.
7856
7857 2006-01-06  Raja R Harinath  <rharinath@novell.com>
7858
7859         Fix #77160.
7860         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
7861         on passed-in method.
7862
7863 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
7864
7865         * object.c (mono_runtime_invoke_array): Add Nullable support.
7866
7867         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
7868
7869 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
7870
7871         * file-io.c: Don't consider sockets as directory and avoid an endless
7872         loop. Fix bug #76966.
7873
7874 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * object.c (mono_nullable_init): New helper function.
7877         (mono_nullable_box): Ditto.
7878
7879         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
7880
7881         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
7882
7883         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
7884         
7885 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * class.c (mono_class_is_assignable_from): Make T assignable to 
7888         Nullable<T>.
7889
7890 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
7891
7892         * appdomain.c: Bump corlib version to 46.
7893         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
7894         serialization purpose) and changed ves_icall_System_Reflection_
7895         Assembly_get_code_base signature to accept a boolean (to escape, or 
7896         not, the assembly code base).
7897
7898 2005-12-23  Dick Porter  <dick@ximian.com>
7899
7900         * icall.c: 
7901         * threads-types.h: 
7902         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
7903         CreateEvent icall now returns "created" boolean parameter.
7904
7905 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
7906
7907         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
7908         #76967.
7909
7910         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
7911         when attr_klass is an interface. Fixes #77045.
7912
7913 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
7914
7915         * marshal.c (emit_struct_conv): Fix previous patch.
7916         
7917         * marshal.c (emit_struct_conv): Add a check for fields with the same
7918         offset.
7919
7920 2005-12-20  Raja R Harinath  <rharinath@novell.com>
7921
7922         Fix regression in Mono.C5.
7923         * class.c (mono_class_create_generic): If 'klass' is an interface
7924         set up the interface offsets.
7925         (mono_class_is_assignable_from): Don't throw away generic arguments.
7926
7927 2005-12-19  Raja R Harinath  <rharinath@novell.com>
7928
7929         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
7930         type parameters.
7931
7932 2005-12-15  Raja R Harinath  <rharinath@novell.com>
7933
7934         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
7935         dead store.
7936         (do_mono_metadata_parse_generic_class): Don't pass the current
7937         generic context when parsing the type being instantiated: it
7938         cannot use it, anyway.
7939
7940         * loader.c (method_from_memberref): Don't inflate a signature if
7941         it doesn't contain any type parameters.
7942
7943 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
7944
7945         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
7946
7947 2005-12-14  Martin Baulig  <martin@ximian.com>
7948
7949         * class.c
7950         (mono_type_get_name_recurse): Don't return null for type
7951         parameters and open generic classes.
7952         (mono_class_setup_methods): Don't exclude generic instances.
7953         (mono_get_unique_iid): Use different IDs for different
7954         instantiations of the same generic type.
7955         (mono_class_setup_vtable): Only use setup_generic_vtable() for
7956         open generic instances; create a normal vtable for closed generic
7957         instances.
7958         (mono_class_setup_vtable_general): We're now also called for
7959         closed generic instances.
7960
7961         * reflection.c
7962         (mono_reflection_bind_generic_parameters): Correctly use
7963         mono_metadata_lookup_generic_inst() everywhere.
7964
7965 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * object.c (mono_class_create_runtime_vtable): Call 
7968         mono_class_setup_vtable ().
7969
7970         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
7971         function.
7972         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
7973         #76959.
7974
7975         * loader.c (mono_loader_set_error_type_load): Print the type load
7976         warnings to the console so they are more visible to the user.
7977         (mono_loader_set_error_method_load): Ditto.
7978
7979         * reflection.c (ensure_runtime_vtable): Revert the last change as it
7980         is still broken.
7981         
7982         * reflection.c (ensure_runtime_vtable): Fix build.
7983
7984         * reflection.c (ensure_runtime_vtable): Disable an optimization which
7985         doesn't work in all cases.
7986
7987 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * object.c (mono_array_new_full): Treat a single dimensional array
7990         with 0 lower bounds as an szarray. Fixes #76973.
7991
7992         * reflection.c (custom_attr_visible): Really fix this.
7993
7994 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
7995
7996         * reflection.c (custom_attr_visible): Allow nested public attributes
7997         as well.
7998
7999         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
8000         interface check.
8001
8002 2005-12-12  Raja R Harinath  <harinath@gmail.com>
8003
8004         * class.c (set_generic_param_owner): Delete.
8005         (mono_class_create_from_typedef): Don't set ->owner field of
8006         generic parameters to "param containers" of enclosing classes.
8007         * reflection.c (mono_reflection_initialize_generic_parameter):
8008         Likewise.
8009
8010 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
8011
8012         * reflection.c (custom_attr_visible): Fix build.
8013
8014 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
8017         private attributes.
8018         
8019         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
8020         handling of null parameter defaults.
8021
8022 2005-12-09  Raja R Harinath  <rharinath@novell.com>
8023
8024         * class.c (mono_class_from_generic_parameter): Don't set
8025         klass->generic_container.
8026         (my_mono_class_from_generic_parameter): Likewise.
8027
8028 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * reflection.c (load_public_key): Fix a warning.
8031         (method_encode_code): Fix unaligned accesses.
8032
8033 2005-12-07  Martin Baulig  <martin@ximian.com>
8034
8035         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
8036
8037         * reflection.c
8038         (write_generic_param_entry): Encode our custom attrs.
8039
8040         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
8041
8042 2005-12-07  Martin Baulig  <martin@ximian.com>
8043
8044         * reflection.c (encode_new_constraint): Removed; we don't use the
8045         `NewConstraintAttribute' anymore.
8046
8047 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
8050         not fire a TypeResolve event when Assembly.GetType () is called.
8051
8052 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
8053
8054         Beginning of support for nullable types in the runtime. Parts of
8055         this patch are from Martin.
8056
8057         * appdomain.c (MONO_CORLIB_VERSION): Bump
8058
8059         * domain.c (mono_init_internal): get the nullable type
8060
8061         * class.c (mono_class_is_nullable): New method
8062         (mono_class_get_nullable_param): New mehod
8063         (mono_class_create_generic): In types T? set cast_class to T
8064
8065         * class-internals.h (MonoDefaults): new nullable default class
8066         (mono_class_get_nullable_param, mono_class_get_nullable_param):
8067         new methods.
8068
8069 2005-12-05  Raja R Harinath  <rharinath@novell.com>
8070
8071         * metadata.c (select_container): New.  Refactor code to select the
8072         appropriate GenericContainer given the type of generic parameter
8073         we are looking for.
8074         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
8075         not a MonoGenericContext.  Use select_container.  Update parameters.
8076         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
8077         and MONO_TYPE_MVAR.
8078         (unwrap_arrays): Remove duplicate tests.
8079         (find_generic_param): Rename from 'has_same_context'.  Now walks a
8080         generic instantiated class to find any arguments that are generic
8081         parameters.
8082         (mono_type_create_from_typespec_full): Use find_generic_param to
8083         avoid evicting some generic instantiations from the typespec
8084         cache.
8085
8086 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
8087
8088         * reflection.c: fixed writing of doubles on ARM FPA.
8089
8090 2005-12-02  Robert Jordan  <robertj@gmx.net>
8091
8092         * icall.c: Fixed EventInfo.ReflectedType (#76829).
8093
8094 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8095
8096         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
8097         least on SUSE 10 they are not the same (on debian, they are just the
8098         same thing).
8099
8100 2005-12-01  Raja R Harinath  <rharinath@novell.com>
8101
8102         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
8103         DeclaringType for VARs and MVARs.
8104         * class.c (set_generic_param_owner): Fix initialization of owner
8105         fields.
8106
8107 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
8108
8109         * icall.c: fixed Enum.ToObject() to correctly convert the values.
8110
8111 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8112
8113         * threadpool.c: workaround for a bug that shows up on the Mac:
8114         select()+connect() on a blocking socket is not like it should
8115         be, so we proceed to connect() in that case, wasting the I/O
8116         threadpool thread until connect succeedes. Fixes bug #75436.
8117
8118 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8119
8120         * threadpool.c: fix typo when setting file descriptor states.
8121
8122 2005-11-28  Raja R Harinath  <rharinath@novell.com>
8123
8124         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
8125         * metadata.c (mono_metadata_parse_method_signature_full): Don't
8126         create a temporary signature container.
8127         (mono_metadata_parse_generic_param): Update to changes.
8128         (mono_type_create_from_typespec_full): Update to changes.
8129         * loader.c (method_from_memberref): Don't use a
8130         MonoGenericContainer while parsing a memberref signature.
8131         (method_from_methodspec): Remove dead-store of the 'container'
8132         variable.  It's overwritten before use.
8133
8134         * metadata.c (mono_type_create_from_typespec_full): Make debugging
8135         checks tighter.
8136         (mono_metadata_parse_generic_param): Likewise.
8137         * loader.c (find_method_in_class): Does not need a
8138         MonoGenericContainer.  Use 'mono_method_signature' rather than
8139         'mono_method_signature_full'.
8140         (find_method, mono_get_method_constrained, method_from_memberref):
8141         Update to changes.
8142
8143         * metadata.c (mono_type_create_from_typespec_full): Ensure that
8144         owner-less generic-parameters are never evicted from the typespec
8145         cache.
8146
8147         * loader.c (method_from_memberref): Don't use the current context
8148         when parsing signatures.
8149         (method_from_methodspec, mono_get_method_from_token): Update to changes.
8150
8151         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
8152         side-effects in g_assert.
8153         * loader.c (mono_get_method_from_token): Resolve klass earlier so
8154         that we don't potentially lose information.
8155
8156 2005-11-26  Dick Porter  <dick@ximian.com>
8157
8158         * icall.c:
8159         * threads.c: icalls to implement basic (ie, not named)
8160         System.Threading.Semaphore.
8161
8162 2005-11-24  Dick Porter  <dick@ximian.com>
8163
8164         * process.c
8165         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
8166         Use GetProcessId() if it's available.
8167
8168 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
8169
8170         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
8171
8172 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8173             Ankit Jain  <jankit@novell.com>
8174
8175         * loader.c (mono_get_method_from_token): Initialize 'method' field
8176         of all generic parameters before parsing the signature.  Remove
8177         code that "fixed"-up MVAR references.
8178
8179 2005-11-23  Ankit Jain  <jankit@novell.com>
8180
8181         * metadata.c (mono_metadata_has_generic_params):
8182         (mono_metadata_load_generic_param_constraints):
8183         (mono_metadata_load_generic_params): Move duplicate code ...
8184         (mono_metadata_get_generic_param_row): ... here. Returns the
8185         first row-id in GenericParam table for a given owner (token).
8186         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
8187         prototype.
8188
8189 2005-11-23  Raja R Harinath  <rharinath@novell.com>
8190             Ankit Jain  <jankit@novell.com>
8191
8192         * metadata.c (mono_metadata_class_equal): Pass signature_only when
8193         comparing VARs too.
8194         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
8195         type->data.generic_param only if the type is an MVAR.
8196         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
8197         leak owner-less VARs and MVARs into managed space.
8198
8199 2005-11-21  Martin Baulig  <martin@ximian.com>
8200
8201         * class-internals.h
8202         (MonoMethod): Moved the `generic_container' here from
8203         `MonoMethodNormal' since we now also need it for
8204         `MonoMethodPInvoke';
8205         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
8206         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
8207         an union containing both `MonoMethodNormal' and
8208         `MonoMethodPInvoke'.
8209
8210         * loader.c
8211         (mono_get_method_from_token): Allow implementing generic methods
8212         as interncalls.
8213
8214         * threads.c
8215         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
8216         icall.
8217
8218 2005-11-17  Dick Porter  <dick@ximian.com>
8219
8220         * icall.c: 
8221         * process.h: 
8222         * process.c: Split the Process Start_internal icall into
8223         ShellExecuteEx_internal and CreateProcess_internal, which are
8224         called depending on whether UseShellExecute is true.  Fixes bug
8225         76670.
8226
8227         * appdomain.c (MONO_CORLIB_VERSION): Incremented
8228
8229 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
8232         'msize' parameters, use the information in 'mspec' instead.
8233         (emit_object_to_ptr_conv): Ditto.
8234
8235         * marshal.c (emit_struct_conv): Handle explicit layout structs with
8236         fields out of order. Fixes #76733.
8237
8238 2005-11-17  Ankit Jain  <jankit@novell.com>
8239
8240         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
8241
8242 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
8243
8244         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
8245           bug #76575.
8246
8247 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
8250         for types with non-auto layout. Fixes #76717.
8251
8252 2005-11-16  Ankit Jain  <jankit@novell.com>
8253
8254         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
8255         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
8256         if generic_context is null.
8257           (mono_metadata_generic_param_equal): param->owner can be null.
8258           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
8259         null.
8260
8261 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
8262
8263         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
8264         the correct value.
8265
8266 2005-11-15  Martin Baulig  <martin@ximian.com>
8267
8268         * object.c (set_value): Use mono_class_from_mono_type() instead of
8269         the hack for generic instances; fixes #76136.
8270
8271 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
8272
8273         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
8274         fields.
8275
8276         * image.c (load_metadata_ptrs): Initialize the new fields.
8277
8278         * reflection.c (create_dynamic_mono_image): Ditto.
8279
8280         * reflection.c (build_compressed_metadata): Use the new fields.
8281
8282         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
8283         icall.
8284
8285         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
8286         icall.
8287         
8288 2005-11-15  Ankit Jain  <jankit@novell.com>
8289             Raja R Harinath  <harinath@gmail.com>
8290
8291         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
8292         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
8293         new per-generic_container cache if the cached MonoType's context matches
8294         the current context.
8295           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
8296         to the expected context.
8297           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
8298
8299 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8300
8301         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
8302         we changed the signature of an icall.
8303         * icall.c: Modify to mono_double_ParseImpl return true/false 
8304         depending on the success, instead of throwing the exception. This will
8305         help us in Double.TryParse methods.
8306         
8307 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * marshal.c (emit_marshal_object): Throw an exception when
8310         marshalling 'object' instead of crashing. Fixes #76696.
8311
8312 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * class-internals.h: Add prototype for mono_type_get_full_name ().
8315
8316 2005-11-11  Dick Porter  <dick@ximian.com>
8317
8318         * threads.c (mono_thread_manage): Make sure the main thread has
8319         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
8320
8321 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
8322
8323         * loader.c (mono_loader_set_error_type_load): Log a warning to the
8324         console about the missing type.
8325         (mono_loader_set_error_method_load): Ditto.
8326
8327 2005-11-09  Miguel de Icaza  <miguel@novell.com>
8328
8329         * mono-config.c (mono_get_config_dir): Set the system defaults if
8330         none is specified.
8331
8332         * assembly.c (mono_set_dirs): New API entry point to set the
8333         assembly and the config directory in one call
8334
8335 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
8336
8337         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
8338         the ftnptr was created from a delegate in a domain other than the
8339         current domain. Fixes #75377.
8340
8341         * exception.h exception.c: Add mono_get_exception_not_supported ().
8342
8343 2005-11-08  Martin Baulig  <martin@ximian.com>
8344
8345         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
8346
8347 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
8348
8349         * security-manager.h: Added definitions to deal with strongname key 
8350         pairs bigger (and smaller) than 1024 bits.
8351         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
8352         adjust wrt the public key length being used.
8353
8354 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
8355
8356         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
8357           Windows build (r51396-51397).
8358
8359 2005-11-03  Martin Baulig  <martin@ximian.com>
8360
8361         * class.c (mono_class_setup_vtable_general): Also add generic
8362         methods to the vtable; fixes #76581.
8363
8364 2005-11-01  Miguel de Icaza  <miguel@novell.com>
8365
8366         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
8367         sure that we lookup GetString method from the System.Text.Encoding
8368         class, not the derived class or we get an empty method.
8369
8370         Fixed class #76612.
8371
8372 2005-10-25  Miguel de Icaza  <miguel@novell.com>
8373
8374         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
8375         if it has been previously set (embedders). 
8376
8377         Make mono_set_rootdir available also on Unix.
8378
8379 005-10-24  Robert Jordan  <robertj@gmx.net>
8380
8381         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
8382
8383 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
8384
8385         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
8386         only calls which are made to native code use this flag.
8387
8388         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
8389
8390 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
8391
8392         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
8393         Add support for FieldBuilders.
8394
8395 2005-10-29  Martin Baulig  <martin@ximian.com>
8396
8397         * mono-debug.c
8398         (mono_debug_using_mono_debugger): New public method; returns
8399         whether we're running inside the debugger.
8400
8401 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
8402
8403         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
8404         for Method/Constructor/FieldBuilders.
8405
8406 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
8407
8408         * reflection.c (module_add_cattrs): Save custom attributes for global methods
8409         and fields as well.
8410
8411 2005-10-26  Martin Baulig  <martin@ximian.com>
8412
8413         * mono-debug-debugger.c
8414         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
8415
8416 2005-10-24  Raja R Harinath  <harinath@gmail.com>
8417
8418         * icall.c (base64_to_byte_array): Don't pass an out-of-range
8419         integer to isspace.
8420
8421 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
8422
8423         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
8424         when passing valuetypes byref. Fixes #76502.
8425
8426 2005-10-19  Jackson Harper  <jackson@ximian.com>
8427
8428         * profiler.c: Don't put a . in front of types that are not in a
8429         namespace.
8430
8431 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
8432
8433         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
8434
8435 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
8436
8437         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
8438         #76436.
8439         (mono_marshal_get_ldflda_wrapper): Fix a warning.
8440
8441 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8442
8443         * assembly.c metadata-internals.h icall.c: Define an additional
8444         parameter for mono_assembly_name_parse_full, so we can avoid creating
8445         S.R.AssemblyName.Version when no version info wasn't passed.
8446         
8447 2005-10-09  Miguel de Icaza  <miguel@novell.com>
8448
8449         * class.c (mono_type_get_full_name): Reimplement method that was
8450         removed. 
8451
8452         * image.c: Some docs
8453
8454 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * profiler.c (output_newobj_profile): Fix printing of Total memory
8457         on x86.
8458
8459 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
8460
8461         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
8462
8463 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
8464
8465         * threads.c: remove debug output.
8466
8467 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
8468
8469         * threads.c (mono_thread_manage): Fix crashes if more than 64
8470         threads need to be aborted. Hopefully fixes #75899.
8471
8472         * assembly.c (mono_stringify_assembly_name): New helper function.
8473
8474         * class.c: Use mono_stringify_assembly_name instead of the similar
8475         static function.
8476
8477         * assembly.h assembly.c: Add support for calling a postload search 
8478         hook if an assembly cannot be loaded.
8479
8480         * appdomain.c: Register new search hooks which call the AssemblyResolve
8481         events in AppDomain. Fixes #75231
8482
8483 2005-10-07  Martin Baulig  <martin@ximian.com>
8484
8485         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
8486         methods without debug info.
8487
8488 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
8489
8490         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
8491         wrappers.
8492
8493 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8494
8495         * file-io.c: now that we return symlinks, use lstat and, when the file
8496         is a symbolic link, stat, to get the file attributes. Also avoid the
8497         conversion to/from utf16/external.
8498
8499 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * class.c (mono_class_layout_fields): Compute klass->has_references
8502         correctly if an embedded valuetype is not yet initialized. Fixes
8503         #76331.
8504
8505 2005-10-04  Martin Baulig  <martin@ximian.com>
8506
8507         * metadata.c
8508         (mono_metadata_load_generic_param_constraints): New public
8509         function; splitted the constraints loading out from
8510         mono_metadata_load_generic_params().
8511
8512         * class.c (mono_class_create_from_typedef): Call
8513         mono_metadata_load_generic_param_constraints() after setting up
8514         the type and creating our parent; fixes #75329.
8515
8516 2005-10-04  Martin Baulig  <martin@ximian.com>
8517
8518         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
8519         non-dynamic parent classes.
8520
8521 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
8522
8523         * file-io.c : win32 build fix (ETXTBSY seems not found).
8524
8525 2005-10-04  Martin Baulig  <martin@ximian.com>
8526
8527         * reflection.c
8528         (mono_image_get_methodspec_token): Make the cache actually work;
8529         fixes #75974.
8530
8531 2005-10-04  Martin Baulig  <martin@ximian.com>
8532
8533         * class.c (mono_class_name_from_token): Removed the unneccessary
8534         `MonoGenericContext *' argument.
8535
8536 2005-10-04  Martin Baulig  <martin@ximian.com>
8537
8538         * loader.c
8539         (method_from_methodspec): Make the caching work again; fixes the
8540         performance regression from #76262.
8541
8542 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8543
8544         * file-io.c:
8545         * file-io.h:
8546         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
8547         GetFileSystemEntries that performs the same work but without going
8548         into io-layer, locking, etc.
8549
8550 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
8553         ThreadState_Stopped as well. Fixes #76047.
8554
8555 2005-09-29  Martin Baulig  <martin@ximian.com>
8556
8557         * class.c
8558         (inflate_generic_context): If the new context has a `gmethod', set
8559         its `container' that that gmethod's `container'.
8560
8561         * metadata.c
8562         (mono_metadata_parse_generic_param): Simplify things;
8563         `generic_container = generic_context->container;' is just fine.
8564
8565         * loader.c (method_from_methodspec): Code cleanups.
8566
8567 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
8568
8569         * decimal.c: fix warning (and let gcc generate correct
8570         code on ARM with optimizations).
8571
8572 2005-09-28  Martin Baulig  <martin@ximian.com>
8573
8574         * loader.c
8575         (method_from_memberref): Added `MonoGenericContext *class_context'
8576         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
8577         (method_from_methodspec): If we're a memberref, use the enclosing
8578         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
8579
8580 2005-09-28  Martin Baulig  <martin@ximian.com>
8581
8582         * object.c (mono_runtime_invoke_array): Added support for
8583         MONO_TYPE_GENERICINST; fixes #75917.
8584
8585 2005-09-27  Martin Baulig  <martin@ximian.com>
8586
8587         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
8588         `k->byval_arg.type' to determine the actual type.
8589
8590         * loader.c (method_from_methodspec): Removed some hacks.
8591
8592 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
8593
8594         * class-internals.h (mono_field_is_deleted): Do the test for
8595         rtspecialname before we check the actual name of the field. This
8596         prevents us from dereferencing a pointer into the string table,
8597         saving us from accessing a few pages
8598
8599         * *.c: Replace the use of {Enter,Leave}CriticalSection with
8600         macros. This will allow a deadlock debugger to easily be plugged
8601         in.
8602
8603 2005-09-27  Martin Baulig  <martin@ximian.com>
8604
8605         * loader.c (method_from_methodspec): Create a "signature"
8606         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
8607
8608 2005-09-27  Martin Baulig  <martin@ximian.com>
8609
8610         * class.c
8611         (inflate_generic_class): Correctly set the new context's
8612         container.
8613
8614         * loader.c
8615         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
8616         instead of a `MonoGenericContext *'.
8617         (mono_method_signature_full): Take a `MonoGenericContainer *'
8618         instead of a `MonoGenericContext *'.
8619
8620         * metadata.c
8621         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
8622         instead of a `MonoGenericContext *'.
8623         (mono_metadata_parse_method_signature_full): Likewise.
8624
8625 2005-09-26  Martin Baulig  <martin@ximian.com>
8626
8627         * class.c
8628         (mono_class_from_generic_parameter): Set `klass->generic_container'
8629         (mono_class_from_generic_parameter): Likewise.
8630         (mono_bounded_array_class_get): We inherit the generic container
8631         from the element class.
8632
8633         * loader.c
8634         (find_method, find_method_in_class): Take a `MonoGenericContext *'
8635         argument rather than computing it here.
8636         (method_from_memberref): Correctly set the generic context before
8637         parsing the signature.  Fixes #75681.
8638
8639 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
8640
8641         * object.c (mono_class_has_special_static_fields): Fix warnings.
8642
8643 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8644
8645         * assembly.c: Add parse_public_key function, to
8646         par the public keys. Also added mono_assembly_name_parse_full,
8647         to define it the parsed key should be freed or not.
8648         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
8649         to parse a long format assembly name.
8650         * metadata-internals.h: Keep mono_assembly_name_parse_full as
8651         private, since calling it to preserve the key requires
8652         freeing it manually.
8653         
8654 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
8655
8656         * locales.c : removed HAVE_ICU part.
8657
8658 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
8659
8660         * object.c (mono_class_create_runtime_vtable): Avoid calling 
8661         field_is_special_static if the klass has no special static fields.
8662
8663         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
8664         (MonoCachedClassInfo): Likewise.
8665
8666         * object.c (mono_class_has_special_static_fields): New helper function.
8667
8668 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
8669
8670         * class.c (mono_class_create_from_typedef): Don't call 
8671         interfaces_from_typedef_full for enums.
8672         (mono_class_create_from_typedef): Compute the base types of enums directly
8673         without calling mono_class_setup_fields ().
8674         (mono_class_find_enum_basetype): New helper function.
8675
8676         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
8677         one place inside the string heap.
8678         
8679 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
8680
8681         * class.c: locking fixes, code cleanups, some docs added.
8682         Allocate some data structures in the image mempool.
8683
8684 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
8685
8686         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
8687         the example code.
8688         
8689 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
8690
8691         * class-internals.h, class.c, reflection.c: reduce memory taken by
8692         MonoClass.
8693
8694 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
8695
8696         * metadata.c, metadata.h, loader.h: documentation updates, code and
8697         API cleanups.
8698
8699 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
8702         the example code.
8703
8704         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
8705         page faults caused by the runtime while reading metadata.
8706
8707 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8708
8709         * socket-io.c: the field names were changed 3 months ago and no one
8710         realized until bug #76077 got filed!
8711
8712 2005-09-20  Martin Baulig  <martin@ximian.com>
8713
8714         * icall.c (assembly_icalls): Removed some unused debugger icalls.
8715
8716 2005-09-20  Martin Baulig  <martin@ximian.com>
8717
8718         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
8719         write the rank into the class entry.
8720
8721 2005-09-20  Martin Baulig  <martin@ximian.com>
8722
8723         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
8724
8725 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
8726
8727         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8728
8729         * icall.c (custom_attrs_defined_internal): New icall.
8730
8731         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
8732         function.
8733         (mono_custom_attrs_construct_by_type): New helper function.
8734
8735 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
8736
8737         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
8738         terminate the resulting string. Fixes #76123.
8739
8740 2005-09-16  Martin Baulig  <martin@ximian.com>
8741
8742         * mono-debug.c
8743         (mono_debug_add_method): Ignore inflated methods for the moment.
8744
8745 2005-09-14  Martin Baulig  <martin@ximian.com>
8746
8747         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
8748
8749 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
8752         return a success/failure indication.
8753         (mono_metadata_interfaces_from_typedef_full): Ditto.
8754         (get_constraints): Ditto.
8755
8756 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * marshal.c (emit_marshal_array): Fix handling of null arrays.
8759         
8760         * marshal.c (emit_marshal_array): Add support for returning string
8761         arrays from delegates. Fixes #76063.
8762
8763         * marshal.c: Use the emit_ldloc/stloc macros where possible.
8764
8765 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
8766
8767         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
8768         icall.
8769
8770 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * reflection.c icall.c: Fix after mono_get_exception_type_load
8773         signature change.
8774
8775         * assembly.c (mono_assembly_get_assemblyref): New helper function.
8776         (mono_assembly_load_reference): Use the new helper.
8777
8778         * class-internals.h (MonoLoaderError): New structure containing 
8779         information about type loading errors.
8780
8781         * class-internals.h loader.c: Add APIs to store per-thread loader
8782         error information.
8783
8784         * loader.c class.c: Set the loader error if needed.
8785
8786         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
8787
8788 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
8789
8790         * decimal.c: fixed to handle the broken ARM fp format.
8791
8792 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
8793
8794         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
8795         broken.
8796
8797 2005-09-06  Martin Baulig  <martin@ximian.com>
8798
8799         * domain.c (supported_runtimes): Added v2.0.50727.
8800
8801 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
8802
8803         * culture-info.h: reduce the size of some structures.
8804
8805 2005-09-05  Martin Baulig  <martin@ximian.com>
8806
8807         Reflect latest API changes in the August CTP.
8808
8809         * icall.c
8810         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
8811         ("MonoType.HasGenericArguments"): Removed.
8812         ("MonoMethod.BindGenericParameters"): Renamed to
8813         "MakeGenericMethod".
8814         ("MethodBuilder.BindGenericParameters"): Renamed to
8815         "MakeGenericMethod".    
8816
8817 2005-09-05  Martin Baulig  <martin@ximian.com>
8818
8819         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
8820
8821 2005-09-05  Martin Baulig  <martin@ximian.com>
8822
8823         Applying a patch from Michal Moskal <malekith@nemerle.org>.
8824
8825         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
8826         generic_container is non-NULL.
8827
8828 2005-09-05  Martin Baulig  <martin@ximian.com>
8829
8830         Applying a patch from Michal Moskal <malekith@nemerle.org>.
8831
8832         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
8833
8834 2005-08-29  Michal Moskal  <malekith@nemerle.org>
8835
8836         * reflection.c (encode_locals,
8837         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
8838         for large generic types.
8839
8840 2005-09-05  Martin Baulig  <martin@ximian.com>
8841
8842         Applying a patch from Michal Moskal <malekith@nemerle.org>.
8843
8844         * class.c (mono_dup_array_type): New public method.
8845         (mono_metadata_signature_deep_dup): New public method.
8846         (dup_type): Correctly duplicate array and function types.
8847
8848 2005-09-05  Martin Baulig  <martin@ximian.com>
8849
8850         Applying a patch from Michal Moskal <malekith@nemerle.org>.
8851
8852         * reflection.c (get_default_param_value_blobs): Handle generic types
8853         and generic methods.
8854
8855 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
8856
8857         * class.c: Fixed error reporting (method/class were inversed) for 
8858         inheritance demands.
8859         * security-manager.c|h: Added the AppDomain when calling the managed
8860         System.Security.SecurityManager.InheritanceDemand method.
8861
8862 2005-09-01  Raja R Harinath  <rharinath@novell.com>
8863
8864         * reflection.c (encode_marshal_blob): 'marshaltype' and
8865         'marshaltyperef' are alternate sources for the custom marshaler
8866         name.
8867
8868 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
8869
8870         * class.c: fix creation of array classes with rank == 1
8871         (patch by Ankit Jain <jankit@novell.com>).
8872
8873 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
8874
8875         * object.c: fix check for creating the bound data for arrays vs
8876         szarrays.
8877
8878 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8879
8880         * object.c: configuration file name is now based on the executable name,
8881         not the image name. Fixes bug #75931.
8882
8883 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
8884
8885         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
8886         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
8887
8888 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
8889
8890         * rand.c: Use wincrypt.h instead of WinCrypt.h.
8891
8892 2005-08-24  Ankit Jain  <jankit@novell.com>
8893             Raja R Harinath  <rharinath@novell.com>
8894
8895         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
8896           called by it recursively.
8897           (mono_class_init): Remove special case in pending_init handling, since it's
8898           superseded by the fix to mono_class_from_typeref.
8899
8900 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
8901
8902         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
8903         BROKEN_THREAD_START stuff.
8904
8905 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
8906
8907         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
8908         trampoline.
8909
8910         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
8911         
8912         * object.c (mono_delegate_ctor): Replace the original function address with
8913         a delegate trampoline.
8914
8915 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
8916
8917         * icall.c: add boolean argument to base64_to_byte_array and 
8918         InternalFromBase64String to control whether a whitespace-only string
8919         is allowed (or should casue a FormatException to be thrown). We need
8920         this as the behavior has changed between MS.NET 1.x and 2.0, and we
8921         to match the MS behaviour in both profiles.
8922         * appdomain.c: Bump corlib version.
8923
8924 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
8925
8926         This patch implements a big portion of publisher policy
8927         support, used to bind assembly versions and redirect
8928         one assembly from version A to version B.
8929
8930         * assembly.c:
8931         New GSList loaded_assembly_bindings, for storing the cached
8932         assembly bindings.
8933         (assembly_binding_maps_name): New static function for checking if a 
8934         assembly binding information maps an assembly name.
8935         (mono_assembly_binding_info_free): New function for freeing
8936         assembly binding information resources.
8937         (get_publisher_policy_info): New static function for retrieving 
8938         assembly binding information from a MonoImage.
8939         (compare_versions): New static function for comparing an assembly
8940         binding information data and the version of an assembly name.
8941         (check_policy_versions): New static function for checking if an
8942         assembly binding info mapping an assembly name is valid for it.
8943         (mono_assembly_load_publisher_policy): New static function for
8944         loading the 'policy.major.minor.MyAssembly' image for an assembly
8945         with an assembly name 'aname'.
8946         (mono_assembly_bind_version): New static function for updating
8947         assembly redirection.
8948         (mono_assembly_apply_binding): New static function for applying
8949         assembly binding.
8950         (search_binding_loaded): New static function for searching 
8951         loaded assembly binding infos in the cache domain.
8952         (mono_assembly_load_full): Don't apply assembly binding for
8953         reflection only assemblies.
8954
8955         * metadata-internals.h: Add MonoAssemblyBindingInfo,
8956         which contains information about assembly binding. Also
8957         declare signature for mono_config_parse_publisher_policy ()
8958         function, used to retrieve pub policy info.
8959         
8960         * mono-config.c:
8961         (publisher_policy_start): New static function used to parse publisher 
8962         policy config files.
8963         (publisher_policy_parser): New static MonoParseHandler containing 
8964         the functions used when parsing config files.
8965         (mono_config_parse_publisher_policy): New function for parsing
8966         publisher policy files.
8967         
8968 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
8969
8970         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
8971
8972         * marshal.c (mono_delegate_free_ftnptr): Ditto.
8973
8974         * object.c (mono_get_addr_from_ftnptr): New helper function.
8975
8976         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
8977
8978         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
8979
8980 2005-08-19  Dick Porter  <dick@ximian.com>
8981
8982         * threads.c, threads.h, appdomain.c, appdomain.h,
8983         profiler-private.h, monitor.c, object.c, object-internals.h,
8984         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
8985         store the thread ID, so it can hold a 64 bit value if needed.
8986
8987 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
8988
8989         * reflection.c (mono_reflection_create_dynamic_method): Store the
8990         handle class into the method references as well so ldtoken works in
8991         dynamic methods.
8992
8993         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
8994         types.
8995
8996 2005-08-19  Ankit Jain <jankit@novell.com>
8997
8998         Fix #75847.
8999         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
9000           here rather than using the method signature of a arbitrary function
9001           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
9002           two arguments.
9003           Hack done with Harinath.
9004
9005 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9006
9007         * threadpool.c: disable printing stack traces when we get a exception
9008         in a threadpool thread. I need to do more testing to figure out which
9009         cases actually print this. Fixes bug #75828.
9010
9011 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9012
9013         * icall.c: there might be ignored whitespace after the last '='. This
9014         fixes length computation and bug #75840.
9015
9016 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
9017
9018         * assembly.c (mono_assembly_load_full): Consider .exe extension as
9019         well. Fixes #75809.
9020
9021         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
9022         #75784.
9023         
9024         * reflection.c (create_custom_attr_data): Ditto.
9025
9026 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
9027
9028         * locales.c, culture-info.h : removed RegionLCIDMap.
9029         * culture-info-tables.h : regenerated.
9030
9031 2005-08-16  Martin Baulig  <martin@ximian.com>
9032
9033         * class.c (mono_type_get_name_recurse): Small fix.
9034
9035 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
9036
9037         * locales.c : indentation fixie.
9038
9039 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
9040
9041         * object-internals.h,
9042           locales.h,
9043           locales.c,
9044           culture-info.h,
9045           icall.c : added RegionInfo table support.
9046         * culture-info-table.h : regenerated for region support.
9047
9048 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
9049
9050         * reflection.c (resolve_object): handle all kinds of MonoMethod
9051         including generic ones
9052
9053 2005-08-12  Ankit Jain <jankit@novell.com>
9054
9055         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
9056           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
9057
9058 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
9059
9060         * process.c: Don't close a thread handle when it's NULL. This is a
9061         workaround for bug #75733.
9062
9063 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
9064
9065         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
9066
9067 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
9068
9069         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
9070
9071 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9072
9073         * threadpool.c: if a work item in the thread pool has a callback that
9074         catches a exception, don't propagate it after invoking the callback.
9075         Fixes bug #75336.
9076
9077 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
9078
9079         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
9080
9081         * class-internals.h (MonoCachedClassInfo): Add some new fields.
9082
9083         * class.c (mono_class_init): Load field info lazily in the AOT case.    
9084
9085         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
9086
9087 2005-08-03  Ankit Jain  <jankit@novell.com>
9088
9089         Fix #75683.
9090         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
9091           PInvoke calling convention is 0.
9092
9093 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
9094
9095         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
9096         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
9097
9098 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
9099
9100         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
9101         to handle threads not started by the GC (patch by Michael Meeks
9102         <michael.meeks@novell.com>).
9103
9104 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
9105
9106         * reflection.c: Make buffer used in emitting types larger for some
9107         big generic types (patch by Michal Moskal).
9108
9109 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
9110
9111         * mono-debug.c: Fix some (not all) alignment problems.
9112
9113 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9114
9115         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
9116         Invoke mono_image_load_from_data_full passing the refonly
9117         parameter.
9118
9119         * assembly.c
9120         (mono_assembly_open_from_bundle): Add the refonly argument, 
9121         in order to pass it to other methods it calls to.
9122         (do_mono_assembly_open): Add the refonly argument, in order 
9123         to pass it to other methods it calls to.
9124         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
9125         the refonly parameter to it.
9126
9127         * image.c: Add loaded_images_refonly_hash and
9128         loaded_images_refonly_guid_hash to cache the reflection
9129         only loaded images.
9130         (mono_images_init): Initialize the hash tables used for
9131         caching the reflection only images.
9132         (load_modules): Invoke mono_image_open_full passing the refonly
9133         parameter to load the modules the correct way.
9134         (build_guid_table): Add the refonly argument, to re-build the 
9135         correct hash table.
9136         (do_mono_image_open): Added the refonly argument, in order to
9137         define it for the loaded image.
9138         (mono_image_loaded_full): New function, which receives an
9139         additional parameter to look for the image in the refonly or
9140         non-refonly section.
9141         (mono_image_loaded): Updated, using mono_image_loaded_full.
9142         (mono_image_loaded_by_guid_full): The same case that happens
9143         with mono_image_loaded_full.
9144         (mono_image_loaded_by_guid): Likewise.
9145         (register_image): Use the ref_only variable inside MonoImage
9146         to decide in which hash table store the current image.
9147         (mono_image_open_from_data_full): Rename
9148         mono_image_open_from_data to mono_image_open_from_data_full,
9149         adding the refonly argument, to define the ref_only variable 
9150         inside MonoImage.
9151         (mono_image_open_from_data): Return 
9152         mono_image_open_from_data_full.
9153         (mono_image_open_full): Rename mono_image_open to
9154         mono_image_open_full, receiving the new refonly argument,
9155         to pass it to inner methods.
9156         (mono_pe_file_open): Update this function, to open
9157         a MonoImage as a non-refonly image.
9158         (mono_image_close): Use the refonly variable inside
9159         MonoImage to remove the image from the correct caches.
9160
9161         * image.h: Add the signatures of mono_image_open_full,
9162         mono_image_open_from_data_full, mono_image_loaded_full,
9163         mono_image_loaded_by_guid_full.
9164
9165         * metadata-internals.h: Add the ref_only field to 
9166         MonoImage.
9167         
9168 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9169
9170         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
9171         Fix the last behavior, which used to load the assemblies and
9172         extract MonoReflectionAssemblyName information, instead of
9173         extract it from the metadata tables. Needed for Reflection
9174         Only assemblies.
9175         
9176 2005-07-29  Martin Baulig  <martin@ximian.com>
9177
9178         * mono-debug-debugger.c
9179         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
9180         not initialized.
9181
9182         * mono-debug.c
9183         (mono_debug_address_from_il_offset): Check whether we have
9184         debugging support before attempting to take the lock.
9185         (mono_debug_source_location_from_address): Likewise.
9186         (mono_debug_source_location_from_il_offset): Likewise.
9187         (mono_debug_il_offset_from_address): Likewise.
9188         (mono_debug_address_from_il_offset): Likewise.
9189
9190 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
9191
9192         * class.c (mono_class_from_name_case): Add support for dynamic images.
9193         Fixes #75650.
9194
9195         * object.c (mono_class_compute_gc_descriptor): Add a workaround
9196         for #75479.
9197
9198 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9199         
9200         * reflection.c (mono_method_get_object): Fix warning.
9201
9202 2005-07-28  Martin Baulig  <martin@ximian.com>
9203
9204         * mono-debug.c
9205         (mono_debug_add_wrapper): Also write the wrapper type.
9206
9207 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
9208
9209         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
9210         
9211         * class.c (mono_class_init): Avoid reading nested classes if the AOT
9212         data indicates the class has none.
9213
9214 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
9215
9216         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
9217         loader lock with the debugger lock. Prevents deadlocks for beagle.
9218
9219         Beagle can now run on an smp box for a weekend without any
9220         issues. Woohoo!
9221
9222 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
9223
9224         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
9225         in a module. Fixes #75629.
9226
9227 2005-07-26  Martin Baulig  <martin@ximian.com>
9228
9229         * mono-debug.c (mono_debug_add_wrapper): New static method.
9230         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
9231         interncall or a wrapper.
9232
9233         * mono-debug.h (MonoDebugWrapperData): New public typedef.
9234         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
9235         (MONO_DEBUGGER_VERSION): Bump to 51.
9236
9237         * mono-debug-debugger.c
9238         (mono_debugger_add_type): Removed this empty function.
9239         (mono_debugger_add_method): Likewise.
9240
9241 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
9242
9243         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
9244         before accessing method->slot.
9245
9246 2005-07-21  Jb Evain  <jbevain@gmail.com>
9247
9248         * reflection.c (method_encode_clauses/class): Handle filters clauses.
9249         Fixes #75010.
9250
9251 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
9252
9253         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
9254         #75587.
9255
9256 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
9257
9258         * image.h image.c: Add mono_image_get_guid () API function.
9259
9260 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
9261
9262         There were issues when multiple threads tried to load
9263         assemblies. A deadlock was created between assemblies_mutex and
9264         mono_domain_assemblies_lock. This fixes the issue by making the
9265         assembly ref counting be lock free. See bug 75586.
9266         
9267         * image.c (mono_image_close): The add ref function here was using
9268         Interlocked operations while the unref was using a mutex and a
9269         --. I don't think this was ever a bug that would be exposed in a
9270         non-pendantic way (ie, by an embedder doing a ref on one thread
9271         and an unref on another), but for the sake of correctness, this is
9272         now Interlocked.
9273
9274         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
9275         (mono_assembly_load_reference): Call mono_assembly_addref rather
9276         than touching the refcount ourselves.
9277         (mono_assembly_close): Use InterlockedDecrement to unref the
9278         assembly. Don't acquire the lock unless it is actually needed.
9279
9280 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9281
9282         * class.c (mono_class_layout_fields): Fix calculation of has_references
9283         for generic types.
9284
9285 2005-07-12  Martin Baulig  <martin@ximian.com>
9286
9287         Applying a patch from Michal Moskal <malekith@nemerle.org>.
9288
9289         * metadata.c
9290         (mono_type_hash): Provide better hashing for generic instances.
9291         (mono_generic_inst_hash): Improve hashing.
9292         (mono_generic_class_hash): Likewise.
9293
9294         * reflection.c (mymono_metadata_type_hash): Improve hashing for
9295         generic instances.
9296
9297 2005-07-12  Martin Baulig  <martin@ximian.com>
9298
9299         * reflection.c (mono_reflection_create_runtime_class): Remove the
9300         hack for generic type definitions and non-`Run' assemblies.
9301         (mono_reflection_bind_generic_parameters): Also use
9302         `klass->wastypebuilder' to check for TypeBuilders.
9303
9304 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
9305
9306         * class.c (mono_class_layout_fields): Fix calculation of has_references
9307         for generic types.
9308
9309         * class.c (inflate_generic_class): Fix a leak.
9310         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
9311         for generic types.
9312
9313 2005-07-11  Martin Baulig  <martin@ximian.com>
9314
9315         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
9316         on error.
9317
9318 2005-07-11  Martin Baulig  <martin@ximian.com>
9319
9320         * loader.c (find_method): Also lookup in
9321         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
9322
9323 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9324
9325         * appdomain.c (mono_domain_unload): Don't free the error message
9326         before passing it to mono_get_exception_...
9327
9328         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
9329         
9330 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
9331
9332         * threads.c: try to better guess an available RT signal (bug #75387).
9333
9334 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9335
9336         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
9337         and CACHE_OBJECT.
9338
9339 2005-07-07  Martin Baulig  <martin@ximian.com>
9340
9341         * class.c (mono_type_get_name_full): Return NULL for
9342         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
9343         fixes #75408.
9344
9345 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
9346
9347         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
9348         exit the appdomain as well being aborted.
9349
9350         * threadpool.c: Create all threadpool threads inside the root appdomain, and
9351         change back to the root domain after calling managed code. This enables
9352         appdomains using threadpools to be unloaded.
9353
9354 2005-07-07  Martin Baulig  <martin@ximian.com>
9355
9356         * class-internals.h
9357         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
9358         into `MonoDynamicGenericClass' since we only need it for dynamic
9359         types.
9360
9361         * reflection.c (mono_class_bind_generic_parameters): We don't need
9362         to compute the `parent' here.
9363
9364 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
9365
9366         * culture-info-table.h : regenerated.
9367
9368 2005-07-06  Martin Baulig  <martin@ximian.com>
9369
9370         * icall.c
9371         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
9372
9373         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
9374
9375 2005-07-06  Martin Baulig  <martin@ximian.com>
9376
9377         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
9378         we're doing a signature-only comparision; fixes #74945.
9379
9380 2005-07-06  Martin Baulig  <martin@ximian.com>
9381
9382         * class-internals.h (MonoGenericClass): Moved some things out into
9383         a new `MonoInflatedGenericClass' type.  
9384         (MonoInflatedGenericClass): New type; the `klass' of a
9385         `MonoGenericClass' is now computed lazyly in
9386         mono_get_inflated_generic_class().      
9387
9388         * class.c (mono_get_inflated_generic_class): New public function.
9389         (mono_class_inflate_generic_method): Removed the unused
9390         `MonoClass *' argument.
9391         (setup_generic_vtable): Don't call mono_get_inflated_method() on
9392         all the methods.
9393         (mono_class_create_generic): Make this static and merge it with
9394         mono_class_create_generic_2(); we're now called automatically from
9395         mono_get_inflated_generic_class().
9396
9397         * loader.c (mono_method_signature): Call
9398         mono_get_inflated_method() here.
9399
9400 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
9401
9402         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
9403         type of fields with RVA.
9404
9405         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
9406         for this pseudo class.
9407         (my_mono_class_from_generic_parameter): Likewise.
9408         (mono_class_init): Allow interfaces to have cctors.
9409
9410 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
9411
9412         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
9413         lazily for AOT methods.
9414
9415 2005-07-05  Martin Baulig  <martin@ximian.com>
9416
9417         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
9418         returns FALSE for a successful match, not TRUE.
9419
9420 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
9421
9422         * loader.c (mono_method_get_index): Optimize this a bit.
9423
9424 2005-07-04  Martin Baulig  <martin@ximian.com>
9425
9426         * class.c
9427         (class_compute_field_layout): Move the check for generic type
9428         definitions into mono_class_layout_fields().  Fixes #74684.
9429         (mono_class_from_generic_parameter): Correctly compute
9430         `klass->parent'; fixes #75457.
9431
9432         * reflection.c (register_assembly, register_module): Make sure
9433         `domain->rejobject_hash' is already created.
9434
9435 2005-07-02  Martin Baulig  <martin@ximian.com>
9436
9437         * class-internals.h
9438         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
9439         `MonoDynamicGenericClass'.      
9440
9441 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
9442
9443         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
9444         returned by a field getter is null, since null is a valid value.
9445
9446 2005-07-01  Martin Baulig  <martin@ximian.com>
9447
9448         * reflection.c (mono_reflection_generic_class_initialize): Update
9449         the `dgclass->fields [i].parent' to the correct class.
9450         (mono_image_get_fieldref_token): Use the declaring type, not the
9451         reflected type.
9452
9453 2005-07-01  Martin Baulig  <martin@ximian.com>
9454
9455         * loader.c (find_method): Also look in the interfaces; fixes #75429.
9456
9457 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
9458
9459         * threads.c (thread_cleanup): assert that thread != NULL
9460         (wait_for_tids_or_state_change): We were using the wrong variable
9461         when accessing wait->threads. `i' was always out of the bounds of
9462         the array.
9463
9464 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9465
9466         * loader.c: map user32 and kernel32 to libMonoSupportW
9467
9468 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
9469
9470         * appdomain.c (unload_thread_main): Mark this as WINAPI.
9471
9472 2005-06-28  Martin Baulig  <martin@ximian.com>
9473
9474         * loader.c (method_from_methodspec): Fix #75334.
9475
9476 2005-06-28  Martin Baulig  <martin@ximian.com>
9477
9478         Fix #74953 - Arrays now implement the generic IList<T> interface
9479         on the 2.0 platform.
9480
9481         * class-internals.h (MonoDefaults): Added `generic_array_class'.
9482
9483         * reflection.c (mono_class_bind_generic_parameters): New public
9484         function; similar to mono_reflection_bind_generic_parameters(),
9485         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
9486
9487         * domain.c (mono_init_internal): Try to initialize.
9488         `mono_defaults.generic_array_class' here; this'll only succeed if
9489         we're using the 2.0 corlib.
9490
9491         * icall.c
9492         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
9493         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
9494         (mono_lookup_internal_call): Added support for nested classes.
9495
9496         * loader.c
9497         (mono_get_method_from_token): Set `result->signature->pinvoke' if
9498         we're an interncall and have generic arguments.
9499
9500         * class.c
9501         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
9502         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
9503         instance of System.Array.InternalArray<T> for arrays, so they
9504         implement the generic IList<T> interface.
9505
9506 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
9507
9508         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
9509         (chastamar@yahoo.com). Fixes #75374.    
9510
9511 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
9512
9513         * culture-info-table.h: regenerated.
9514
9515 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9516
9517         * icall.c: handle spaces correctly for base64 strings.
9518
9519 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
9520
9521         * *.c: Kill some warnings.
9522
9523 2005-06-23  Duncan Mak  <duncan@novell.com>
9524
9525         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
9526         that this builds on Solaris 10 (x86).
9527
9528 2005-06-23  Martin Baulig  <martin@ximian.com>
9529
9530         * class.c
9531         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
9532         generic type definitions.
9533
9534 2005-06-23  Martin Baulig  <martin@ximian.com>
9535
9536         Fix #75331.
9537
9538         * metadata.c (mono_class_get_overrides): Renamed to
9539         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
9540         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
9541         pass it to mono_get_method_full().
9542
9543 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
9544
9545         * reflection.c (mono_reflection_create_runtime_class): take the
9546         mono_domain_lock in this method. Prevents deadlocks
9547
9548 2005-06-22  Martin Baulig  <martin@ximian.com>
9549
9550         * loader.c (method_from_methodspec): Fix #75330.
9551
9552 2005-06-22  Martin Baulig  <martin@ximian.com>
9553
9554         * reflection.c (type_get_qualified_name): Use
9555         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
9556         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
9557         argument; use it if we don't have an assembly name.
9558
9559 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
9560
9561         * object.c: In mono_message_init, set "copy out" flag for in
9562         parameters with the [Out] flag.
9563
9564 2005-06-21  Martin Baulig  <martin@ximian.com>
9565
9566         * class.c
9567         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
9568         and MONO_TYPE_PTR.
9569
9570 2005-06-21  Martin Baulig  <martin@ximian.com>
9571
9572         * class.c (mono_class_init): Don't initialize `class->fields' for
9573         generic instances since they're initialized again in
9574         compute_field_layout(). 
9575         (compute_field_layout): Set the field's `generic_info' here; fix
9576         #75320. 
9577
9578 2005-06-21  Martin Baulig  <martin@ximian.com>
9579
9580         * class-internals.h
9581         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
9582
9583         * metadata.c (mono_metadata_generic_method_equal): Also
9584         distinguish the `generic_class'; fixes #75334.
9585
9586 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9587
9588         * domain.c:
9589         * appdomain.c:
9590         * domain-internals.h:
9591         * reflection.c: 'domain_assemblies' field is now protected by its own
9592         lock. Don't call into managed code to run the AssemblyLoad event if we
9593         now there are no registered delegates for it.
9594
9595 2005-06-20  Martin Baulig  <martin@ximian.com>
9596
9597         * class.c (mono_class_is_assignable_from): Use a custom version of
9598         mono_class_has_parent() to make things work for generic instances;
9599         fix #75300.
9600
9601 2005-06-20  Martin Baulig  <martin@ximian.com>
9602
9603         * loader.c (method_from_methodspec): Apply a patch from
9604         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
9605
9606 2005-06-20  Martin Baulig  <martin@ximian.com>
9607
9608         * class.c (mono_class_init): Reverted Zoltan's last change; it
9609         breaks generics.
9610
9611 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
9612
9613         * threads.c (wait_for_tids_or_state_change): Add missing locking.
9614
9615 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9616
9617         * socket-io.c: fix the index in the socket array for writable/error
9618         sockets. Fixes bug #75306.
9619
9620 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
9621
9622         * class.c (mono_class_init): Allow interfaces to have static ctors.
9623
9624 2005-06-17  Martin Baulig  <martin@ximian.com>
9625
9626         * loader.c (method_from_methodspec): Use `context->container' when
9627         parsing the `gmethod->inst'.
9628
9629 2005-06-17  Martin Baulig  <martin@ximian.com>
9630
9631         * class.c (mono_type_get_name_recurse): Don't add the assembly
9632         name for type arguments.
9633
9634 2005-06-15  Martin Baulig  <martin@ximian.com>
9635
9636         * reflection.c (mono_image_get_inflated_method_token): Encode
9637         correct klass; fixes #75260.
9638
9639 2005-06-13 Michal Moskal <malekith@nemerle.org>
9640
9641         * icall.c: Make GetCorrespondingMethod/Constructor take
9642         MonoReflectionMethod method not MonoMethod. Removed
9643         MonoType.GetCorrespondingField, and make
9644         MonoGenericType.GetCorrespondingField take name not
9645         MonoClassField.
9646
9647 2005-06-13  Michal Moskal <malekith@nemerle.org>
9648
9649         * reflection.c (field_encode_signature, encode_locals):
9650          Make sizes of buffers for types larger (for big generic types).
9651          (create_generic_typespec,
9652          mono_reflection_sighelper_get_signature_local,
9653          mono_reflection_sighelper_get_signature_field):
9654          Add asserts for too small buffers.
9655
9656 2005-06-15  Martin Baulig  <martin@ximian.com>
9657
9658         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
9659         if our parent is not a dynamic type.
9660
9661 2005-06-15  Martin Baulig  <martin@ximian.com>
9662
9663         * class-internals.h (MonoTypeNameFormat): New enum.
9664
9665         * class.c
9666         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
9667         (mono_type_get_full_name): Removed.
9668         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
9669         argument instead of the boolean's.
9670
9671         * icall.c (ves_icall_System_MonoType_getFullName):
9672         Added `gboolean assembly_qualified'.    
9673
9674         * reflection.h
9675         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
9676
9677         * reflection.c (mono_reflection_parse_type): Parse the new type
9678         name format.
9679
9680 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9681
9682         * icall.c: no need to convert from utf16 to utf8 and then back again
9683         after the call to GetLogicalDrives.
9684
9685 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9686
9687         * icall.c: frombase64. Fix problems exposed by new tests.
9688
9689 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9690
9691         * icall.c: added internal calls for converting char [] and strings in
9692         base64 into byte [].
9693
9694 2005-06-10  Martin Baulig  <martin@ximian.com>
9695
9696         * class.c (mono_class_create_generic_2): Read the nested classes
9697         from the metadata rather than from `gklass->nested_classes' since
9698         `gklass' might not be initialized yet.
9699
9700 2005-06-09  Duncan Mak  <duncan@novell.com>
9701
9702         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
9703         all public headers. Fixes #74919.
9704
9705 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
9706
9707         * domain.c: The key for proxy_vtable_hash is now a pointer
9708         array. Added new GHashFunc and GCompareFunc functions for this.
9709
9710         * class.h: The list of interfaces in MonoRemoteClass is known in
9711         advance and can't grow (we create a new MonoRemoteClass if needed),
9712         so now the interface array can be allocated together with
9713         MonoRemoteClass.
9714         
9715         * object.c: Added a new method create_remote_class_key.
9716         Fixed mono_remote_class so it does not depend on
9717         mono_upgrade_remote_class.
9718         Removed extend_interface_array.
9719         Added new method clone_remote_class(), which makes a copy of a remote
9720         class and adds a new interface or class to it.
9721         mono_upgrade_remote_class() now creates a new remote class (or gets
9722         it from the cache) if an vtable upgrade is needed. In this way
9723         we make sure that other objects sharing the same remote class
9724         don't get the new vtable with unwanted interfaces.
9725         
9726         * object-internals.h:
9727         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
9728         
9729         * marshal.c: Track changes in mono_upgrade_remote_class().
9730
9731 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
9732         * icall.c: Add runtime methods for obtaining members of inflated
9733         class, which were created from supplied non-inflated members. It
9734         is used in internal Get{Method,Constructor,Field} methods in
9735         System.Type
9736
9737 2005-06-09  Martin Baulig  <martin@ximian.com>
9738
9739         * reflection.c
9740         (mono_reflection_bind_generic_method_parameters): Fix #75169.
9741
9742 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9743         * reflection.c (mono_image_basic_init): Define
9744         Version in MonoDynamicAssembly. 
9745         
9746 2005-06-08  Martin Baulig  <martin@ximian.com>
9747
9748         Fix #75136.
9749
9750         * loader.c
9751         (mono_method_signature_full): New public method; takes a
9752         `MonoGenericContext *'.
9753         (find_method): Use mono_method_signature_full() and pass the
9754         klass'es context to it.
9755
9756         * class.c (mono_class_is_inflated_method): Use
9757         mono_method_signature_full() and pass the context to it.
9758
9759 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
9760
9761         * object.c: add proper locking in mono_remote_class_vtable(),
9762         fixes possible memory corruption.
9763
9764 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
9765
9766         * marshal.c (mono_remoting_marshal_init): set
9767         initialized after initialization.
9768
9769 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
9770
9771         * locales.c : hush.
9772
9773 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
9774
9775         * object.c (extend_interface_array): fix really silly
9776         memory corrupting / comparison bug.
9777
9778 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9779
9780         * reflection.c: Functions added to support the creation
9781         of CustomAttributeData, which includes Attribute data
9782         used by ReflectionOnly methods.
9783
9784         * reflection.h:  mono_reflection_get_custom_attrs_data and
9785          mono_custom_attrs_data_construct added (functions exposed).
9786
9787          * icall.c: Added mono_reflection_get_custom_attrs_data
9788          as icall.
9789         
9790 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
9791
9792         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
9793         lupus's request.
9794
9795 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
9796
9797         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
9798
9799         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
9800         dynamic DllImportAttribute.
9801
9802         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
9803         dynamic DllImportAttribute.
9804
9805         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
9806         Fixes #75162.
9807
9808 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9809
9810         * threads.c: avoid segfault when an unstarted thread is aborted.
9811
9812 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
9813
9814         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
9815         Returns the name and version of the runtime for reporting.
9816
9817 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9818
9819         * appdomain.c: bump corlib version.
9820         * object-internals.h: new field in MonoReflectionAssembly.
9821
9822 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9823
9824         * object-internals.h: Carlos forgot to add this field.
9825
9826 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
9827
9828         * icall.c: Added create_version to create instances
9829         of Version of MonoReflectionAssemblyName. This change helps
9830         the AssemblyName tests to keep running fine.
9831         
9832 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
9833   
9834         * object.c (mono_method_return_message_restore): A somehow less
9835         intrusive fix for #75138.
9836
9837 2005-06-03  Raja R Harinath  <rharinath@novell.com>
9838
9839         * object.c (mono_method_return_message_restore): Fix computation
9840         of expected number of out args.
9841
9842 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
9843
9844         * reflection.c (mono_image_get_method_info): Fix the case when the
9845         charset is empty.
9846
9847 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
9848
9849         * object.c: Added missing null check in
9850           mono_method_return_message_restore.
9851
9852 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
9853
9854         * reflection.c (mono_image_get_method_info): Handle the case when
9855         dllentry is empty.
9856
9857 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
9858
9859         * object.c: When creating the vtable for a proxy, take into account
9860         all inherited interfaces, not only the ones registered in
9861         iclass->interfaces. This fixs bug #74996.
9862         Also, in mono_method_return_message_restore, verify that the array
9863         of out args has the expected lengh.
9864
9865 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9866
9867         * socket-io.c: update the timeout in Poll when the call is interrupte.
9868
9869 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9870
9871         * socket-io.c: support abort/suspend in Select_internal after last
9872         change.
9873
9874 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9875
9876         * threadpool.c: remove warning.
9877
9878 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9879
9880         * icall.c:
9881         * socket-io.[ch]: Select_internal uses poll() now when available, thus
9882         removing the 1024 limit from select(). Runtime part of the fix for
9883         bug #71203.
9884
9885 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9886
9887         * socket-io.c: when resolving the addresses for the same
9888         host returned by gethostname(), get the local IPs from the interface
9889         list. Loopback addresses are discarded if the are interfaces up with
9890         non-loopback ones. Fixes bug #63265.
9891
9892 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
9893
9894         * appdomain.c, verify.c, object-internals.h, reflection.c:
9895         bumped corlib number to 36, and added new extra_flags field
9896         to ReflectionMethodBuilder and friends.  Fixes #75060.
9897
9898 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
9899
9900         * gc.c: register a new weak link only if the object is non-null
9901         (fixes bug#75047).
9902
9903 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
9904
9905         * culture-info.h : short time pattern too.
9906
9907 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
9908
9909         * culture-info.h : expand long time pattern string length.
9910
9911 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
9912
9913         * culture-info-table.h : update (more French date format; #72788).
9914
9915 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
9916
9917         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
9918         the method is static. Fixes #75029.
9919
9920 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
9921
9922         * reflection.c: Update the table_idx field of method builders after
9923         saving the module, since it can change. This is a workaround for
9924         bug #74914. 
9925
9926 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
9927
9928         * culture-info-table.h : update (additional French date format).
9929
9930 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
9931
9932         * icall.c (ves_icall_type_Equals): Revert last change.
9933         
9934         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
9935
9936         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
9937
9938 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
9939
9940         * class-internals.h: Added executioncontext_class field to 
9941         MonoDefaults structure.
9942         * domain.c: Cache System.Threading.ExecutionContext class in 
9943         mono_defaults.
9944         * object.c: Capture the ExecutionContext for asynchroneous calls in
9945          mono_async_result_new.
9946         * object-internals.h: Added execution_context and original_context 
9947         fields to MonoAsyncResult. Added execution_context to MonoThread.
9948         * security-manager.c|.h: Added mono_get_context_capture_method to 
9949         return the capture method (if required by the security manager or by
9950         the framework version used).
9951         * threadpool.c: Apply capture (if present) ExecutionContext in 
9952         mono_async_invoke and revert to original context after it completes.
9953
9954 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
9955
9956         * culture-info-table.h : updated (real hacky solution for zh-CHT).
9957
9958 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
9959
9960         * culture-info-table.h : zh-CHT related workaround.
9961
9962 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
9963
9964         * marshal.c (emit_marshal_custom): Add some error checking and call the
9965         methods in the ICustomMarshaler interface. Fixes #74875.
9966         
9967         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
9968         native->managed wrappers.
9969
9970 2005-05-12  Martin Baulig  <martin@ximian.com>
9971
9972         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
9973         here and use the loader lock.
9974
9975         * mono-debug.c: Properly lock when the debugger is not attached.
9976         (mono_debug_init): Release the initial lock if we're not running
9977         in the debugger.
9978
9979 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
9980
9981         * marshal.c (emit_marshal_custom): Pass through NULL values without
9982         calling the custom marshalling routines.
9983
9984         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
9985         conversion in structures. Fixes #74882.
9986
9987 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
9988
9989         * culture-info-table.h : zh-* cultures were missing.
9990
9991 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
9992
9993         * threads.c: Added a new event background_change_event which is signaled
9994         when a thread changes its background mode.
9995         Moved here several checks previously done in managed code. The checks
9996         require the thread lock, and using the thread lock in managed code
9997         can result in deadlocks.
9998         Merged Start_internal and Thread_internal into a single method. Now 
9999         Thread_internal does all work of creating and starting a thread.
10000         Added icalls for setting and getting the state of the object. Moved from
10001         managed code to avoid locking there.
10002         Added wait_for_tids_or_state_change() which is called instad of
10003         wait_for_tids when waiting for non-backround threads to end. This method
10004         will return if one of the threads ends or the background_change_event
10005         is signaled.
10006         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
10007         the background mode. This method signals the background_change_event
10008         event.
10009         * icall.c:
10010         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
10011         removed Start_internal.
10012         
10013 2005-05-11  Martin Baulig  <martin@ximian.com>
10014
10015         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
10016         to order of some fields to get proper alignment on 64-bit machines.
10017
10018 2005-05-11  Martin Baulig  <martin@ximian.com>
10019
10020         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
10021         changes as they're broken and completely fuck up the debugger.
10022
10023         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
10024
10025 2005-05-10  Martin Baulig  <martin@ximian.com>
10026
10027         * reflection.c (mono_reflection_generic_class_initialize): Don't
10028         call mono_class_setup_parent() here.
10029
10030 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10031
10032         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
10033         send/receive timeout use an integer in milliseconds. We were using a
10034         struct timeval.
10035
10036 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10037
10038         * locales.c:
10039         (internal_get_cultures): reserve the first slot of the array for the
10040         InvariantCulture, which will be filled in managed code.
10041
10042 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
10043
10044         * reflection.c (mono_image_fill_module_table): Initialize the
10045         GENERATION field as well.
10046
10047 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10048
10049         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
10050         Monitor.Enter on the object.
10051
10052 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
10053
10054         * threads.c: Enable the wait for running threads when exiting.
10055         * icall.c: Suspend all threads before exiting.
10056
10057 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
10058
10059         * assembly.c (mono_assembly_load_reference): Fix warning.
10060
10061 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10062
10063         * threadpool.c: changed the default number of threads per cpu. From now
10064         on, the default will be 20 + (5 * number of cpus) instead of 50.
10065
10066 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
10067
10068         * loader.c (mono_method_get_signature_full): Add locking here.
10069
10070 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
10071
10072         * appdomain.c: Moved methods for parsing and freeing assembly
10073         names to assembly.c.
10074         * assembly.c, domain-internals.h: Created public methods for parsing
10075         assembly names. Fixed mono_assembly_load_with_partial_name:
10076         it now finds the best match, taking into account the version,
10077         token and culture specified in the partial name. Also return
10078         the latest version if no version information is specified.
10079
10080 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
10081
10082         * threadpool.c: replace check for SocketAsyncCall class.
10083
10084 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10085
10086         * threadpool-internals.h:
10087         * Makefile.am: added threadpool-internals.h
10088
10089         * threadpool.c: call mono_unhandled_exception on exceptions not handled
10090         that happen in threadpool threads (tested on MS).
10091         (mono_thread_pool_remove_socket): new function that dispatch any pending
10092         AIO call on a socket that is closing. By now only epoll really needs it,
10093         as select/poll wake up when the socket closes.
10094
10095
10096         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
10097
10098 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
10099
10100         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
10101
10102 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
10103
10104         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
10105
10106 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
10107
10108         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
10109         has an abort request, convert it into a suspend request.
10110
10111 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
10112
10113         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
10114         warning for the usage of `UnmanagedFunctionPointerAttribute' which
10115         is not supported yet.
10116
10117 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10118
10119         * image.c: register assemblies loaded from data (bundles) in the loaded
10120         assemblies hash. Fixes bug #74772.
10121
10122 2005-04-29  Martin Baulig  <martin@ximian.com>
10123
10124         * class.c (mono_type_get_name_recurse): Update to the new naming
10125         schema from the latest .NET 2.x beta2.
10126         (mono_class_setup_vtable_general): If we're a generic instance,
10127         copy the vtable from our generic type definition and inflate all
10128         the methods in it.
10129
10130         * loader.c (find_method): Update to the new naming schema from the
10131         latest .NET 2.x beta2.
10132
10133 2005-04-29  Raja R Harinath  <harinath@gmail.com>
10134
10135         * class.c (mono_class_init): Add a mono_loader_unlock to the
10136         #74734 fix.
10137
10138 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
10139
10140         * icall.c (ves_icall_System_Environment_Exit): Remove the 
10141         suspend_all_other_threads () call for the time being, since it can hang.
10142
10143         * threads.c (mono_thread_manage): Similarly, disable the waiting for
10144         the background threads to exit, since it can also hang.
10145
10146         * class.c (mono_class_init): Applied patch from Ankit Jain 
10147         (radical@gmail.com). Avoid pending init errors when a field refers
10148         to a nested class using a typeref. Fixes #74734.
10149
10150         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
10151         this for dynamic modules.
10152
10153 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10154
10155         * threads.c: don't wait for threads that are in the process of aborting
10156         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
10157         and waiting for background threads to finish. This makes xsp and
10158         mod-mono-server exit without random length delays and/or hangs.
10159
10160 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10161
10162         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
10163
10164 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
10165
10166         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
10167         dynamic types to prevent infinite loops. Fixes #74727.
10168
10169         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
10170         ..._is_assignable_to.
10171
10172 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
10173
10174         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
10175
10176 2005-04-25  Martin Baulig  <martin@ximian.com>
10177
10178         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
10179
10180         * domain.c
10181         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
10182
10183         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
10184
10185         * reflection.c (build_compressed_metadata): Set metadata header
10186         version to 2.0.
10187
10188 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
10189
10190         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
10191         number into an integral and a decimal part. Fixes #70473.
10192
10193         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
10194
10195 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
10196
10197         * culture-info-table.h : reflected the latest locale-builder output.
10198
10199 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10200
10201         * threadpool.c: check for SuspendRequested too when deciding if
10202         mono_thread_interruption_checkpoint should be called.
10203
10204 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10205
10206         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
10207         * threads.c: remove interruption_mutex and use Interlocked instead. When
10208         suspending all the threads, wait for all the suspended events at once.
10209         If we're shutting down and get an APC that is going to be queued,
10210         call mono_thread_execute_interruption immediately, as the thread might
10211         be sleeping on a pthread condition or mutex.
10212
10213         * icall.c: call mono_runtime_set_shutting_down before suspending the
10214         threads.
10215
10216         Fixes bug #74693. And now xsp is happier when exiting.
10217
10218 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
10219
10220         * loader.c (mono_stack_walk): Fix #74690.
10221
10222 2005-04-22  Martin Baulig  <martin@ximian.com>
10223
10224         * mono-debug.h (MonoDebugMethodJitInfo): Added
10225         `MonoDebugMethodJitInfo *jit'.
10226
10227         * mono-debug.c (mono_debug_read_method): Cache the
10228         MonoDebugMethodJitInfo in `address->jit'.
10229         (mono_debug_free_method_jit_info): New public method.
10230
10231 2005-04-22  Martin Baulig  <martin@ximian.com>
10232
10233         * class.c (mono_class_is_assignable_from): Disallow
10234         type parameter -> interface.
10235
10236 2005-04-21  Dick Porter  <dick@ximian.com>
10237
10238         * threads.c (mono_thread_create): Turn an assertion into an error.
10239
10240 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
10241
10242         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
10243         
10244         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
10245         Fix some gcc 4.0 warnings.
10246
10247 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
10248
10249         * file-io.c: fix alt dir separator char on unix systems
10250         and cleanup (fixes bug #71214).
10251
10252 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
10253
10254         * marshal.c: Use CALLVIRT instead of CALL when dispatching
10255         a call to a remote domain, since the method may be an
10256         interface method in the client domain. This fixes bug #74192.
10257
10258 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10259
10260         * threadpool.c: recv/send are now performed before going back to managed
10261         code to save one transition.
10262
10263 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10264
10265         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
10266
10267         * metadata/threadpool.c: removed hack to workaround the bug above.
10268
10269         Fixes bug #74618.
10270
10271 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
10272
10273         * reflection.c reflection.h: Fix handling of parameter defaults in
10274         dynamic methods. Also fixes handling of parameter attributes.
10275         Fixes #74609.
10276
10277         * mono-debug.c (mono_debug_close_image): Fix warning.
10278
10279 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10280
10281         * socket-io.h: replaced old unused field with new 'blocking'.
10282         * threadpool.c: restore socket blocking state on windows(tm).
10283
10284 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
10285
10286         * icall.c: don't return the codebase in the AssemblyName[] returned by
10287         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
10288         * object-internals.h: Removed FIXME (fields were presents) and fixed
10289         versioncompat declaration.
10290
10291 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10292
10293         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
10294         not closed, so don't cleanup when it happens.
10295
10296 2005-04-13  Chris Toshok  <toshok@ximian.com>
10297
10298         * mono-debug-debugger.h: change prototype for
10299         mono_debugger_lookup_type.
10300
10301         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
10302         this function, although it should probably be named
10303         mono_debugger_init_type.
10304
10305 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10306
10307         * threadpool.c: fix non-AIO case.
10308
10309 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
10310
10311         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
10312         the built-in profiler to measure just JIT compilation times.
10313
10314 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10315
10316         * threadpool.c: the epollfd might be closed by another thread at
10317         any time, so ignore EBADF at treat it as a "we're closing" sign.
10318
10319 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10320
10321         * threadpool.c: release the semaphores with a count equals to the number
10322         of working threads in both IO and regular pools. Fixed typo that messed
10323         up the count of IO pool threads. Don't initialize the pipe handles if
10324         we're using epoll.
10325
10326 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10327
10328         * threadpool.c: some systems don't like a NULL when deleting the socket
10329         from epoll.
10330
10331 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10332
10333         * threadpool.c: fix semaphore allocation.
10334
10335 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10336
10337         * threadpool.c: added epoll() based implementation for asynchronous IO
10338         that is used instead of the default poll() when available.
10339         It can be disabled by setting MONO_DISABLE_AIO.
10340
10341 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10342
10343         * threadpool.c: windows needs 'closesocket' and instead of returning
10344         0 when the stream is closed while in select, it returns -1. Fixes bug
10345         #74573.
10346
10347 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
10348
10349         * class.c (class_compute_field_layout): Fix the regression caused by
10350         the previous try.
10351
10352 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10353
10354         * threadpool.c: separate pool for socket async. IO.
10355         * threadpool.h: mono_max_worker_threads is not a global any more.
10356
10357 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
10358
10359         * class.c (class_compute_field_layout): Fix #74549.
10360
10361 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10362
10363         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
10364         use 2 connected sockets instead.
10365
10366 2005-04-08  Miguel de Icaza  <miguel@novell.com>
10367
10368         * mono-config.c: Add new entry point for mkbundle
10369         mono_config_parse_memory. 
10370
10371 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10372
10373         * threadpool.c: removed another unused function.
10374
10375 2005-04-08  Ankit Jain  <radical@corewars.org>
10376
10377         * reflection.c (get_default_param_value_blobs): Add 'types'
10378         parameter to get the types encoded in the constant table.
10379         (mono_param_get_objects): Use the type from the constant table,
10380         not the type of the parameter, when creating default values.
10381         Handle null default values correctly.
10382
10383 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10384
10385         * file-io.c:
10386         * file-io.h:
10387         * threadpool.c:
10388         * threadpool.h:
10389         * icall.c:
10390         * socket-io.c: removed dead code for async IO.
10391
10392 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10393
10394         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
10395
10396         * threadpool.c: intercept socket async. calls and pass them to a thread
10397         that is polling and dispatching the job items to the threadpool as
10398         socket become ready. Fixes bugs #71217, #71933.
10399
10400         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
10401         between char and short/ushort arrays.
10402
10403         * socket-io.c: remove dead code.
10404
10405 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
10406
10407         * locales.c,
10408           icall.c : removed InternalToUpper_Comp() and
10409           InternalToLower_Comp().
10410
10411 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
10412
10413         * char-conversions.h : The tables were incorrectly generated. Should
10414           be generated against invariant culture.
10415
10416 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
10417
10418         * object.c (mono_runtime_invoke_array): Fix return value when 
10419         passing pre-created valuetype objects to ctors.
10420
10421         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
10422         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
10423         Fixes #74338.
10424
10425 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
10426
10427         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
10428         only used with --security and hides the wrong corlib version error.
10429
10430 2005-03-30  Joshua Tauberer  <tauberer@for.net>
10431
10432         * class.c: Changed mono_class_name_from_token so that types
10433         outside of a namespace don't have an initial period.  Improved
10434         the g_warning message used in _mono_class_get when loading
10435         fails.
10436         * assembly.c: In mono_assembly_load_reference, when an assembly
10437         can't be found, "No such file or directory" is misleading and
10438         unhelpful because a few paths were checked for the presence of
10439         the assembly.  When that happens (ENOENT), display a nicer
10440         message indicating the directories that were searched.  In all
10441         cases, the warning is made easier to read for non-hackers.
10442
10443 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
10444
10445         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
10446         project/solution.
10447         * appdomain.h|domain.c: Removed inline from functions.
10448         * appdomain.c: Reduced warnings when compiling on windows.
10449         * icall.c: Fixed output_debug declaration to gunichar2*.
10450         * mono-config.c: Reduced warnings when compiling on windows.
10451         * rand.c: Added missing "windows.h". Added missing return value.
10452         * rawbuffer.c: Added missing winsock2.h for windows.
10453         * sysmath.h: Added mono-compiler.h header to allow/ease 
10454         compilation with non-GCC compilers.
10455         * threads.c: Fixed declarations to compile with VS.NET C compiler.
10456         Removed cast warnings.
10457
10458         Adapted from the work of J Lothian (for VC6).
10459
10460 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
10461
10462         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
10463         from default_path.
10464
10465 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
10466
10467         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
10468         the 2.0 profile.
10469
10470 2005-03-27  Raja R Harinath  <harinath@gmail.com>
10471
10472         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
10473         has to be in $(exec_prefix).  $(prefix) is for arch-independent
10474         stuff, and it would probably use $(prefix)/share rather than
10475         $(prefix)/lib.
10476
10477 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10478
10479         * console-io.c: added 2 includes that might be missing.
10480
10481 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
10482
10483         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
10484         profile.
10485
10486         * reflection.c (create_custom_attr): Allocate the params array using
10487         alloca so it gets GC tracking.
10488
10489 2005-03-23  Chris Toshok  <toshok@ximian.com>
10490
10491         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
10492         out some spew.
10493
10494 2005-03-24  Raja R Harinath  <rharinath@novell.com>
10495
10496         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
10497         changes to pick up any changes in prefix, etc.
10498
10499 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
10500
10501         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
10502         
10503         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
10504         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
10505
10506 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
10507
10508         * class-internals.h object-internals.h class.c reflection.c: Extend the
10509         mono_lookup_dynamic_token () function to return the class of the
10510         token as well. 
10511
10512         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
10513         well. Fixes #73848.
10514
10515 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
10516
10517         * security-manager.c: Skip inheritance checks for intra-corlib
10518         class inheritance and method overrides. This skips a lot of checks
10519         and (anyway) permissions cannot work until corlib is loaded.
10520
10521 2005-03-23  Martin Baulig  <martin@ximian.com>
10522
10523         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
10524         MONO_TYPE_GENERICINST.  
10525
10526 2005-03-23  Martin Baulig  <martin@ximian.com>
10527
10528         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
10529
10530 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
10531
10532         * class.c: added locking comments to some functions.
10533         Cache the interface offsets arrays (saves about 20 KB
10534         of runtime memory in a typical app).
10535         Reduce the time overhead in mono_class_setup_supertypes ().
10536
10537 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
10538
10539         * icall.c: speedup and fix leaks in GetMethodsByName and
10540         GetPropertiesByName.
10541
10542 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
10543
10544         * reflection.c: some locking fixes.
10545
10546 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
10547
10548         * metadata.c: added missing break in case statement.
10549
10550 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
10551
10552         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
10553         typedbyref return values. Fixes #73941.
10554
10555 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
10556
10557         * security-manager.c|h: Added demandunmanaged method and 
10558         suppressunmanagedcodesecurity class to MonoSecurityManager.
10559         Renamed aptc class to allowpartiallytrustedcallers.
10560
10561 2005-03-17  Martin Baulig  <martin@ximian.com>
10562
10563         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
10564
10565 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10566
10567         * file-io.c: disabled file async. IO using aio_*. It uses the
10568         threadpool now. Workaround for bug #73718.
10569
10570 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
10571
10572         * assembly.h, mono-config.c: added code to deal with bundled configs
10573         for bundled assemblies.
10574
10575 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
10576
10577         * *.c, private.h: cleanup, removing old private.h header file.
10578
10579 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
10580
10581         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
10582         and throw_on_unmappable_char attributes.
10583
10584 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
10585
10586         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
10587         _ProcessName_internal.
10588
10589 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
10590
10591         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
10592         #73631.
10593
10594         * icall.c threads.c threads-types.h: Remove slothash icalls as they
10595         are no longer used.
10596
10597 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
10598
10599         * object.c (compute_class_bitmap): Add support for generics. Fixes
10600         #73527.
10601
10602 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
10603
10604         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
10605
10606 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10607
10608         * filewatcher.c: commented out the code for windows watcher, as we don't
10609         use it (we use the managed implementation instead).
10610
10611 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
10612
10613         * object-internals.h (MonoThread): Remove 'unused1' field.
10614
10615         * appdomain.c: Bump corlib version.
10616
10617         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
10618
10619         * reflection.c (mono_reflection_create_runtime_class): Remove the
10620         AssemblyBuilder.Save optimization since it causes too many problems.
10621
10622 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
10623
10624         * exception.c|h: Added mono_get_exception_reflection_type_load to
10625         create a ReflectionTypeLoadException object.
10626         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
10627         to return NULL is a InheritanceDemand fails during reflection. Updated
10628         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
10629         ReflectionTypeLoadException if an InheritanceDemand fails during 
10630         reflection. Added icall mapping for GetLinkDemandSecurity.
10631         * security-manager.c|h: Added ves_icall_System_Security_
10632         SecurityManager_GetLinkDemandSecurity internal call to return the
10633         class and methods permissions set for a LinkDemand. Removed unused
10634         fields in MonoSecurityManager.
10635
10636 2005-03-10  Martin Baulig  <martin@ximian.com>
10637
10638         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
10639         it's a generic instance.
10640
10641 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
10642
10643         * reflection.c (mono_get_object_from_blob): Applied patch from
10644         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
10645
10646         * class.c (mono_class_is_assignable_from): Another try at fixing 
10647         #73469 without breaking anything.
10648
10649 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
10650
10651         * class.c: (mono_class_is_assignable_from): Revert the last changes
10652         since they don't work with generics.
10653         
10654         * class.c (mono_class_is_assignable_from): Fix build bustage.
10655
10656         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
10657         the managed IsAssignableFrom method. Fixes #73469.
10658
10659         * reflection.c (mono_reflection_call_is_assignable_from): New helper
10660         function.
10661
10662 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
10663
10664         * object.c (mono_load_remote_field_new): Fix returning uninitialized
10665         memory when the remoting callback does not sets the out arguments.
10666         Fixes #73007.
10667
10668         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
10669         by mistake.
10670
10671         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
10672
10673         * object-internals.h (MonoStackFrame): Sync with managed object layout.
10674
10675         * appdomain.c: Bump corlib version.
10676
10677 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
10678
10679         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
10680         function.
10681
10682         * threads.c (mono_thread_attach): Detect threads which are not started
10683         by the GC pthread wrappers.
10684
10685 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
10686
10687         * icall.c: Added new icall for RNG.
10688         * rand.c|h: Added new icall to open the RNG. This allows to share a 
10689         single handle on Linux to access /dev/urandom and fix #73183.
10690
10691 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
10692
10693         * object.c: setting the new vtable in a transparent proxy object must
10694         not change the GC descriptor.
10695
10696 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
10697
10698         * object.c: fixed compilation without GCJ support.
10699         * reflection.c: for runtime-created types ensure klass->has_references
10700         is correct (bug #73215).
10701
10702 2005-03-02  Martin Baulig  <martin@ximian.com>
10703
10704         * class.c (mono_class_is_assignable_from): Make this work if
10705         `oklass' is a generic instance; fixes #72831.
10706
10707 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
10708
10709         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
10710         with hasthis set.
10711         
10712         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
10713
10714         * marshal.c: Reorganize native->managed marshalling code to also use
10715         the emit_marshal_... functions.
10716
10717 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
10718
10719         * object.c: typed allocs have issues with bitmap sizes > 30,
10720         so check for max_set >= 30.
10721
10722 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
10723
10724         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
10725         managed code. Fixes #73012.
10726
10727         * metadata.h (MonoMarshalSpec): Add elem_mult field.
10728
10729         * metadata.c reflection.c: Load/Emit elem_mult as well.
10730         
10731         * metadata.h (MonoMarshalSpec): Add comment.
10732
10733         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
10734
10735         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
10736         num_elem to -1 if not given.
10737
10738         * object-internals.h (MonoReflectionMarshal): Add has_size field.
10739
10740         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
10741         given values.
10742
10743 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
10744
10745         * null-gc.c (mono_gc_free_fixed): Was not compilable.
10746
10747 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
10748
10749         * reflection.c (encode_marshal_blob): Encode param_num field as well.
10750
10751         * object-internals.h (MonoReflectionMarshal): Add param_num field.
10752
10753 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
10754
10755         * object.c: generalized the reference bitmap creation
10756         and added hooks for the new GC.
10757         * class-internals.c: removed the gc_bitmap field from MonoClass.
10758
10759 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
10760
10761         * domain.c: help the compiler to produce better code
10762         in mono_jit_info_table_find ().
10763
10764 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
10765
10766         * object.c: make all allocations look typed.
10767
10768 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
10769
10770         * socket-io.c: load Mono.Posix if it's not loaded already
10771         (fixes bug#73033).
10772
10773 2005-02-24  Martin Baulig  <martin@ximian.com>
10774
10775         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
10776         * reflection.c (dup_type): Likewise.
10777
10778 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
10779
10780         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
10781         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
10782
10783 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
10784
10785         * domain.c, threads.c, object-internals.h: make the critical thread
10786         local vars use the fast access mode (even when we're compiled in
10787         a lib). Provide accessors to be used by the jit during codegen.
10788
10789 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
10790
10791         * appdomain.c: Changed hook functios behavior to include
10792         support for the reflection only assemblies. Some icalls were changed
10793         to support the mentioned assemblies too. Signatures of static methods
10794         try_assembly_resolve and real_load now have an additional parameter:
10795         refonly.
10796
10797         * assembly.c: General changes to mono_assembly_ methods to support
10798         reflection only api. Functions mono_assembly_open, mono_assembly_load,
10799         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
10800         suffix, to support an additional gbool parameter to specify whether
10801         the assembli is reflection only or not. Created some new hook functions 
10802         to add support for reflection only assemblies. Signatures of static 
10803         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
10804         have now an additional parameter: refonly.
10805
10806         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
10807         indicating whether the assembly is reflection only or not.
10808
10809         * exception.c: Add mono_get_exception_invalid_operation.
10810
10811         * icall.c: Throw an InvalidOperationException when trying to invoke
10812         a property/method/event, or trying to set/get the value of a field.
10813         Also add an icall to retrieve the ref_only flag to the
10814         MonoReflectionAssembly.
10815
10816 2005-02-23  Chris Toshok  <toshok@ximian.com>
10817
10818         Part of fix for #72827.
10819         * mono-debug.c (mono_debug_add_method): add lexical block data to
10820         the info we write.  Kind of a hack at the moment - we copy the
10821         lexical block info from the MonoDebugMethodInfo to the
10822         MonoDebugMethodJitInfo here, before writing it.
10823         (mono_debug_read_method): read the lexical block info.
10824
10825         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
10826
10827         * debug-mono-symfile.h: add lexical block support.
10828
10829         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
10830         support.
10831
10832 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
10833
10834         * loader.c (mono_lookup_pinvoke_call): Fix warning.
10835
10836         * object.c (mono_runtime_free_method): Call mono_free_method () and
10837         put the TODOs there.
10838
10839         * loader.c (mono_free_method): Free up most memory allocated for 
10840         dynamic methods.
10841
10842 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
10843
10844         * reflection.c: properly flag a Type argument to a
10845         named custom attr value (bug #72248).
10846
10847 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
10848
10849         * reflection.c: reduce code duplication in named custom
10850         attribute encoding.
10851
10852 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
10853
10854         * reflection.c: properly encode custom attrs of type object
10855         (bug #72649).
10856
10857 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
10858
10859         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
10860
10861 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
10862
10863         * socket-io.c: load System.dll if it's not loaded already
10864         (bug #72850 and #70477).
10865
10866 2005-02-21  Martin Baulig  <martin@ximian.com>
10867
10868         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
10869         generic instances.
10870
10871 2005-02-21  Martin Baulig  <martin@ximian.com>
10872
10873         * reflection.c (mono_image_build_metadata): We also need to
10874         "fixup" the MethodImpl table after we computed the final method
10875         indices.  Call fixup_methodimpl() to do that.
10876         (fixup_methodimpl): New private method.
10877
10878 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
10879
10880         * assembly.c: special case mscorlib.dll (bug#72536),
10881         patch from Carlos Alberto Cortez.
10882
10883 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
10884
10885         * threads-types.h threads.c: Fix build bustage.
10886
10887         * threads.c: Use a union for long<->double conversions.
10888
10889         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
10890         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
10891
10892         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
10893         containing the checkpoint call with NOT_TAKEN.
10894         
10895         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
10896         checkpoint before pushing the arguments, so they won't have to be
10897         spilled to stack.
10898
10899 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
10900
10901         * domain.c, assembly.c, domain-internals.h: make some data
10902         const and relocation-free.
10903
10904 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
10905
10906         * object.c, appdomain.c, class-internals.h: introduce the
10907         MonoClassRuntimeInfo structure to hold the info needed to
10908         use a class at runtime. Made mono_class_vtable() lock-free
10909         for all the appdomains.
10910
10911 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
10912
10913         * metadata-internals.h, image.c: introduce a per-image mempool to
10914         be used for memory that has the same lifetime as the image.
10915
10916 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
10917
10918         * domain.c: In mono_init_internal(), instead of selecting the first
10919         runtime version supported by an executable, get a list of all
10920         supported versions and select the one for which an mscorlib exists
10921         (since even if the runtime supports a given version, it doesn't mean
10922         that the framework for that version is installed).
10923         Modified get_runtimes_from_exe to support this behavior.
10924         In supported_runtimes, added information about additional system
10925         assembly versions.
10926         
10927         * assembly.c: Added support for more than one system assembly version
10928         per runtime version. Updated the assembly list.
10929         In mono_assembly_remap_version, removed the initial version check,
10930         since we don't know to which version we need to compare until we
10931         get the version set on which the assembly is based.
10932         Moved the code for loading corlib into the new method
10933         mono_assembly_load_corlib(), so it can be used by the initialization
10934         code.
10935         
10936         * domain-internals.h: Updated data structures and added declaration
10937         for mono_assembly_load_corlib.
10938
10939 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
10940
10941         * reflection.c (resolve_object): Fix the creation of the signature in 
10942         the SignatureHelper case.
10943
10944         * assembly.c (mono_assembly_remap_version): Fix binary search.
10945         
10946 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
10947  
10948         * class.c: Added inheritance check when a method is overloaded (from a
10949         virtual method or when implementing an interface) and when a class is
10950         inherited. Added functions to set a failure for a class and to 
10951         retreive the exception from a failure.
10952         * class-internals.h: Added fields to MonoClass to keep the exception
10953         information status for inheritance (or other exceptions) to be thrown
10954         later (i.e. not at load time).
10955         * object.c: Throw the inheritance SecurityException when a type is to 
10956         be created with either class or method inheritance violations.
10957         * reflection.c|h: Fix when getting declsec from a class. Removed 
10958         unrequired code for class. Improved sanity in parameter naming.
10959         * security-manager.c|h: Added functions to check for class and method
10960         inheritance.
10961
10962 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
10963
10964         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
10965         and has_finalize in dynamic types as well.
10966
10967 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
10968
10969         * culture-info-table.h : fixed currency format for en-GB (and so on).
10970
10971 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
10972
10973         * gc.c: ensure the GC handles never have 0 as a value.
10974
10975 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
10976
10977         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
10978         a pointer to a struct to unmanaged code. Fixes #72625.
10979
10980 2005-02-16  Martin Baulig  <martin@ximian.com>
10981
10982         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
10983
10984 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
10985
10986         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
10987
10988 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
10989
10990         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
10991
10992         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
10993         UnmanagedFunctionPointerAttribute, use it for determining calling convention
10994         etc. Fixes #71471.
10995
10996         * reflection.c (mono_custom_attrs_get_attr): New helper function.
10997
10998         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
10999
11000 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
11001
11002         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
11003         changes to make the current context a field in MonoThread.
11004
11005 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
11006
11007         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
11008         the last change.
11009         
11010         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
11011         extracted from mono_marshal_get_native_wrapper.
11012
11013         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
11014         to create wrappers around native functions.
11015
11016         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
11017         delegates for arbitrary function pointers. Fixes #71472.
11018
11019 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
11020
11021         * threads.c: cleaned up the code a little.
11022
11023 2005-02-15  Martin Baulig  <martin@ximian.com>
11024
11025         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
11026         the data table.
11027
11028         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
11029         allocate larger chunks if needed.
11030
11031 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11032
11033         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
11034         in by mistake.
11035
11036 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
11037
11038         * domain.c: keep the domains in an array and ensure the domain ids
11039         are kept small, so they can be used as indexes to domain-specific data
11040         with a small memory overhead.
11041
11042 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11043
11044         * icall.c: Handle byref types in Type icalls. Fixes #72544.
11045
11046 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
11047
11048         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
11049
11050 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
11051
11052         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
11053
11054         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
11055         values.
11056
11057         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
11058         
11059 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
11060
11061         * domain-internals.h: add the hashtable here.
11062
11063         * class-internals.h: Remove `info' from MonoMethod
11064
11065         * domain.c: Add a new hashtable, jit_trampoline_hash
11066
11067 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
11068
11069         * object.c: don't set the value of static fields
11070         (fixes bug#72494).
11071
11072 2005-02-11  Martin Baulig  <martin@ximian.com>
11073
11074         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
11075         (mono_debug_add_method): Silently ignore the method if it's too big.
11076         (mono_debug_add_type): Likewise.
11077
11078 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
11079
11080         * threads.c, appdomain.c: remove #ifdefs from the code.
11081
11082 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
11083
11084         * metadata-internals.h: Added flags to MonoAssembly to cache the most
11085         common security informations. This allows us to stay in unmanaged code
11086         when doing LinkDemand and it's special cases (except for the first 
11087         time for initialization). The flags a very much used with --security.
11088         * reflection.c|h: Added code to get declarative security attributes 
11089         for LinkDemand and InheritanceDemand. This required to refactor the
11090         existing code for Demand.
11091         * security-manager.c|h: Added new method fields for the special cases
11092         of LinkDemand.
11093
11094 2005-02-10  Martin Baulig  <martin@ximian.com>
11095
11096         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
11097         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
11098
11099 2005-02-10  Martin Baulig  <martin@ximian.com>
11100
11101         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
11102         debugging code; this is almost a complete rewrite.
11103
11104         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
11105
11106 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11107
11108         * domain.c, object.h: expose mono_string_equal () and 
11109         mono_string_hash ().
11110         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
11111         it's implemented in managed code.
11112
11113 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11114
11115         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
11116         lo leak objects between appdomains.
11117
11118 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11119
11120         * assembly.c: old compilers compilation fix from 
11121         robertj@gmx.net (Robert Jordan).
11122
11123 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
11124
11125         * class-internals.h: Little reminder for the future.
11126
11127         * debug-helpers.c: Fix up wrapper_type_names
11128
11129 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11130
11131         * image.c, metadata-internals.h: when loading an image from a file,
11132         mmap all of it and use the same codepaths as when using a
11133         in-memory image: the code is simpler and we use less memory
11134         (both writable and readonly).
11135
11136 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11137
11138         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
11139         API to alloc runtime data structures that need to be tracked by the
11140         GC and contain pointers.
11141         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
11142         make the code more readable and eventually use a different GC.
11143
11144 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
11145
11146         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
11147         for out arguments.
11148         
11149 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
11150
11151         * object.c: In release_type_locks(), don't release the cctor lock
11152         if it has already been released. This fixes a crash in the
11153         thread5 test.
11154
11155 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11156
11157         * gc.c, marshal.c, icall.c: register a delegate for finalization
11158         only when the native function pointer has been allocated for it.
11159
11160 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11161
11162         * object.c: cleaned up some code, allocate objects that are
11163         pointer free with the atomic malloc variant. Allocate memory
11164         for static data from the mempool if it's pointer-free.
11165         Allocate the bounds array at the end of the array data, when needed.
11166         * object-internals.h, object.h: move a private function in a private
11167         header.
11168         * class.c: handle missing case in tracking references in fields.
11169
11170 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
11171
11172         * class.c, class-internals.h: keep track if a type has
11173         reference fields in either the instance or static fields.
11174
11175 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
11176
11177         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
11178         and renamed to MonoRuntimeInfo. Added fields to store the expected
11179         framework assembly version. Changed mono_get_framework_version and
11180         mono_get_runtime_version for a single mono_get_runtime_info method.
11181         
11182         * assembly.c: Added method to remap system assembly versions to the
11183         current executing runtime version. Removed old mapping code.
11184         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
11185         
11186         * icall.c, reflection.c: Track api changes.
11187
11188 2005-02-06  Miguel de Icaza  <miguel@novell.com>
11189
11190         * loader.c (method_from_memberref): Improve error reporting,
11191         produce the class name instead of the typeref/typedef index. 
11192
11193 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
11194
11195         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
11196
11197 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11198
11199         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
11200         stdcall and charset name mangling.  Reorganize the code and add
11201         some tracing stuff.
11202
11203 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11204
11205         * monodiet.c: More iters!
11206
11207         * marshal.c: Iter usage.
11208
11209         * icall.c: Iter usage.
11210
11211         * object.c: Use iters.
11212
11213         * debug-helpers.c: More iters
11214
11215 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11216
11217         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
11218         under win32.
11219
11220 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
11221
11222         * mono-debug-debugger.c: use iters
11223
11224         * class.c, class-internals.h: mono_class_setup_events is static
11225         now
11226
11227         * All callers: use iters
11228
11229 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11230
11231         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
11232         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
11233
11234 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11235
11236         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
11237
11238         * marshal.h: Add prototypes for ldfld/stfld_remote.
11239
11240         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
11241         this is called during startup.
11242         
11243 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
11244
11245         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
11246         MonoThreadsSync struct private in monitor.c. Changed the way
11247         MonoThreadsSync is allocated so it's faster and there is no
11248         need to keep track of it with a finalizer and it uses less memory.
11249         This also finally allows us to allocate mono objects as ptrfree when
11250         there are no reference fields.
11251
11252 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
11253
11254         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
11255         disappearing link to the GC interface and use them to simplify
11256         the gchandles code.
11257
11258 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11259
11260         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
11261         stfld_remote which call mono_load/store_field_new. This allows methods
11262         calling ldfld/stfld wrappers to be AOTed.
11263
11264         * console-io.c: Include sys/filio.h under solaris.
11265         
11266         * console-io.c: Include curses.h if needed correctly.
11267
11268 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11269         
11270         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
11271         method->klass as well.
11272
11273         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
11274
11275         * class.c (mono_class_init): Switch on lazy initialization of 
11276         methods.
11277
11278         * class.c (mono_class_get_finalizer): Handle the case when the 
11279         finalizer is inherited.
11280
11281 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11282
11283         * console-io.c: <curses.h> is needed by term.h on solaris.
11284
11285 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
11286
11287         * icall.c, class-internals.h, monodiet.c, class.c: Remove
11288         mono_class_setup_properties where possible. Remove this ftn from
11289         the header file, and make it static.
11290
11291 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11292
11293         * loader.c: Add missing setup_... call.
11294
11295         * class.c: Add missing setup_... calls.
11296
11297         * class.c (mono_class_init): Switch on lazy initialization of 
11298         the generic vtable.
11299         
11300         * class.c (mono_class_init): Fix generics broken by the recent changes.
11301
11302         * monodiet.c (handle_type): Add missing setup_... calls.
11303
11304         * class.c: Back out garbage in previous patch.
11305         
11306         * class.c: Add missing setup_... calls.
11307
11308         * class.c (mono_class_get_method_from_name_flags): Avoid calling
11309         mono_class_setup_methods () if possible.
11310
11311         * class-internals.h (MonoClass): Add 'has_cctor' flag.
11312
11313         * class-internals.h (MonoCachedClassInfo): New structure.
11314
11315         * class.c: Initialize properties and events fields of MonoClass lazily.
11316
11317         * class.c: Add infrastructure for lazily initializing the methods and
11318         vtable fields of MonoClass. Not yet used.
11319
11320         * class.c (mono_class_get_finalizer): New helper function.
11321
11322         * class.c: Add infrastructure for loading some class related data from
11323         an AOT file.
11324
11325         * object.c: Add infrastructure for initializing the vtable from data
11326         in the AOT file.
11327
11328         * gc.c (run_finalize): Use mono_class_get_finalizer ().
11329
11330         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
11331         appropriate initialization function before accessing parts of the
11332         MonoClass structure.
11333
11334         * marshal.c: Fix warnings.
11335         
11336         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
11337
11338         * mono-debug-debugger.c (get_exception_message): Use 
11339         mono_class_get_method_from_name_flags ().
11340
11341 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
11342
11343         * reflection.c, appdomain.c: Replace a few manual searches that
11344         Zoltan missed. (Paolo approved this part of my initial patch).
11345
11346 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
11347
11348         * profiler.c: disable recording statistical events at report time.
11349
11350 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11351
11352         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
11353         to byteswap arrays of enum values, too (bug #72080).
11354
11355 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
11356
11357         * appdomain.c (set_domain_search_path): Allow this to be called if
11358         domain->setup is not yet set.
11359
11360         * loader.c (mono_method_get_index): New helper function.
11361
11362         * loader.c reflection.c: Use mono_method_get_index ().
11363
11364         * class.c (mono_class_get_method_from_name_flags): New helper method.
11365
11366         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
11367         this.
11368
11369         * class.c (mono_class_get_cctor): New helper method.
11370
11371         * string-icalls.c object.c class.c marshal.c reflection.c: Use
11372         mono_class_get_method () to look up methods.
11373
11374 2005-02-01  Miguel de Icaza  <miguel@novell.com>
11375
11376         * console-io.c: Fix the build, this should work on Windows.
11377
11378 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
11379
11380         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
11381         be set to null to keep things valid
11382
11383 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11384
11385         * icall.c: added Console 2.0 icalls.
11386         * Makefile.am: added console-io.[ch]
11387         * console-io.[ch]: internal calls for Console 2.0 API.
11388
11389 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11390
11391         * class.c: make sure we consider all the interfaces
11392         when calculating max_interface_id (bug found by
11393         Jeroen Frijters running ikvm).
11394
11395 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
11396
11397         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
11398         valuetype fields to null.
11399
11400         * object.c (set_value): Ditto. Fixes #71669.    
11401
11402 2005-01-31  Martin Baulig  <martin@ximian.com>
11403
11404         * metadata.c (mono_metadata_has_generic_params): New public
11405         function; checks whether something is a generic method.
11406
11407 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
11408
11409         * appdomain.c: fix infinite recursion when adding assemblies.
11410
11411 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
11412
11413         * object.c: Fix small typo to return all items for Environment.
11414         GetCommandLineArgs.
11415
11416 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11417
11418         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
11419         reflection.c: more domain and assembly-unload related fixes
11420         and memory leaks plugs.
11421
11422 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
11423
11424         * 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.
11425
11426 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
11427
11428         * loader.c (mono_method_signature): Make this method lazy
11429         (mono_get_method_from_token): Don't computate the signature here.
11430
11431         Doing this saves quite a bit of memory. I got 90 kb on starting up
11432         monodoc. It should also save some disk reads on startup.
11433
11434         * *: MonoMethod->signature might be NULL now. You *MUST* use
11435         mono_method_signature.
11436
11437 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
11438
11439         * object.c (mono_runtime_get_main_args): Return an array from the
11440         current domain here. Fixes #71938.
11441
11442 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
11443
11444         * monitor.c: formatting changes to comply with the
11445         mono coding style and remove #ifdefs from the code.
11446
11447 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
11448
11449         * metadata.c, private.h: remove some unneeded data
11450         and use a more compact representation for table schemas.
11451
11452 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
11453
11454         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
11455         to get a better distribution in hash tables.
11456         * *.c: use mono_aligned_addr_hash() where appropriate.
11457         * assembly.c: make var static.
11458
11459 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
11460
11461         * domain-internals.h: Put MonoJitInfo on a diet.
11462
11463         * domain.c: Fix a warning.
11464
11465 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11466
11467         * gc.c: rework the gc handles code to reuse handles
11468         when freed.
11469
11470 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
11471
11472         * domain.c: fixed long standing bug in mono_string_equal() which
11473         was brought to light with the ldstr changes.
11474
11475 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
11476
11477         * reflection.c: Remove warning by adding missing include for marshal.h
11478
11479 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
11480
11481         * domain.c, object.c: change the ldstr_table to hold
11482         MonoString* as keys: makes the runtime isinterned lookup
11483         faster and simplifies memory management.
11484
11485 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
11486  
11487         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
11488         possible to add imperative security checks before calling the icall.
11489         * reflection.c: Return security attributes on the original MonoMethod
11490         (and not the wrapped one). This fix permissions on icalls.
11491
11492 2005-01-25  Dick Porter  <dick@ximian.com>
11493
11494         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
11495         the check for mktime() support actually test the mktime() return
11496         value.  "Fixes" bug 71682, though the output is still different to
11497         MS.
11498
11499 2005-01-25  Martin Baulig  <martin@ximian.com>
11500
11501         * class.c (mono_class_is_assignable_from): Make this work for
11502         generic instances.
11503
11504 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
11505
11506         * marshal.c (mono_string_utf8_to_builder)
11507         (mono_string_builder_to_utf16): We might not have ownership of the
11508         string. In thise case, we need to create a new buffer.
11509
11510         * object-internals.h (mono_stringbuilder_capacity): sb->str might
11511         be null, in which case, use the default capacity.
11512
11513 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
11514
11515         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
11516         GC events to the profiler.
11517
11518 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
11519
11520         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
11521         if you don't want the GC to run.
11522
11523 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
11524
11525         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
11526         start providing a GC API and keeping different implementations in
11527         their own file.
11528         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
11529
11530 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
11531
11532         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
11533         mmap rather than allocating a huge buffer.
11534         (mono_debug_close_mono_symbol_file): Free the buffer allocated
11535         above.
11536
11537 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
11538
11539         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
11540         and CheckExecutionRights.
11541         * reflection.c|h: Keep the index of the declarative security to be 
11542         used, instead of the pointer, when AOT compiler is used. Also add 
11543         class initialization when requesting demands.
11544         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
11545         CheckExecutionRights. Both properties are now FALSE by default, and
11546         unmodifiable, unless the --security option is used.
11547
11548 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11549
11550         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
11551         reflection.c: properly refcount images and assemblies, many leaks fixed.
11552
11553 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11554
11555         * threadpool.c: increase the timeout for threads in the thread pool to
11556         10s.  Fixes bug #67159.
11557
11558 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
11559
11560         * class-internals.h: Sun's compiler insists on explicit
11561         signed on bit fields to handle then correctly.
11562
11563 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
11564
11565         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
11566         Make the size of the array fit only the number of invalid path
11567         chars that we have.
11568
11569         * class.c (_mono_class_get): Improve the error reporting when a
11570         class referenced is not found, to assist debugging. 
11571
11572 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
11573
11574         * threads.c: fix off-by-one error.
11575         * domain.c: free data allocated in the domain.
11576
11577 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
11578
11579         * reflection.c (mono_method_body_get_object): Fill out exception info
11580         as well.
11581
11582         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
11583         structure.
11584         
11585 2005-01-19  Martin Baulig  <martin@ximian.com>
11586
11587         * loader.c (mono_get_method_constrained): Make this work again.
11588
11589 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
11590
11591         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
11592         guint16 to match the managed side.
11593
11594         * reflection.c (mono_reflection_body_get_object): Fill out local
11595         variables array.
11596
11597         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
11598         as well.
11599
11600         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
11601         'local_var_sig_token'.
11602
11603 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
11604
11605         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
11606         System.Drawing.
11607
11608         * reflection.c (mono_method_body_get_object): Handle abstract and
11609         runtime methods.
11610
11611 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
11612
11613         * marshal.c, loader.c, class-internals.h, reflection.c:
11614         store the emthod data for a wrapper in an array instead of a list.
11615
11616 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
11617
11618         * marshal.c: change the code to allocate memory more
11619         conservatively for method wrappers.
11620
11621 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
11622
11623         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
11624         fields from MonoClass to the marshal info structure where they belong.
11625
11626 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
11627
11628         * class.c, object.c, class-internals.h, marshal.c: rearrange
11629         some fields and tweak some types to lower memory usage.
11630
11631 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
11632
11633         * threads.c (signal_thread_state_change): Handle the case when the
11634         target thread is the current thread.
11635
11636         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
11637
11638         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
11639         emit_ptr_to_object_conv. 
11640
11641         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
11642         marshalling. Fixes #71352.
11643
11644 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
11645
11646         * metadata.h, blob.h: move table enum to blob.h so it can be included
11647         in any header.
11648         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
11649         cut the size of MonoImage/MonoDynamicImage.
11650
11651 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
11652
11653         * profiler.c (mono_profiler_install_simple): Fix default arguments.
11654
11655 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
11656
11657         * reflection.c, reflection.h, icall.c: add a function to check
11658         if an attribute type is defined for a metadata object.
11659
11660 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
11661
11662         * object-internals.h: Added some needed fields from StringBuilder class.
11663         * marshal.c: Set the maxCapacity when creating a StringBuilder.
11664
11665 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
11666
11667         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
11668         threads before shutting down the runtime.
11669
11670         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
11671
11672 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
11673
11674         * object-internal.h, threads.c: implement stacksize and 
11675         parameterized thread start functionality (requires
11676         matching corlib). Marked broken code for later removal.
11677
11678 2005-01-12  Martin Baulig  <martin@ximian.com>
11679
11680         * class-internals.h (MonoGenericClass): Moved the `initialized'
11681         flag to MonoDynamicGenericClass, removed `init_pending'.
11682         (MonoGenericInst): Added `is_reference' flag.
11683
11684 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
11685
11686         * reflection.c (mono_image_create_pefile): Only set the pe_offset
11687         inside the MSDOS header. Fixes #71201.
11688
11689         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
11690         gc thread.
11691         (mono_domain_finalize): Ditto.
11692
11693 2005-01-12  Martin Baulig  <martin@ximian.com>
11694
11695         * class.c (mono_get_shared_generic_class): Use the cache for
11696         non-dynamic generic classes.
11697
11698         * class-internals.h (mono_class_create_generic_2): Removed
11699         function prototype, this function is now static inside class.c.
11700
11701         * class.c (mono_class_create_generic_2): Made this static, only
11702         call it from mono_class_init() and mono_class_setup_parent().
11703         (collect_implemented_interfaces_aux): Call mono_class_init() on
11704         the interfaces we collect.
11705         (mono_class_setup_vtable): Call mono_class_init (class->parent).
11706
11707 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
11708
11709         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
11710         it a real thread handle.
11711
11712         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
11713         MonoJitExceptionInfo, since each catch clause needs its own variable.
11714         
11715 2005-01-11  Dick Porter  <dick@ximian.com>
11716
11717         * image.c (mono_pe_file_open): New variant on mono_image_open()
11718         that does not set up the CLI metadata; used for FileVersionInfo so
11719         it can get the data for windows binaries too.
11720         
11721         * process.c (process_read_string_block): Don't read off the end of
11722         the StringTable block.
11723
11724         These both fix bug 70766.
11725
11726 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
11727
11728         * gc.c: set some fields to NULL at GC cleanup time.
11729         * threads.c: if we quit the main thread, call exit ().
11730
11731 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
11732
11733         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
11734
11735 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
11736
11737         * threads.h, threads.c, object.c: added accessor and settor for
11738         main_thread. Handle it specially when exiting from it: wait
11739         for other foreground threads to exit.
11740
11741 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
11742
11743         * process.c, verify.c: remove some bloat.
11744
11745 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
11746
11747         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
11748         the calling convention to cdecl under win32.
11749
11750 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
11751
11752         * object.c (mono_object_get_size): New function to get the size of
11753         an object instance.
11754
11755         * profiler.c (simple_allocation): Use above.
11756
11757 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
11758
11759         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
11760         ves_icall_System_AppDomain_getRootDomain (as it's not required to
11761         get an appdomain by it's id and we can't assume the root's id is 0).
11762         * domain-internals.h: Change the function prototype to match.
11763         * icall.c: Change the icall table for AppDomain.
11764
11765 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
11766
11767         * locales.c (string_invariant_compare_char): Only compute
11768         GUnicodeTypes in the case where we need them.  Test for ordinality
11769         first and return if so.
11770
11771         From the commit:
11772
11773                 /*
11774                  * FIXME: here we must use the information from c1type and c2type
11775                  * to find out the proper collation, even on the InvariantCulture, the
11776                  * sorting is not done by computing the unicode values, but their
11777                  * actual sort order.
11778                  */
11779
11780 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
11781
11782         * loader.c: for P/Invoke methods, allow the "Internal" shared
11783         library name to refer to the calling process symbol namespace.
11784
11785 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
11786
11787         * Makefile.am: Add the security manager to the build.
11788         * security-manager.c|h: New. Initialization of the security manager.
11789
11790 2005-01-07  Dick Porter  <dick@ximian.com>
11791
11792         * threads.c: 
11793         * monitor.c: Update thread state during Monitor and WaitHandle
11794         waits.  Fixes bug 71031.
11795
11796 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
11797
11798         * reflection.c (property_encode_signature): Correctly handle when the
11799         property has no methods.
11800
11801 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
11802
11803         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
11804         
11805         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
11806         fields from mb, not rmb. Fixes #71017.
11807
11808         * marshal.c (emit_ptr_to_str_conv): Add support for 
11809         ByValTStr -> string conversion. Fixes #71015.
11810
11811         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
11812
11813         * mempool.c (mono_mempool_contains_addr): New helper function.
11814
11815 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
11816
11817         * metadata.c (mono_metadata_compute_size): Fix size calculation of
11818         HasSematics encoded fields.
11819         
11820         * metadata.c (mono_type_to_unmanaged): Improve error message for 
11821         invalid string marshalling.
11822
11823         * metadata.c: Fix warnings.
11824         
11825 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11826
11827         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
11828         profiler support.
11829
11830 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
11831
11832         * domain.c object.c domain-internals.h: Revert part of r38077 since the
11833         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
11834         tests.
11835
11836 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
11837
11838         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
11839         so methods containing these can be AOTed.
11840
11841 2005-01-03  Martin Baulig  <martin@ximian.com>
11842
11843         * loader.c (find_method): Removed the hack for generic instances.
11844         (method_from_memberref): If our parent is a generic instance, pass
11845         its generic type definition to find_method() and then inflate the
11846         method.
11847         (mono_get_method_constrained): Pass the generic type definition to
11848         find_method() and inflate the method later.
11849
11850         * class-internals.h (MonoStats): Added `generic_class_count'.
11851
11852         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
11853         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
11854
11855         * reflection.c (mono_custom_attrs_from_params): Don't ignore
11856         generic type definitions.
11857
11858 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
11859
11860         * loader.c icall.c: Fix warnings.
11861
11862 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
11863
11864         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
11865         blittable types. Fixes #70864.
11866
11867 2004-12-29  Martin Baulig  <martin@ximian.com>
11868
11869         * icall.c
11870         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
11871
11872         * reflection.c (mono_method_get_object): Create a
11873         "System.Reflection.MonoGenericMethod" for inflated methods; don't
11874         call mono_get_inflated_method().
11875
11876         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
11877
11878 2004-12-27  Martin Baulig  <martin@ximian.com>
11879
11880         * class-internals.h (MonoMethod): Added `is_inflated' flag.
11881         (MonoMethodInflated): Added `inflated' field.
11882
11883         * class.c (mono_class_inflate_generic_method): Don't really
11884         inflate the method here; just set the `is_inflated' flag in the
11885         MonoMethod.
11886         (mono_class_get_inflated_method): Actually inflate the method here
11887         if it's not already inflated; we use the MonoMethodInflated's new
11888         `inflated' field as a cache.
11889
11890 2004-12-26  Martin Baulig  <martin@ximian.com>
11891
11892         * class.c
11893         (inflate_generic_class): Moved some code out of inflate_generic_type().
11894         (mono_class_inflate_generic_method): If we're already inflated,
11895         inflate the context and use the declaring method; ie. make sure
11896         the declaring method of an inflated method is always the generic
11897         method definition.
11898         (mono_class_create_from_typedef): Create
11899         `class->generic_container->context->gclass'.
11900
11901 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
11902
11903         * metadata-internals.h, marshal.c, reflection.c: More
11904         MonoGHashTable->GHashTable.
11905
11906         * domain-internals.h, class.c: Change MonoGHashTable's into
11907         GHashTables for some cases where no gc stuff is used
11908
11909         All users: update apis
11910
11911 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
11912
11913         * metadata.c (builtin_types): Make this `const'. Makes this get
11914         put into the shareable section.
11915         (mono_metadata_init): Casts to make gcc happy.
11916
11917 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
11918
11919         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
11920
11921 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
11922
11923         * icall.c: Added an internal call to retrieve the position and length
11924         of assembly-level declarative security attributes (RequestMinimum, 
11925         RequestOptional and RequestRefuse). This is used by the Assembly class
11926         to re-create the corresponding permission sets.
11927
11928 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
11929
11930         * marshal.c: fix the stelemref wrapper to be type correct
11931         (and faster).
11932
11933 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
11934
11935         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
11936         to do key & 0x7fffffff. Hashtable already does this. It just
11937         results in longer code.
11938
11939 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
11940
11941         * appdomain.c: Bump corlib version.
11942         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
11943         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
11944         * reflection.c|h: Add functions to get declarative security infos
11945         (blob position and length) for assemblies, classes and methods.
11946
11947 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
11948
11949         * reflection.c: sort the constant table (bug #70693).
11950
11951 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
11952
11953         * object-internals.h, threads.c, domain.c: add accessors for
11954         the MonoThread and MonoDomain tls keys.
11955
11956 2004-12-18  Martin Baulig  <martin@ximian.com>
11957
11958         * class.c (inflate_generic_type): If we're inflating a generic
11959         instance, set `ngclass->context->container = context->container';
11960         ie. the container we inflated into.
11961
11962         * metadata.c (mono_metadata_parse_generic_param): Reflect above
11963         inflate_generic_type() changes.
11964
11965 2004-12-17  Martin Baulig  <martin@ximian.com>
11966
11967         * class-internals.h
11968         (MonoGenericClass): Replaced `MonoType *generic_type' with
11969         `MonoClass *generic_class'.  Removed `dynamic_info'; if
11970         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
11971         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
11972
11973 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
11974
11975         * exception.c (mono_exception_from_token): New helper function.
11976
11977 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
11978
11979         * assembly.c (mono_assembly_load_with_partial_name): Call 
11980         mono_assembly_loaded before invoking the preload hooks. Fixes
11981         #70564.
11982
11983         * object-internals.h (MonoThread): Change culture_info and 
11984         ui_culture_info into an array.
11985
11986         * threads.c: Cache culture info objects from more than one appdomain.
11987
11988         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
11989         current UI culture.
11990
11991 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
11992
11993         * threads.h threads.c appdomain.c: Clear the culture_info field of
11994         all threads during unloading if they point to an object in the dying
11995         appdomain.
11996
11997 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
11998
11999         * culture-info.h (TextInfoEntry): New struct
12000         * object-internals.h: sync with managed
12001         * locales.c: fill the `text_info_data' field
12002         * culture-info-tables.h: update
12003
12004 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
12005
12006         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
12007         collector.
12008
12009 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
12010
12011         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
12012         (ves_icall_ModuleBuilder_getMethodToken): Ditto
12013
12014 2004-12-12  Martin Baulig  <martin@ximian.com>
12015
12016         * mono-debug-debugger.c (write_type): If we're an enum and the
12017         builtin types have already been initialized, call mono_class_init().
12018
12019 2004-12-11  Martin Baulig  <martin@ximian.com>
12020
12021         * metadata.c (mono_metadata_load_generic_params): Added
12022         `MonoGenericContainer *parent_container' argument; automatically
12023         compute `container->is_method'; pass the correct owner to
12024         get_constraints().      
12025
12026         * reflection.c (compare_genericparam): Sort the GenericParam table
12027         according to increasing owners. 
12028
12029 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
12030
12031         * profiler.c: allow disabling the default profiler.
12032
12033 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
12034
12035         * decimal.c, icall.c: allow disabling System.Decimal support.
12036
12037 2004-12-09  Marek Safar <marek.safar@seznam.cz>
12038
12039         * reflection.c: Add support for null attribute arguments.
12040
12041 2004-12-09  Martin Baulig  <martin@ximian.com>
12042
12043         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
12044         names to get rid of compiler warnings.
12045
12046 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12047
12048         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
12049         mono_marshal_load_type_info (). Fixes #69625.
12050         (mono_marshal_get_ptr_to_struct): Likewise.
12051
12052 2004-12-08  Martin Baulig  <martin@ximian.com>
12053
12054         * mono-debug.h: Bumped version number to 47.
12055
12056         * mono-debug-debugger.c
12057         (mono_debugger_event_handler, mono_debugger_event): Take two
12058         guint64 arguments insteed of a gpointer and a guint32.  
12059
12060 2004-12-08  Martin Baulig  <martin@ximian.com>
12061
12062         * debug-mono-symfile.h
12063         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
12064         `address' to `native_offset'.
12065
12066 2004-12-08  Martin Baulig  <martin@ximian.com>
12067
12068         * class.c (mono_class_create_from_typespec): Only inflate if we
12069         either have `context->gclass' or `context->gmethod'.
12070
12071 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12072
12073         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
12074
12075         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
12076
12077         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
12078
12079         * reflection.c (mono_assembly_get_object): Remove the workaround put
12080         in for the release.
12081         
12082         * appdomain.c: Use the corlib_internal field from MonoAssembly.
12083
12084         * appdomain.c: Bump corlib version.
12085
12086         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
12087         be visible in other appdomains.
12088
12089 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
12090
12091         * threads.c: Interlocked inc and dec for longs were messed up,
12092         use a KISS based impl for this. Fixes 70234
12093
12094 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
12095
12096         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
12097
12098 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
12099
12100         * icall.c: fix to follow policy not to allow struct
12101         arguments in icalls.
12102
12103 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12104
12105         * process.c: make the patch that handles spaces in file paths work
12106         on mono/windows too.
12107
12108 2004-12-06  Martin Baulig  <martin@ximian.com>
12109
12110         * class.c (mono_class_create_generic): Call
12111         mono_class_setup_supertypes() if we're dynamic.
12112         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
12113
12114 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
12115
12116         * object-internals.h: Add new fields to MonoThread.
12117
12118         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12119
12120         * icall.c threads-types.h threads.c: Add new icalls.
12121
12122         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
12123
12124         * object-internals.h (MonoReflectionAssembly): Sync object layout with
12125         managed side.
12126
12127         * appdomain.c: Bump corlib version.
12128
12129         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
12130         internal assemblies. Fixes #69181.
12131
12132 2004-12-05  Martin Baulig  <martin@ximian.com>
12133
12134         * class.c (mono_class_inflate_generic_signature): Make this a
12135         no-op if `context' is NULL or we don't have any type parameters;
12136         also copy `sentinelpos'.        
12137
12138 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
12139
12140         * image.c: Add unbox_wrapper_cache.
12141
12142         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
12143
12144         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
12145         function generator.
12146         
12147         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
12148         Fixes #70173.
12149
12150         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
12151         
12152 2004-12-04  Martin Baulig  <martin@ximian.com>
12153
12154         * loader.c (mono_method_get_signature_full): New public function;
12155         like mono_method_get_signature(), but with an additional
12156         `MonoGenericContext *' argument.
12157
12158         * class.c (mono_class_inflate_generic_signature): Formerly known
12159         as inflate_generic_signature(); make this public.
12160
12161 2004-12-04  Martin Baulig  <martin@ximian.com>
12162
12163         * metadata.c
12164         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
12165         instead of a `MonoGenericContainer *'.  
12166         (mono_metadata_parse_array_full): Likewise.
12167         (mono_metadata_parse_signature_full): Likewise.
12168         (mono_metadata_parse_method_signature_full): Likewise.
12169         (mono_metadata_parse_generic_inst): Likewise.
12170         (mono_metadata_parse_generic_param): Likewise.
12171         (mono_metadata_parse_mh_full): Likewise.
12172         (mono_type_create_from_typespec_full): Likewise.
12173
12174 2004-12-03  Martin Baulig  <martin@ximian.com>
12175
12176         * class-internals.h (MonoGenericContainer): Replaced the
12177         `MonoGenericContext * pointer with a `MonoGenericContext'
12178         structure and made it the first element.
12179
12180 2004-12-03  Martin Baulig  <martin@ximian.com>
12181
12182         * class.c
12183         (inflate_generic_type): Set the `context->container' when creating
12184         a new MonoGenericContext.
12185         (mono_class_inflate_generic_method): Likewise.
12186         (mono_class_create_from_typespec): Just use `context->container'
12187         to get the container.
12188
12189         * loader.c (method_from_methodspec): Set `context->parent' from
12190         `context->container' - and if that's a method container, use its
12191         parent.  Also set the `context->container' when creating a new
12192         MonoGenericContext.
12193         (mono_get_method_from_token): Use just `context->container' to get
12194         the container.
12195
12196         * metadata.c (do_mono_metadata_parse_generic_class): Also set
12197         `gclass->context->container'.
12198
12199         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
12200         the `context->container' when creating a new MonoGenericContext.
12201
12202 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
12203
12204         * reflection.c (compare_genericparam): Sort params with identical
12205         owner by their number. Fixes gen-111 on sparc.
12206
12207 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12208
12209         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
12210         around the domain changes.
12211
12212         * appdomain.c (mono_domain_unload): Handle the case when the thread
12213         calling Unload is itself being aborted during unloading. Fixes #70022.
12214
12215         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
12216
12217         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
12218         checkpoint_func as an icall so it gets a wrapper.
12219         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
12220         in the cross-appdomain wrappers too.
12221
12222         * threads.c (mono_thread_has_appdomain_ref): Make this public.
12223
12224         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
12225
12226         * reflection.c: Fix some memory leaks.
12227         
12228 2004-12-02  Martin Baulig  <martin@ximian.com>
12229
12230         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
12231
12232         * metadata.c (generic_class_cache): New static hashtable.
12233         (mono_metadata_lookup_generic_class): New public method.
12234
12235 2004-12-02  Martin Baulig  <martin@ximian.com>
12236
12237         * class.c (mono_class_create_from_typedef): Call
12238         mono_class_setup_parent() and mono_class_create_mono_type() before
12239         parsing the interfaces.
12240
12241 2004-12-02  Martin Baulig  <martin@ximian.com>
12242
12243         * metadata.c (generic_inst_cache): New static hashtable.
12244         (mono_metadata_lookup_generic_inst): New public function.
12245         (mono_metadata_inflate_generic_inst): New public function.
12246         (mono_metadata_parse_generic_inst): New public function.
12247         (do_mono_metadata_parse_generic_class): Use the new
12248         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
12249         since this'll also use the cache.
12250
12251         * reflection.c (mono_reflection_bind_generic_method_parameters):
12252         Use mono_metadata_lookup_generic_inst() to use the new cache.
12253
12254         * class.c (inflate_mono_type): Use
12255         mono_metadata_inflate_generic_inst() to inflate a generic
12256         instance; this'll also use the new cache.
12257
12258         * loader.c (method_from_methodspec): Use
12259         mono_metadata_parse_generic_inst() and
12260         mono_metadata_inflate_generic_inst() rather than parsing it
12261         manually, so we can use the new cache.
12262
12263 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12264
12265         * threads.c (wait_for_tids): Do not incorrectly free threads when 
12266         the wait times out.
12267
12268 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
12269
12270         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
12271         iter->args based on whether parameters are passed in registers (i.e.
12272         MONO_ARCH_REGPARMS is defined)
12273
12274 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
12275
12276         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
12277         the exception message. Fixes #70070.
12278         (method_from_methodspec): Fix warnings.
12279
12280 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12281
12282         * process.c: (complete_path) return the path quoted
12283
12284 2004-12-01  Martin Baulig  <martin@ximian.com>
12285
12286         * class-internals.h (MonoGenericInst): New structure.
12287         (MonoGenericClass): Replaced `type_argc', `type_argv' and
12288         `is_open' with `MonoGenericInst *inst'.
12289         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
12290         `is_open' with `MonoGenericInst *inst'.
12291
12292 2004-11-30  Martin Baulig  <martin@ximian.com>
12293
12294         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
12295
12296         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
12297         to `generic_class_cache'.
12298
12299         * metadata.c
12300         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
12301         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
12302         (mono_generic_inst_is_valuetype): Renamed to
12303         mono_generic_class_is_valuetype().
12304
12305         * class-internals.h
12306         (MonoGenericInst): Renamed to MonoGenericClass.
12307         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
12308         (MonoClass): Renamed `generic_inst' to `generic_class'.
12309         (MonoGenericContext): Renamed `ginst' to `gclass'.
12310
12311         * object-internals.h
12312         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
12313
12314         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
12315         mono_reflection_generic_class_initialize().
12316
12317         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
12318         now known as "System.Reflection.MonoGenericClass".
12319         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
12320
12321 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
12322
12323         * class-internals.h: Added a flag field to MonoClass to cache the
12324         declarative security attributes actions associated with the class.
12325         * domain-internals.h: Added booleans to MonoJitInfo to cache the
12326         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
12327         applicable to the JITted method.
12328         * reflection.c|h: Added functions to extract (as flags) which security
12329         actions are available (declaratively) for a method, class or assembly.
12330         * metadata.c|h: Added functions to search the declarative security
12331         table in the metadata.
12332         
12333 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
12334
12335         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
12336         EXPORTEDTYPES are already in the class name cache, so there is no
12337         need to add extra code here to look at them. Just removes a bit of
12338         cruft.
12339
12340         (ves_icall_System_Environment_get_TickCount): No need for #if
12341         WINDOWS. We already have the code in io-layer.
12342
12343 2004-11-28  Martin Baulig  <martin@ximian.com>
12344
12345         * loader.c
12346         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
12347         Fixes gen-112.cs.
12348
12349 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
12350
12351         * assembly.c (do_mono_assembly_open): Instead of having a
12352         conditional WITH_BUNDLE, incorporate support for bundles here, by
12353         having a global `bundles' variable holding a pointer to the actual
12354         bundles. 
12355
12356         (mono_register_bundled_assemblies): New API call used by the
12357         bundle code. 
12358
12359         See mkbundle.1 for details.
12360         
12361 2004-11-27  Martin Baulig  <martin@ximian.com>
12362
12363         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
12364         the vtable for generic methods.
12365
12366 2004-11-26  Martin Baulig  <martin@ximian.com>
12367
12368         * metadata.c
12369         (mono_metadata_generic_method_hash): New public function.
12370         (mono_metadata_generic_method_equal): Likewise.
12371
12372         * class-internals.h
12373         (MonoGenericContainer): Added `GHashTable *method_hash'.
12374
12375         * reflection.c (ReflectionMethodBuilder): Added
12376         `MonoGenericContainer *generic_container'.
12377         (reflection_methodbuilder_to_mono_method): Don't create a new
12378         MonoGenericContainer each time we're called.
12379         (mono_reflection_bind_generic_method_parameters): Use
12380         `container->method_hash' to cache the results so we don't create a
12381         different method if we're called several times with the same
12382         arguments.
12383
12384         * loader.c (method_from_methodspec): Use the new
12385         `container->method_hash' here, too.
12386
12387 2004-11-26  Martin Baulig  <martin@ximian.com>
12388
12389         * class.c (inflate_generic_signature): Correctly compute
12390         `res->has_type_parameters'.
12391         (mono_class_vtable): Use the `has_type_parameters' flag to
12392         determine whether we're a generic method.
12393
12394         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
12395
12396 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
12397
12398         * object.c (mono_runtime_run_main): Fix a small memory leak.
12399
12400 2004-11-25  Martin Baulig  <martin@ximian.com>
12401
12402         * class.c (set_generic_param_owner): Fixed the loop.
12403
12404 2004-11-25  Martin Baulig  <martin@ximian.com>
12405
12406         * object.c (mono_class_vtable): Don't create any JIT wrappers for
12407         generic methods.
12408
12409 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
12410
12411         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
12412         names. Fixes #69787.
12413
12414 2004-11-24  Martin Baulig  <martin@ximian.com>
12415
12416         * class.c (mono_class_create_generic_2): If we don't have a
12417         `ginst->parent', inflate `gklass->parent' to get our parent.
12418
12419 2004-11-24  Martin Baulig  <martin@ximian.com>
12420
12421         * reflection.c (compare_genericparam): Correctly sort the
12422         GenericParam table; fixes #69779.
12423
12424 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
12425
12426         * reflection.c: When writing a PE file, don't create a huge
12427         buffer in memory. Just write the arrays we have to the file.
12428         This reduces memory usage.
12429
12430         * metadata-internals.h: MonoDynamicStream pefile is no longer used
12431         globally.
12432
12433 2004-11-17  Martin Baulig  <martin@ximian.com>
12434
12435         * class.c (mono_class_init): Don't setup `class->parent' for
12436         dynamic instances; moved this to mono_class_generic_2().
12437         (mono_class_create_generic): Also set `klass->inited' for dynamic
12438         generic instances.
12439         (mono_class_create_generic_2): Don't do anything for dynamic
12440         generic instances.  Set `klass->parent' here and also call
12441         mono_class_setup_parent() here. 
12442
12443         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
12444         `MonoType *parent' argument; set `ginst->parent' before calling
12445         mono_class_create_generic_2(), so we set the correct parent.
12446
12447 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
12448
12449         * reflection.c: allow getting attributes from ModuleBuilder
12450         (used by ikvm).
12451
12452 2004-11-17  Martin Baulig  <martin@ximian.com>
12453
12454         * class.c (mono_class_create_from_typedef): If a type parameter is
12455         inherited from an outer class, set its owner to that class.
12456
12457 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
12458
12459         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
12460           for (int*) written size. This fixes bug #69592.
12461
12462 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
12463
12464         * icall.c: Added IsAuthenticodePresnet internal call.
12465         * image.c|h: New function that check a MonoImage for an Authenticode
12466         signature in the certificate PE data directory.
12467         * security.c|h: New internal call to ask the runtime if an 
12468         Authenticode signature seems referenced in the PE header.
12469
12470 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
12471
12472         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
12473
12474         * reflection.c (mono_image_create_pefile): Free the assembly streams
12475         after writing out the assembly file.
12476
12477         * object.c (mono_runtime_run_main): Fix small memory leak.
12478
12479         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
12480         property access modifiers. Fixes #69389.
12481
12482 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
12483
12484         * domain.c, object.c, object-internals.h, domain-internals.h,
12485         object.h, marshal.c: keep dynamic code info per domain.
12486
12487 2004-11-15  Martin Baulig  <martin@ximian.com>
12488
12489         * class.c (mono_type_get_name_recurse): Put type arguments in
12490         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
12491         see bug #68387.
12492
12493 2004-11-15  Martin Baulig  <martin@ximian.com>
12494
12495         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
12496         (mono_class_setup_vtable): When computing `the_cname' for a
12497         generic instance, don't include the namespace since we'd otherwise
12498         add it twice.
12499
12500 2004-11-15  Martin Baulig  <martin@ximian.com>
12501
12502         * class.c (mono_class_create_generic): Changed return type to void.
12503         (mono_class_create_generic_2): New public function; setup
12504         `class->method', `class->field' and `class->interfaces' here
12505         instead of in mono_class_init().
12506
12507         * class.h (mono_class_create_generic): Moved to class-internals.h.
12508
12509 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
12510
12511         * reflection.c (mono_image_create_pefile): take a file HANDLE.
12512         rather than writing to memory, write to this file. Right now,
12513         we are just writting into a buffer, and copying that. However
12514         we can avoid the buffer later.
12515
12516         (mono_dynamic_stream_reset): new function
12517
12518         * icall.c, object-internals.h: update for the above.
12519
12520 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
12521
12522         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
12523         have been using gc'd memory. First it is slower, unlikely
12524         the comment in the source code said, secondly, it increases
12525         our footprint to do it in the gc.
12526
12527         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
12528         the method so that it does not have to copy to managed code.
12529
12530 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
12531
12532         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
12533
12534 2004-11-12  Martin Baulig  <martin@localhost>
12535
12536         * reflection.c (mono_image_create_token): Allow generic method
12537         definitions here, since they may appear in an `.override'; see
12538         gen-98/gen-99 for an example.
12539
12540 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
12541
12542         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
12543         #69365.
12544
12545         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
12546         descriptive.
12547
12548 2004-11-11  Martin Baulig  <martin@ximian.com>
12549
12550         * class.c (mono_class_setup_vtable): In an explicit interface
12551         implementation, the method name now includes the arity.
12552
12553 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
12554
12555         * object.c (mono_array_full_copy): Fix warning.
12556
12557 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
12558
12559         * appdomain.c: Removed look_for_method_by_name(). Use the new method
12560         mono_class_get_method_from_name() instead.
12561         
12562         * class-internals.h: Added two new types of wrappers. 
12563         Added MonoRemotingTarget enum. Added new trampoline function type, which
12564         takes an additional MonoRemotingTarget value as parameter, so it is
12565         possible to request a trampoline for a specific target.
12566         
12567         * class.c: Added new mono_class_get_method_from_name() method.
12568         
12569         * class.h: In MonoRemoteClass, we can have now to vtables, one for
12570         general remoting sinks and one specific for cross domain calls.
12571         
12572         * debug-helpers.c: Added new wrapper names.
12573         
12574         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
12575         of a remote class.
12576         
12577         * image.c: Porperly delete value objects form the remoting invoke hashtable.
12578         
12579         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
12580         with several other methods (mono_marshal_get_xappdomain_dispatch,
12581         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
12582         and others) can generate a fast remoting wrapper for cross domain calls.
12583         More information can be found in docs/remoting.
12584         Other changes: Removed mono_find_method_by_name, and used
12585         mono_class_get_method_from_name instead.
12586         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
12587         is stored in the remoting invoke hashtable.
12588         
12589         * marshal.h: published the new method for getting the xdomain wrapper,
12590         and also added a method for getting the adequate wrapper for a given
12591         method and target.
12592         
12593         * object-internals.h, object.c: Added a couple of methods for capying and
12594         cloning arrays.
12595         Modified mono_install_remoting_trampoline, which takes the new remoting
12596         trampoline that has a remoting target as parameter.
12597         mono_class_proxy_vtable now also takes a remoting target as parameter, and
12598         will return the most suitable vtable for the target.
12599         Added mono_remote_class_vtable, which returns the vtable of a remote class
12600         (which can be the normal remoting vtable or the xdomain vtable).
12601         
12602         * threads.c: the xdomain invoke and dispatch wrappers must also be
12603         protected against interruptions.
12604
12605 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12606
12607         * icall.c: use memmove in BlockCopyInternal when the source and
12608         destination arrays are the same.
12609
12610 2004-11-09  Martin Baulig  <martin@ximian.com>
12611
12612         * class-internals.h (MonoGenericContainer): Removed `method' and
12613         `signature', replaced them with `is_method' and `is_signature'
12614         flags.  Added `context'.
12615
12616         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
12617         instead of a `MonoGenericContainer *'.
12618
12619         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
12620         for dynamic type parameters.
12621         (mono_metadata_load_generic_params): Setup `container->context'.
12622
12623         * reflection.c (mono_reflection_setup_generic_class): Setup
12624         `tb->generic_container->context'.
12625         (do_mono_reflection_bind_generic_parameters): Use
12626         mono_class_inflate_generic_type() to correctly inflate types,
12627         rather than using our own hack just for MONO_TYPE_VAR.
12628
12629 2004-11-09  Martin Baulig  <martin@ximian.com>
12630
12631         * class.c (mono_class_inflate_generic_method): Small fix; don't
12632         crash here.
12633
12634         * icall.c
12635         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
12636         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
12637         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
12638         (ves_icall_Type_BindGenericParameters): Likewise.
12639         (ves_icall_Type_get_IsGenericInstance): Likewise.
12640         (ves_icall_Type_GetGenericParameterPosition): Likewise.
12641         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
12642         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
12643         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
12644
12645 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
12646
12647         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
12648         assembly versions and public key tokens. Fixes #69113.
12649
12650 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
12651
12652         * metadata.c: fix bug introduced with the type cache changes
12653         on 2004-11-06.
12654
12655 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
12656
12657         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
12658         the MonoClass pointer instead of the token in exception clauses.
12659         * reflection.c: updates for the above and make the code not depend
12660         on the structure of MonoExceptionClause.
12661
12662 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
12663
12664         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
12665         Add support for dynamic assemblies. Fixes #69114.
12666
12667         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
12668
12669 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
12670
12671         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
12672         since most only those methods use it. the code member of
12673         MonoMethodPInvoke was dead, so that can be removed too. Also,
12674         remove inline_count (again, not used), and move slot so that it
12675         can share bits with some other flags. This saves 8 bytes in the
12676         structure and gives us about 50 kb back for mcs helloworld.cs
12677
12678         * *.[ch]: Do naming changes for the above.
12679
12680         * loader.c (mono_method_get_header): Lazily init the header
12681         on first access.
12682         (mono_get_method_from_token): don't init the header here
12683         (mono_free_method): the header may never be allocated
12684
12685         Overall, this saves 150 kb of unmanaged allocations
12686         for mcs helloworld.cs. That accounts for 10% of the unmanaged
12687         memory at runtime.
12688         
12689         * loader.c, loader.h (mono_method_get_header): new accessor.
12690
12691         * *.[ch]: use the above method. Prepares us to lazily load
12692         the header.
12693
12694         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
12695         three warnings, which are actual bugs (see 69206).
12696
12697         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
12698         unused. Saves a cool 4 bytes / method.
12699
12700 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
12701
12702         * metadata.c (builtin_types): Add types for System.Object here.
12703         (mono_metadata_parse_type_full): Cache MonoType*'s that are
12704         for a class or valuetype from klass->this_arg or klass->byval_arg.
12705
12706         On mcs for a hello world, this gets us down from 21836 MonoType's
12707         to 14560.
12708
12709         (mono_metadata_free_type): Account for the above change.
12710
12711 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
12712
12713         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
12714         exception instead of asserting if name is null.
12715         (ves_icall_System_AppDomain_GetData): Ditto.
12716
12717 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
12718
12719         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
12720         EnumBuilder.
12721
12722         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
12723         Return NULL when the domain does not have entry_assembly set.
12724
12725         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
12726         Add a 'resource_modules' argument.
12727         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
12728
12729         * reflection.c (mono_reflection_create_runtime_class): Move setting
12730         of wastypebuilder here, so mono_get_type_object () returns a MonoType
12731         for enums too.
12732
12733         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
12734         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
12735         Throw an ArgumentNullException if 'ptr' is null.
12736
12737         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
12738         assemblies here. Fixes #69020.
12739
12740 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
12741
12742         * reflection.c (build_compressed_metadata): Fix the previous patch for
12743         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
12744         the stack.
12745
12746 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
12747
12748         * assembly.c (mono_assembly_names_equal): Allow a match if one of
12749         the cultures is false. Fixes #69090.
12750
12751         * reflection.c (build_compressed_metadata): Fix invalid memory read 
12752         detected by valgrind.
12753         
12754         * reflection.c (mono_reflection_get_type): Avoid triggering a 
12755         TypeResolve multiple times for the same type. Fixes #65577.
12756
12757 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
12758
12759         * marshal.c: Avoid using ldftn to call managed functions. It is
12760         much slower than just a call.
12761
12762         * reflection.c (mono_module_get_object): free the basename we
12763         allocate here from glib.
12764         
12765         * reflection.c (ensure_runtime_vtable): make sure to free
12766         overrides.  Also, we were allocating an array of MonoMethod not an
12767         array of MonoMethod*.
12768
12769         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
12770
12771         * image.c (mono_image_close): free image->guid here.
12772
12773 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
12774
12775         * reflection.c: Fix some spec conformance issues with the PE file
12776         structures so mcs compiled apps run on the Net 2.0 beta.
12777
12778 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
12779
12780         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
12781         Implement this. Fixes #67264.
12782
12783         * debug-helpers.h debug-helpers.c marshal.c: Move 
12784         mono_find_method_by_name to debug-helpers.c.
12785
12786 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
12787
12788         * object.c (mono_release_type_locks): type_initialization_hash is
12789         a GHashTable.
12790
12791         * reflection.c object.c object-internals.h: Fix warnings.
12792
12793         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
12794         without accessors. Fixes #61561.
12795
12796         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
12797         application base from the root domain if not set. Fixes #65641.
12798         (mono_runtime_init): Fix warning.
12799
12800 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12801
12802         * appdomain.c: call mono_thread_pool_init.
12803         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
12804         of worker threads based on the number of CPUs and the environment
12805         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
12806         for non-windows (windows) systems.
12807
12808 2004-10-27  Chris Toshok  <toshok@ximian.com>
12809
12810         * mono-debug-debugger.c (write_class): don't call mono_class_init
12811         here, as even with the check for (!klass->init_pending), we get
12812         into a situation where we're hitting cycles in class
12813         initialization.  Fixes #68816.
12814
12815 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
12816
12817         * image.c: Avoid overwriting values in the loaded_images_hash when an
12818         assembly is loaded multiple times. Fixes #61152.
12819
12820         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
12821         so multiple satellite assemblies for the same name can be loaded.
12822         Fixes #68259.
12823
12824         * mono_domain_assembly_preload: Actually return the loaded assembly, 
12825         not NULL.
12826
12827         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
12828         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
12829
12830         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
12831         pending finalizers are not invoked after the appdomain has been 
12832         unloaded. Fixes #67862.
12833
12834 2004-10-22  Martin Baulig  <martin@ximian.com>
12835
12836         * mono-debug-debugger.c
12837         (mono_debugger_runtime_invoke): Don't box valuetypes.
12838
12839 2004-10-22  Chris Toshok  <toshok@ximian.com>
12840
12841         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
12842         don't hide private methods.
12843
12844 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
12845
12846         * icall.c: Allows the runtime to "share" (when known) the public key
12847         token of an assembly. This avoid the need to recalculate the token 
12848         (from the public key) in managed code.
12849
12850 2004-10-21  Chris Toshok  <toshok@ximian.com>
12851
12852         * debug-helpers.c (append_class_name): argh, revert last patch.
12853         
12854 2004-10-21  Chris Toshok  <toshok@ximian.com>
12855
12856         * debug-helpers.c (append_class_name): use '+' as the delimiter,
12857         not '/', so that it matches what the debugger uses to look up
12858         methods.
12859
12860 2004-10-21  Martin Baulig  <martin@ximian.com>
12861
12862         * mono-debug-debugger.c (mono_debugger_throw_exception): New
12863         public method; this is called each time an exception is thrown and
12864         allows the debugger to use exception catch points.
12865
12866 2004-10-21  Martin Baulig  <martin@ximian.com>
12867
12868         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
12869         the stack pointer and the exception object in some struct and pass
12870         that to the debugger.
12871
12872 2004-10-21  Chris Toshok  <toshok@ximian.com>
12873
12874         * mono-debug-debugger.c (do_write_class): add instance/static
12875         event support.  We don't expose "raise" or "other" yet.
12876         (event_is_static): new method.
12877
12878 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
12879
12880         * mono-debug-debugger.c
12881         (mono_debugger_handle_exception): Remove
12882         bogus return value for fussy compilers.
12883
12884 2004-10-20  Martin Baulig  <martin@ximian.com>
12885
12886         * mono-debug-debugger.c
12887         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
12888         (mono_debugger_handled_exception): Likewise.
12889
12890 2004-10-20  Martin Baulig  <martin@ximian.com>
12891
12892         * mono-debug-debugger.h (MonoDebuggerEvent): Added
12893         MONO_DEBUGGER_EVENT_EXCEPTION.
12894
12895         * mono-debug-debugger.c (mono_debugger_handle_exception): New
12896         public function to send the debugger a notification for an
12897         exception and inform it about a catch/finally clause.
12898
12899 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
12900
12901         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
12902         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
12903         fix 2.95 build. 
12904
12905         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
12906
12907 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
12908
12909         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
12910         marshalled as [In,Out]. Fixes #58325.
12911
12912 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
12913
12914         * reflection.c (mono_method_body_get_object): Implement some fields.
12915
12916 2004-10-12  Martin Baulig  <martin@ximian.com>
12917
12918         * reflection.c (mono_reflection_bind_generic_parameters): Small
12919         fix, correctly retrieve our parent from a generic instance.
12920
12921 2004-10-12  Martin Baulig  <martin@ximian.com>
12922
12923         * metadata.c (mono_metadata_generic_param_equal): We always have
12924         an owner.
12925
12926         * class.c
12927         (mono_class_from_generic_parameter): We need to have an owner.
12928         (my_mono_class_from_generic_parameter): Likewise.
12929
12930         * reflection.c (mono_reflection_setup_generic_class): Renamed to
12931         mono_reflection_create_generic_class() and added a new
12932         mono_reflection_setup_generic_class().  
12933         (mono_reflection_initialize_generic_param): If we're a nested
12934         generic type and inherited from the containing class, set our
12935         owner to the outer class.
12936
12937 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
12938
12939         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
12940
12941         * reflection.c (mono_method_body_get_object): New function to create
12942         a MethodBody object.
12943
12944         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
12945
12946 2004-10-11  Martin Baulig  <martin@ximian.com>
12947
12948         * metadata.c (_mono_metadata_type_equal): Renamed to
12949         do_mono_metadata_type_equal() and made static.
12950
12951 2004-10-11  Martin Baulig  <martin@ximian.com>
12952
12953         * appdomain.c: Bump corlib version number to 28.
12954
12955 2004-10-10  Martin Baulig  <martin@ximian.com>
12956
12957         * class-internals.h
12958         (MonoGenericInst): Added `MonoGenericContainer *container'.
12959         (MonoGenericMethod): Likewise.
12960         (MonoGenericContext): Likewise.
12961         (MonoGenericParam): Added `MonoGenericContainer *owner'.
12962
12963         * metadata.c
12964         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
12965         (do_mono_metadata_parse_generic_inst): Likewise.
12966         (mono_metadata_parse_type_full): New public method.  This is the actual
12967         mono_metadata_parse_type() implementation - with an additional
12968         `MonoGenericContainer *' argument.
12969         (mono_metadata_parse_array_full): Likewise.
12970         (mono_metadata_parse_signature_full): Likewise.
12971         (mono_metadata_parse_method_signature_full): Likewise.
12972         (mono_metadata_parse_mh_full): Likewise.
12973         (mono_type_create_from_typespec): Likewise.
12974         (mono_metadata_interfaces_from_typedef_full): New public method;
12975         this is similar to the other _full() methods, but we take a
12976         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
12977         (mono_metadata_parse_generic_param): Take an additional
12978         `MonoGenericContainer *' argument and lookup the MonoGenericParam
12979         from that container.
12980         (mono_metadata_generic_param_equal): New static method to compare
12981         two type parameters.
12982         (_mono_metadata_type_equal): New static method; takes an
12983         additional `gboolean signature_only' argument - if true, we don't
12984         compare the owners of generic parameters.
12985         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
12986         with a TRUE argument - do a signature-only comparision.
12987
12988         * loader.c: Use the new _full() methods and pass the
12989         MonoGenericContainer to them.
12990
12991         * object-internals.h (MonoReflectionTypeBuilder): Added
12992         `MonoGenericContainer *generic_container' field.
12993         (MonoReflectionMethodBuilder): Likewise.
12994
12995 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
12996
12997         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
12998         case initial images of dynamic assemblies.
12999
13000         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
13001
13002         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
13003
13004         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
13005         length of event->other array.
13006         (typebuilder_setup_events): Ditto.
13007
13008         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
13009         'assembly_by_name' and add an 'assemblies' list.
13010
13011         * assembly.h assembly.c: Add a new search hook for determining whenever
13012         an assembly is already loaded. Use this instead of searching in the
13013         loaded_assemblies list.
13014
13015         * domain.c appdomain.c: Implement the new search hook so loaded 
13016         assemblies are now scoped by appdomain. Fixes #67727.
13017
13018 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
13019
13020         * threads.c (mono_thread_attach): Initialize synch_lock field so
13021         mono_thread_detach works again.
13022
13023         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
13024         'lib' too. Fixes #63130.
13025
13026 2004-10-06  Jackson Harper  <jackson@ximian.com>
13027
13028         * culture-info-tables.h: regenerated.
13029
13030 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
13031
13032         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
13033         implemented by other interfaces in the result. Fixes #65764.
13034         
13035         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13036         Handle unloadable modules without crashing.
13037
13038         * image.c (load_modules): Revert the previous patch since modules must
13039         have a fixed index inside the array.
13040         
13041         * image.c (load_modules): Don't include native modules in the modules
13042         array.
13043
13044 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13045
13046         * reflection.h: Add param_defaults field.
13047
13048         * reflection.c: Add support for parameter defaults in dynamic methods.
13049         Fixes #64595.
13050
13051         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
13052         an empty string when a type has no namespace. Fixes #64230.
13053
13054 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
13055
13056         * tabledefs.h: Added "internal" security actions to support non-CAS
13057         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
13058         Note: they do not seems to be used anymore in 2.0 (new metadata format)
13059
13060 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
13061
13062         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
13063         constructor of abstract class. Fixes #61689.
13064
13065 2004-10-04  Martin Baulig  <martin@ximian.com>
13066
13067         * class-internals.h (MonoGenericContainer): New type.
13068         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
13069         `MonoGenericContainer *generic_container'.
13070         (MonoClass): Replaced `gen_params' and `num_gen_params' with
13071         `MonoGenericContainer *generic_container'.
13072
13073         * metadata.c (mono_metadata_load_generic_params): Return a
13074         `MonoGenericContainer *' instead of a `MonoGenericParam *';
13075         removed the `num' argument.
13076
13077 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13078
13079         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
13080         for dynamic images.
13081
13082         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
13083         machine fields.
13084
13085         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
13086
13087         * reflection.c: Save pe_kind and machine values into the generated
13088         image file.
13089
13090         * appdomain.c: Bump corlib version number.
13091
13092         * object-internals.h: Reorganize layout of LocalBuilder.
13093
13094         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
13095         New helper function.
13096
13097         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
13098         created MonoType for dynamic types. Fixes #66180.
13099
13100 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
13101
13102         * threadpool.c: the ares hashtable needs a critical section around it.
13103         this prevents some nasty segfaults
13104
13105 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13106
13107         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
13108         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
13109         bug 67324).
13110         
13111 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13112
13113         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
13114         
13115 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13116
13117         * image.c: Always canonicalize image file names, to avoid loading
13118         the same assembly twice when referenced using a relative path.
13119
13120 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
13121
13122         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
13123
13124         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
13125
13126         * marshal.c: Fix warnings.
13127
13128 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
13129
13130         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
13131         attempting to marshal the delegate_trampoline as the method_addr.
13132         This patch has a static hashtable of marshalled delegates so that 
13133         we can map delegate_trampoline addresses back to delegates.  This
13134         allows a delegate passed to managed code to be passed back into native
13135         code.  Fixes #67039
13136
13137 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13138
13139         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
13140
13141         * reflection.c (method_encode_code): Align method headers properly.
13142         Fixes #66025.
13143
13144 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13145
13146         * marshal.c: In the runtime invoke wrapper, reset the abort
13147         exception if it is cached. This avoids the automatic rethrowal of 
13148         the exception after the catch of the wrapper. Also check for pending
13149         interruptions before calling the managed method. This is done using
13150         the new method emit_thread_force_interrupt_checkpoint, since the
13151         normal checkpoint method is ignored when running the invoke wrapper.
13152         * object.c: If the abort exception is rethrown, set the abort_exc
13153         field of the thread, so it will be rethrown aftere every catch.
13154         * threadpool.c: Only run an interruption checkpoint if what has been
13155         requested is a stop of the thread (aborts will be ignored).
13156         * threads.c: By default, a thread will now never be interrumped while
13157         running the runtime invoke wrapper (this ensures that runtime_invoke
13158         will always return to the caller if an exception pointer is provided).
13159         There is a new special method mono_thread_force_interruption_checkpoint()
13160         to force an interruption checkpoint even if running a protected
13161         wrapper, which is used by the same runtime invoke wrapper to do a check
13162         at a safe point.
13163
13164 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13165
13166         * object.c, object-internals.h: Implemented mono_release_type_locks,
13167         which releases the cctor locks held by a thread.
13168         * threads.c, threads.h: In thread_cleanup, release cctor locks held
13169         by a thread. Added mono_thread_exit() method to be used to safely stop
13170         a thread.
13171
13172 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13173
13174         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
13175         Move null check before dereference.  Avoid indexing beyond the end
13176         of the 'modules' array.
13177
13178 2004-09-28  Raja R Harinath  <rharinath@novell.com>
13179
13180         * metadata-internals.h (MonoImage): Add module_count field.
13181         * image.c (load_modules): Set image->module_count.
13182         (mono_image_load_file_for_image): Use image->module_count.
13183         * reflection.c (mono_image_load_module): Append to image->modules array 
13184         of dynamic assembly.
13185         (mono_module_get_object): Fix loop to actually increment index.
13186         Use image->module_count.
13187         * assembly.c (mono_assembly_load_references): Use image->module_count.
13188         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
13189         Likewise.
13190
13191 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13192
13193         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
13194         Avoid assert on generic types.
13195
13196 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
13197
13198         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
13199
13200         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
13201
13202         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
13203         function to convert a MarshalSpec structure to its managed counterpart.
13204
13205         * reflection.c: Fix warnings.
13206         
13207         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
13208         field.
13209
13210         * icall.c (mono_create_icall_signature): Fix build.
13211
13212 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13213
13214         * icall.c: Add MakePointType icall.
13215
13216         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
13217         warnings.
13218
13219 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13220
13221         * threadpool.c: reuse allocated slots in the queue.
13222
13223 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13224
13225         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
13226
13227         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
13228
13229         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
13230         previous change.
13231
13232         * tabledefs.h: Add constants for pinvoke attributes BestFit and
13233         ThrowOnUnmappableChar.
13234
13235         * icall.c (ves_icall_Type_GetPacking): New icall.
13236
13237 2004-09-24  Martin Baulig  <martin@ximian.com>
13238
13239         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
13240
13241 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13242
13243         * appdomain.c:
13244         (mono_domain_set): allow setting a domain that is being unloaded.
13245         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
13246         being unloaded.
13247
13248 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13249
13250         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
13251         the GetCustomAttributes icall.
13252
13253 2004-09-23  Martin Baulig  <martin@ximian.com>
13254
13255         * object-internals.h (MonoReflectionGenericParam): Replaced
13256         'has_ctor_constraint', `has_reference_type' and `has_value_type'
13257         with `guint32 attrs'.
13258
13259 2004-09-23  Martin Baulig  <martin@ximian.com>
13260
13261         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
13262
13263 2004-09-23  Martin Baulig  <martin@ximian.com>
13264
13265         * object-internals.h (GenericParameterAttributes): New enum.
13266
13267 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13268
13269         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
13270         
13271         * class.c (init_events): Fill out event->other field.
13272
13273         * class.c: Fix warnings.
13274
13275         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
13276
13277 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
13278
13279         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
13280         walk which doesn't supply the IL offset.
13281
13282 2004-09-22  Martin Baulig  <martin@ximian.com>
13283
13284         * reflection.c (mono_reflection_setup_internal_class): If we're
13285         System.ValueType, System.Object or System.Enum, set
13286         `klass->instance_size' and create the vtable.
13287         (mono_reflection_create_internal_class): If we're an enum type,
13288         get the base class from our current corlib.
13289
13290 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
13291
13292         * reflection.h (MonoResolveTokenError): New type.
13293
13294         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
13295         icall.
13296
13297         * icall.c: Add an 'error' argument to the ResolveToken icalls.
13298
13299 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
13300
13301         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
13302         Support also calling constructors, but only for already allocated objects.
13303
13304 2004-09-17  Geoff Norton <gnorton@customerdna.com>
13305
13306         * reflection.c (type_get_qualified_name): If the klass is null
13307         return the typename to avoid a NullRefEx.
13308         (encode_cattr_value): Get the qualified name of the boxed type,
13309         not the underlying enumtype.  Fixes #62984.
13310
13311 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
13312
13313         * marshal.c: Fix problems with previous checkin.
13314
13315 2004-09-21    <vargaz@freemail.hu>
13316
13317         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
13318         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
13319
13320         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
13321
13322 2004-09-21  Geoff Norton <gnorton@customerdna.com>
13323
13324         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
13325         should only return a type for pointers, arrays, and passbyref types.
13326         Fixes bug #63841.
13327
13328 2004-09-21  Martin Baulig  <martin@ximian.com>
13329
13330         * domain.c (mono_debugger_check_runtime_version): New public
13331         function.
13332
13333         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
13334
13335 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
13336
13337         * reflection.c: Added missing sort to the declarative security 
13338         attributes table. MS implementation stops seeing the attributes if the
13339         token number regress in the table (as shown by ildasm and permview).
13340
13341 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
13342
13343         * object-internals.h (MonoReflectionModule): Add 'token' field.
13344         
13345         * reflection.c (mono_reflection_get_token): Add support for Module
13346         and Assembly.
13347         (mono_module_get_object): Set 'token' field.
13348         (mono_module_file_get_object): Set 'token' field.
13349
13350         * icall.c: Add new Assembly and Module icalls.
13351
13352         * appdomain.c: Bump corlib version.
13353
13354 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
13355
13356         * loader.h loader.c class.h class.c: Add helper functions for obtaining
13357         tokens of metadata objects.
13358
13359         * reflection.h reflection.c (mono_reflection_get_token): New function
13360         to obtain the token of a metadata object.
13361
13362         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
13363
13364 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
13365
13366         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
13367         
13368         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
13369
13370 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
13371
13372         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
13373         * object-internals.h: Added 3 MonoArray* members to MonoReflection
13374         AssemblyBuilder to access the permissions set in the class lib.
13375         * reflection.c: Added security attributes encoding step in 
13376         mono_image_build_metadata.
13377         * tabledefs.h: Added new security actions defined in 2.0:
13378         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
13379
13380 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
13381
13382         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
13383         macro parameter.
13384
13385 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
13386  
13387         * locales.c: nullify the ICU_collator member of CompareInfo when it is
13388           finalized. There where random SIGSEVs at program termination, when
13389           an object being finalized was trying to do a string comparison and
13390           the current culture was already finalized.
13391  
13392 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13393
13394         * threads.c: call thread_cleanup before finishing the thread if we get
13395         there.
13396
13397 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
13398
13399         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
13400         assemblies from the parent. Fixes #65665.
13401
13402 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
13403
13404         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
13405         modifiers.
13406
13407 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
13408
13409         * reflection.h: add prototype for mono_get_dbnull_object
13410         * reflection.c: add prototypes for get_default_param_value_blobs 
13411         and mono_get_object_from_blob for fussier compilers
13412
13413 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
13414  
13415         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
13416         false deadlock checks in class initialization.
13417  
13418 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
13419
13420         * image.c (mono_image_addref): Fix comment.
13421
13422         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
13423         possible.
13424
13425 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
13426
13427         * reflection.c (mono_param_get_objects): Modified to return
13428         ParameterInfo.DefaultValue object.
13429
13430         (get_default_param_value_blobs):
13431         (mono_get_object_from_blob):
13432         (mono_get_dbnull_object): New helper routines. 
13433
13434         * object.c (mono_get_constant_value_from_blob): New helper routine
13435         carved out from get_default_field_value ()
13436
13437         * object-internals.h (mono_get_constant_value_from_blob): Added
13438         function declaration.
13439
13440 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13441
13442         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
13443         referenced assemblies. Fixes #62135.
13444
13445         * exception.h exception.c (mono_get_exception_file_not_found2): New
13446         helper function.
13447
13448 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
13449
13450         * class.h class.c: Add mono_type_get_underlying_type ().
13451
13452 2004-09-09  Geoff Norton <gnorton@customerndna.com>
13453
13454         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
13455         Fix GetTypes() to support dynamically created assemblies.
13456
13457 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
13458
13459         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
13460         
13461         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
13462         previous patch.
13463
13464         * reflection.h reflection.c loader.c: Allow dynamic construction of
13465         pinvoke methods. Fixes #65571.
13466         
13467         * reflection.c (mono_reflection_get_type): Revert previous change since
13468         it causes regressions.
13469
13470 2004-09-08  Martin Baulig  <martin@ximian.com>
13471
13472         * class.c (class_compute_field_layout): Don't call
13473         mono_class_layout_fields() for open generic instances.
13474
13475 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
13476         * threads.c appdomain.c: fix typo in GC macro
13477
13478 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13479
13480         * threads.c: don't call mono_thread_detach() in start_wrapper(),
13481         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
13482
13483 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
13484
13485         * image.c (mono_image_close): Applied patch from 
13486         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
13487         assembly is loaded multiple times from data.
13488         
13489         * image.c (mono_image_open): Fix warning.
13490
13491 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
13492
13493         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
13494         once. Fixes #58334.
13495         
13496         * reflection.c (mono_reflection_create_runtime_class): Initialize
13497         klass->nested_classes. Fixes #61224.
13498
13499 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
13500
13501         * threads.c: sched_yield() on exit, to allow threads to quit.
13502
13503 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
13504
13505         * object.c (mono_unhandled_exception): Remove leftover debug code.
13506
13507 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
13508
13509         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
13510
13511 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
13512
13513         * marshal.c (emit_marshal_array): Really null terminate string arrays.
13514         
13515         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
13516
13517 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13518
13519         * marshal.c (emit_marshal_array): Null terminate string arrays.
13520         
13521         * marshal.c (raise_auto_layout_exception): Fix warning.
13522
13523         * reflection.c (mono_param_get_objects): Initialize the default value
13524         with DBNull.Value, not null. Fixes #62123.
13525
13526 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
13527
13528         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
13529         throw an exception with a cute explanation.
13530
13531 2004-09-06  Dick Porter  <dick@ximian.com>
13532
13533         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
13534         Close the new process's thread handle, as we don't use it.  The
13535         handle stays around forever otherwise.
13536
13537 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13538
13539         * object.c (arith_overflow): Fix warning.
13540
13541         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
13542         calling conventions in method refs. Fixes #65352.
13543
13544         * reflection.c: Fix warnings.
13545
13546 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
13547
13548         * icall.c: Add a new icall for Array.Clear
13549
13550 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
13551
13552         * object.c: When allocating an array, we have to throw
13553         an overflow exception if any of the lengths are < 0.
13554
13555 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13556
13557         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
13558         properly. Also move implementation of string array marshalling to 
13559         managed code. Fixes #42316.
13560
13561 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13562
13563         * assembly.c: provide more information when loading an assembly fails.
13564
13565 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13566
13567         * filewatcher.c: don't expect the development fam package to be
13568         installed.
13569
13570 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
13571
13572         * marshal.c: Make a copy of the signature cookie since it will be
13573         freed by the caller.
13574         
13575         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
13576
13577         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
13578
13579         * metadata.c (mono_metadata_free_marshal_spec): New function to free
13580         marshal specs.
13581
13582         * marshal.c: More refactoring.
13583         
13584         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
13585         smaller functions.
13586
13587 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
13588
13589         * object.c: In mono_message_invoke, fill the output parameter array after
13590           calling the managed method (it was done before the call). This fixes
13591           bug #59299.
13592
13593 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13594
13595         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
13596         as well.
13597
13598 2004-09-02  Martin Baulig  <martin@ximian.com>
13599
13600         * class.c (mono_class_instance_size): Don't allow generic type
13601         definitions or open generic instances.
13602         (mono_class_array_element_size): If we're a value type, call
13603         mono_class_instance_size() on the original class.
13604
13605         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
13606         handle generic instances.
13607
13608         * mono-debug-debugger.c (write_type): Handle generic instances
13609         like classes.
13610
13611 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13612
13613         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
13614         the allocation request fails. Fixes #65089.
13615
13616         * object.c (mono_runtime_free_method): Do not call mono_free_method.
13617         
13618         * object.c (mono_runtime_free_method): New function to free a dynamic
13619         method.
13620
13621         * marshal.c (mono_delegate_free_ftnptr): New function to free the
13622         delegate trampoline.
13623
13624         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
13625         with hasthis as dynamic,
13626
13627         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
13628
13629         * domain.c (mono_jit_info_table_remove): New function to remove an
13630         entry from the jit info table.
13631
13632         * class-internals.h (MonoMethod): Add 'dynamic' field.
13633
13634         * loader.c: Fix warnings.
13635
13636 2004-09-01  Martin Baulig  <martin@ximian.com>
13637
13638         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
13639         instead of mono_debugger_lock() because the latter one is a no-op
13640         unless running in the debugger.
13641
13642 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
13643
13644         * class.c (class_compute_field_layout): Classes with auto-layout or
13645         reference fields are not blittable.
13646         
13647 2004-09-01  Dick Porter  <dick@ximian.com>
13648
13649         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
13650         mono_image_get_filename() to get the assembly location.
13651
13652         * icall.c:
13653         * metadata.h: Fix compile warnings
13654
13655 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
13656
13657         * class.c (class_compute_field_layout): System.Object is blittable.
13658
13659         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
13660         as in/out. Fixes #59909.
13661
13662 2004-09-01  Martin Baulig  <martin@ximian.com>
13663
13664         * metadata.h (MONO_TYPE_ISREFERENCE): Call
13665         mono_metadata_generic_inst_is_valuetype() if we're a generic
13666         instance to check whether our underlying type is a reference type.
13667
13668 2004-09-01  Martin Baulig  <martin@ximian.com>
13669
13670         * metadata.c (mono_type_size): If we're a generic instance, call
13671         mono_class_value_size() for value types.
13672
13673 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
13674
13675         * marshal.c: Implement more custom marshalling functionality. Fixes
13676         #64915.
13677
13678 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
13679
13680         * mono-debug.c, debug-mono-symfile.c: add some locking love.
13681
13682 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
13683
13684         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
13685
13686         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
13687
13688         * icall.c: Fix some warnings.
13689
13690         * threads.c (abort_appdomain_thread): Fix unref errors.
13691         (mono_thread_current): Fix THREAD_DEBUG define.
13692
13693 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
13694
13695         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
13696
13697         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
13698
13699 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
13700
13701         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
13702         string arrays.
13703
13704 2004-08-28  Martin Baulig  <martin@ximian.com>
13705
13706         * metadata.c
13707         (mono_metadata_generic_inst_is_valuetype): New public function.
13708
13709         * metadata.h (MONO_TYPE_ISSTRUCT): Call
13710         mono_metadata_generic_inst_is_valuetype() if we're a generic
13711         instance to check whether our underlying type is a valuetype.
13712
13713 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
13714
13715         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
13716         #63768.
13717
13718 2004-08-25  Martin Baulig  <martin@ximian.com>
13719
13720         * loader.c (mono_get_method_from_token): Abstract methods can also
13721         be generic and thus have type parameters.
13722
13723         * metadata-internals.h
13724         (MonoDynamicImage): Added `GPtrArray *gen_params'.
13725
13726         * reflection.c (mono_image_get_generic_param_info): Don't create a
13727         metadata row, just add an entry to the `gen_params' array.
13728         (build_compressed_metadata): Sort the `gen_params' array and then
13729         actually create the metadata.
13730
13731 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
13732
13733         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
13734
13735 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
13736
13737         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
13738
13739 2004-08-24  Martin Baulig  <martin@ximian.com>
13740
13741         * class.cs (mono_class_is_subclass_of): Like an interface, a
13742         generic instance also derives from System.Object.
13743
13744 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
13745
13746         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
13747         custom modifiers to be in any order. Fixes #61990.
13748
13749 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
13750
13751         * object.c: Register mono_object_new_fast icall.
13752         
13753         * object.c (mono_class_get_allocation_ftn): Return to calling
13754         mono_object_new_fast, since it seems faster to compute the object 
13755         size in unmanaged code than passing it as a parameter.
13756
13757         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
13758
13759         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
13760         this function with Boehm as the oom handler, so we don't have to check
13761         the result of GC_malloc.
13762
13763         * object.c: Remove checks for oom.
13764
13765         * object.h object.c (mono_class_get_allocation_ftn): New function to
13766         return the icall which can be used to allocate an instance of a given
13767         class. 
13768
13769         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
13770
13771         * class-internals.h: Add 'enabled' field.
13772
13773 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
13774
13775         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
13776
13777 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
13778         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
13779         value 0x0010.
13780
13781 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
13782
13783         * appdomain.c: use the Tls function for appdomain too,
13784         at Zoltan's request. Actually return in mono_context_get
13785
13786         * appdomain.c, profiler.c, threads.c: use __thread
13787
13788 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
13789
13790         * appdomain.c threads.c: Call GC_CreateThread on windows.
13791
13792         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
13793         multiple libraries since this don't work on windows.
13794
13795 2004-08-18  Martin Baulig  <martin@ximian.com>
13796
13797         * class-internals.h
13798         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
13799         MonoMethodHeader.
13800
13801         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
13802         MonoMethodNormal since we also need it for abstract and interface
13803         methods.
13804
13805         * reflection.c
13806         (build_compressed_metadata): Sort the GenericParam table.
13807         (mono_image_create_token): Added `gboolean create_methodspec'
13808         argument; this is false when generating a MethodImpl token.
13809         (reflection_methodbuilder_to_mono_method): Abstract and interface
13810         methods may also have generic parameters.
13811
13812 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
13813
13814         * appdomain.c: thread local alloc
13815
13816 2004-08-17  Martin Baulig  <martin@ximian.com>
13817
13818         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
13819
13820         * icall.c
13821         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
13822         argument.
13823
13824         * class.c (mono_type_get_full_name): New public function.
13825         (mono_type_get_name): Don't include the type arguments.
13826
13827 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
13828
13829         * Makefile.am: Build static versions of libmetadata and libmonoruntime
13830         for inclusion into the mono executable.
13831
13832 2004-08-16  Martin Baulig  <martin@ximian.com>
13833
13834         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
13835         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
13836
13837 2004-08-14  Martin Baulig  <martin@ximian.com>
13838
13839         * class.c (dup_type): Also copy the `byref' field.
13840
13841 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
13842
13843         * reflection.c (create_dynamic_mono_image): Revert the last change 
13844         since it breaks bootstrap.
13845
13846 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
13847
13848         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
13849
13850         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
13851         not free them with g_free.
13852
13853 2004-08-11  Martin Baulig  <martin@ximian.com>
13854
13855         * reflection.c (mono_reflection_setup_internal_class): Also call
13856         mono_class_setup_mono_type() if we already have a `tb->type.type'.
13857
13858 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
13859
13860         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
13861         called during default (first) AppDomain creation. Keep track of
13862         Evidence when loading assemblies.
13863
13864 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
13865
13866         * opcodes.c, opcodes.h: reduce runtime relocations.
13867
13868 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
13869
13870         * culture-info.h, locales.c: fixes and chages to sue the new
13871         optimized format of the locale data.
13872         * culture-info-tables.h: regenerated.
13873
13874 2004-08-06  Geoff Norton <gnorton@customerdna.com>
13875         
13876         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
13877
13878 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
13879
13880         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
13881         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
13882         * domain-internals.h: icall declaration.
13883         * icall.c: icall registration.
13884         * object-internals.h: New fields in MonoAssembly for CAS.
13885
13886 2004-08-05  Duncan Mak  <duncan@ximian.com>
13887
13888         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
13889         CEE_LDELEM_ANY.
13890
13891 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
13892
13893         * reflection.c: fix to deal with object[] arrays in custom ctors
13894         (bug #62550).
13895
13896 2004-08-05  Martin Baulig  <martin@ximian.com>
13897
13898         * class.c (mono_class_array_element_size): Added support for
13899         generic instances and correctly handle "recursive" types.
13900
13901 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
13902
13903         * assembly.c: Fix warnings.
13904
13905 2004-08-04  Martin Baulig  <martin@ximian.com>
13906
13907         * class.c
13908         (mono_type_get_name_recurse): Added `gboolean include_arity'
13909         argument specifying whether or not we should include the generic
13910         arity in the type name.
13911         (_mono_type_get_name): New static function.
13912         (mono_class_setup_vtable): If we're a generic instance, don't
13913         include the generic arity in the names of explicit method
13914         implementations.        
13915
13916 2004-08-03  Martin Baulig  <martin@ximian.com>
13917
13918         * class.c (mono_type_get_name_recurse): Enclose the generic type
13919         arguments in `<', '>'.
13920
13921 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
13922
13923         * gc.c: make GC warning messages use the trace API, they are just
13924         noise to most of the users.
13925
13926 2004-08-03  Martin Baulig  <martin@ximian.com>
13927
13928         * debug-mono-symfile.c (read_string): Correctly read the string.
13929
13930 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
13931
13932         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
13933         
13934         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
13935         icalls.
13936         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
13937
13938 2004-07-30  Martin Baulig  <martin@ximian.com>
13939
13940         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
13941         Reflect latest symbol writer changes.   
13942
13943 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
13944
13945         * object.c: always create an object if null is passed
13946         to Invoke() where a valuetype is expected.
13947
13948 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
13949
13950         * marshal.c (mono_marshal_init): make managed
13951         signatures match native ones better for 64bits.
13952
13953 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
13954
13955         * appdomain.c: hack to build correctly the private bin path on windows.
13956         Fixes bug #61991.
13957
13958 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
13959
13960         * assembly.c: Load mscorlib from the correct framework directory
13961           (mono/<version>/mscorlib.dll).
13962         * appdomain.h: Added prototypes for new functions.
13963         * internals.h: Added some prototypes.
13964         * domain.c: When initializing the runtime, get from the executable and
13965           the configuration files the runtime version that the app supports.
13966           Added support methods for reading app.exe.config. Added list of versions
13967           supported by the JIT. Added two new methods: mono_init_from_assembly,
13968           which initializes the runtime and determines the required version from
13969           the provided exe file, and mono_init_version, which initializes
13970           the runtime using the provided version.
13971         * icall.c: Get machine.config from version-specific directory.
13972         * reflection.c: When generating an image, embed the version number
13973           of the current runtime.
13974
13975 2004-07-28  Dick Porter  <dick@ximian.com>
13976
13977         * socket-io.c
13978         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
13979         returned sockaddr size before creating the remote address object.
13980         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
13981         61608.
13982
13983 2004-07-28  Dick Porter  <dick@ximian.com>
13984
13985         * locales.c (string_invariant_compare_char): Fix invariant char
13986         compares between upper and lower cases.  Fixes bug 61458.
13987
13988 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
13989         
13990         * marshal.c: actually cache stelem.ref wrappers.
13991         
13992 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
13993
13994         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
13995         sections and remove the mono_cli_rva_map () function.
13996
13997 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
13998
13999         * debug-mono-symfile.c: fix one more endianess issue, from a patch
14000         by Geoff Norton (<gnorton@customerdna.com>).
14001
14002 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
14003
14004         * class.c: fix class loads for pointer types (typeof(int) !=
14005         typeof(int*)).
14006
14007 2004-07-27  Martin Baulig  <martin@ximian.com>
14008
14009         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
14010         reading the debugging information from an external ".mdb" file.
14011
14012 2004-07-24  Martin Baulig  <martin@ximian.com>
14013
14014         * reflection.c (mono_image_get_type_info): Only write a class
14015         layout entry if we actually have a size or a packing size.
14016
14017 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14018
14019         * reflection.c (type_get_fully_qualified_name): 
14020         insert cast to get type checking of ?: with non-gcc compilers
14021
14022 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
14023
14024         * rand.c: use g_getenv for both lookups of
14025         MONO_EGD_SOCKET
14026
14027 2004-07-17  Martin Baulig  <martin@ximian.com>
14028
14029         * reflection.c (mono_reflection_bind_generic_method_parameters):
14030         Set `gmethod->reflection_info'.
14031
14032 2004-07-17  Martin Baulig  <martin@ximian.com>
14033
14034         * class.c (mono_class_create_from_typedef): Insert the newly
14035         created class into the hash table before computing the interfaces
14036         since we could be called recursively.
14037
14038 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14039
14040         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
14041         function to implement stelem.ref in managed code
14042         * class-internals.h, debug-helpers.c: a new wrapper type
14043         for the above.
14044
14045 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
14046
14047         * gc.c: allow GC handles to work even when no GC is compiled in.
14048         Fix part of bug #61134 (GetAddrOfPinnedObject).
14049
14050 2004-07-13  Peter Williams  <peter@newton.cx>
14051  
14052         * process.c (complete_path): Make sure we don't attempt to execute
14053         directories.
14054  
14055 2004-07-12  Geoff Norton <gnorton@customerdna.com>
14056
14057         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
14058           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
14059           and will add/subtract the hour if needed
14060
14061 2004-07-12  Martin Baulig  <martin@ximian.com>
14062
14063         * reflection.c (mono_field_get_object): If we have
14064         `field->generic_info', take the attributes from
14065         `field->generic_info->generic_type'.    
14066
14067 2004-07-12  Martin Baulig  <martin@ximian.com>
14068
14069         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
14070         This function must be called before initializing the runtime.
14071         (mono_debug_init_1): New function; call this after initializing
14072         the runtime, but before loading the assembly.  It tells the
14073         debugger to load corlib and the builtin types.
14074
14075         * mono-debug-debugger.c: Did some larger changes in the debugging
14076         code; support recursive class declarations, make sure we actually
14077         add all classes.
14078
14079 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14080
14081         * debug-helpers.c: undo my previous patch and fixed the real issue in
14082         ../mini/exceptions-x86.c
14083
14084 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14085
14086         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
14087         when no HOME env. variable was set and a NullRef was thrown in a .cctor
14088         called from other .cctors.
14089
14090 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
14091
14092         * loader.c: Removed the mono_loader_wine_init hack now that we are
14093         doing a managed version of Windows.Forms.
14094
14095 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14096
14097         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
14098         threadpool.c, threads.c: remove static data from rootset.
14099
14100 2004-07-09  Dick Porter  <dick@ximian.com>
14101
14102         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
14103         Don't do any more processing if the matched length was 0.  It was
14104         increasing the size of the string before.  Fixes bug 61167.
14105
14106 2004-07-09  Dick Porter  <dick@ximian.com>
14107
14108         * socket-io.h:
14109         * socket-io.c
14110         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
14111         Add support for SO_PEERCRED if its available.
14112
14113 2004-07-09  Peter Bartok <pbartok@novell.com>
14114         * loader.c: winelib.exe.so error message is now only displayed if
14115         MONO_DEBUG is set. To help us avoid questions when people are trying
14116         out the new Managed.Windows.Forms.
14117
14118 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14119
14120         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
14121         for isinst and castclass wrappers.
14122
14123         * class-internals.h icall.c: Move registration and lookup of JIT icalls
14124         to libmetadata from the JIT, so they could be used by the marshalling
14125         code and the interpreter.
14126
14127         * marshal.c: Register marshalling related JIT icalls here instead of
14128         in mini.c. Use CEE_MONO_ICALL instead of the family of 
14129         CEE_MONO_PROC<x> opcodes to call marshalling functions.
14130
14131         * metadata.h: Remove unneeded marshalling conversions.
14132
14133         * opcodes.c: Update for new opcodes.
14134         
14135 2004-07-08  Martin Baulig  <martin@ximian.com>
14136
14137         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
14138         (mono_debug_get_domain_data): Make this function static.
14139
14140 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14141
14142         * gc.c, object.h: add nice GC handle API for embedders.
14143
14144 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14145
14146         * reflection.c: more changes for the new api
14147
14148         * object.c: When we reflect on a field w/ a constant value, it
14149         will not have a memory location, so we must access metadata. Also,
14150         allow easier reading of strings so that we can read them from
14151         the constant data.
14152
14153         * class.c (mono_class_layout_fields): no need for literal fields here.
14154
14155         * class-internals.h: api changes for const fields
14156
14157         * icall.c (ves_icall_get_enum_info): use new apis for const fields
14158
14159 2004-07-06  Martin Baulig  <martin@ximian.com>
14160
14161         * mono-debug.h: Increment version number to 44.
14162
14163         * mono-debug.c (mono_debug_add_wrapper): The second argument is
14164         now a gpointer, rewrote this whole method.
14165
14166         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
14167         function.  Add information about the wrapper in a new "misc table".
14168
14169         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
14170         for the new misc table.
14171
14172 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14173
14174         * metadata-internals.h image.c: Add a cache for helper signatures.
14175
14176         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
14177
14178 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14179
14180         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
14181         delegates from a delegate. Fixes #61033.
14182         
14183         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
14184         marshalling of stringbuilder arrays. Fixes #59900.
14185
14186 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14187
14188         * icall.c: Add EnumBuilder:setup_enum_type icall.
14189
14190 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14191
14192         * icall.c: Added a new icall for the property version of
14193         OffsetOfStringData.
14194
14195 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14196
14197         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
14198         it has a constant size across platforms.
14199
14200         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
14201         stack trace.
14202
14203 2004-06-29  Martin Baulig  <martin@ximian.com>
14204
14205         * mono-debug.c (mono_debug_add_method): Protect the whole function
14206         in mono_debugger_lock(), not just parts of it.
14207
14208 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14209
14210         * reflection.c: make sure padding bytes in heaps are zeroed.
14211
14212 2004-06-24  David Waite  <mass@akuma.org>
14213
14214         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
14215         image.c, loader.c, locales.c, marshal.c, metadata.c,
14216         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
14217         string-icalls.c, threads.c: change to C90-style comments from C99 /
14218         C++ -style
14219
14220 2004-06-24  Dick Porter  <dick@ximian.com>
14221
14222         * threads.c
14223         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
14224         return createdNew.  Fixes bug 60412.
14225
14226         * threads-types.h: 
14227         * icall.c: Add createdNew parameter to CreateMutex icall
14228
14229 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14230
14231         * reflection.c, object-internals.h: save default value in params.
14232
14233 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14234
14235         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
14236         no need to build a new path combining that with the application base.
14237         Fixes bug #60442.
14238
14239 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14240
14241         * reflection.c: fixed minor standard compliance issues.
14242
14243 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
14244
14245         * reflection.c: fixed issue with encoding some custom attributes
14246         (arrays in properties and fields, bug #60411).
14247
14248 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14249
14250         * reflection.c: fix start address when copying the public key token.
14251
14252 2004-06-23  Martin Baulig  <martin@ximian.com>
14253
14254         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
14255         the `exc' object in a static object to put it into the GC's root set.
14256
14257 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
14258
14259         * reflection.c: make mono_reflection_setup_internal_class ()
14260         callable a second time to setup a new parent class.
14261
14262 2004-06-23  Dick Porter  <dick@ximian.com>
14263
14264         * threads.c: Check for WAIT_IO_COMPLETION return values.
14265
14266 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
14267
14268         * appdomain.c: Removed the g_free on the public key token. Now copy 
14269         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
14270         * assembly.c: Added public key token string value when loading 
14271         assemblies. Fix bug #60439.
14272         * icall.c: Added missing informations (like public key) in 
14273         GetReferencedAssemblies. Fix #60519.
14274         * image.h: Changed definition for public key token from const char*
14275         public_tok_value to guchar public_key_token [17];
14276         * reflection.c: Updated for changes to public key token.
14277
14278 2004-06-22  Lluis Sanchez Gual
14279
14280         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
14281         for the field in base classes.
14282
14283 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
14284
14285         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
14286         mark headers as not supported, they are installed only for use by the
14287         debugger.
14288
14289 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
14290
14291         * *.c, *.h: avoid namespace pollution in public headers.
14292
14293 2004-06-21  Martin Baulig  <martin@ximian.com>
14294
14295         * exception.c (mono_get_exception_security): It's in
14296         "System.Security", not in "System".
14297
14298         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
14299         the exception classes.
14300
14301 2004-06-21  Martin Baulig  <martin@ximian.com>
14302
14303         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
14304         Protect the exception object from being finalized.
14305
14306 2004-06-21  Martin Baulig  <martin@ximian.com>
14307
14308         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
14309         public function.
14310
14311 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
14312
14313         * reflection.c: Load the assembly in mono_reflection_type_from_name,
14314         if it was not loaded before. Fix parts of #60439.
14315
14316 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
14317
14318         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
14319         code that was broken since Ben's change: wrappers are now
14320         dependent on the method signature only again.
14321
14322 2004-06-21  Martin Baulig  <martin@ximian.com>
14323
14324         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
14325         added interface support.
14326
14327 2004-06-21  Martin Baulig  <martin@ximian.com>
14328
14329         * class.c (mono_vtable_get_static_field_data): New public method.
14330
14331 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
14332
14333         * filewatcher.c : Windows build fix to be compliant with API changes.
14334
14335 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14336
14337         * class.h, class.c: more accessors.
14338         * metadata.h, metadata.c: prepare for hiding MonoType and
14339         MonoMethodSignature: people should use the accessors from now on
14340         outside of the tree.
14341
14342 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14343
14344         * *.c, *.h: more API cleanups.
14345
14346 2004-06-18  Jackson Harper  <jackson@ximian.com>
14347
14348         * assembly.c: Trace loading assemblies.
14349         * loader.c: Trace loading native libraries.
14350         * mono-config.c: Trace loading config files.
14351         
14352 2004-06-18  Dick Porter  <dick@ximian.com>
14353
14354         * locales.c: Tell ICU the lengths of strings, it can cope with
14355         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
14356
14357 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14358
14359         * image.c: swapped name/filename;
14360
14361 2004-06-18  Martin Baulig  <martin@ximian.com>
14362
14363         * mono-debug-debugger.c (write_class): Write the parent class at
14364         the end of the header.
14365
14366 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
14367
14368         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
14369
14370 2004-06-17  Raja R Harinath  <rharinath@novell.com>
14371
14372         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
14373         (bundle_obj): New conditional define.
14374         (BUILT_SOURCES): Remove.
14375         ($(bundle_srcs)): Make parallel-make safe.
14376         (libmonoruntime_la_LIBADD): Make unconditional.
14377         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
14378         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
14379
14380 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
14381
14382         * culture-info-tables.h: It was inconsistent with the latest
14383           supp info files.
14384
14385 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
14386
14387         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
14388         be loaded.
14389
14390         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
14391         with gcc 2.95.
14392
14393 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
14394
14395         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
14396         cleaned up public header threads.h.
14397
14398 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14399
14400         * Makefile.am, *.c, *.h: more API cleanups.
14401
14402 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14403
14404         * Makefile.am: removed monosn from compilation.
14405         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
14406         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
14407         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
14408         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
14409         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
14410         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
14411
14412 2004-06-15  Jackson Harper  <jackson@ximian.com>
14413
14414         * assembly.c: Make locales lower case when searching the GAC for
14415         assemblies. gacutil will always make locales lowercase when
14416         installing so this effectively makes them case insensitive.
14417         
14418 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
14419
14420         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
14421         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
14422           parameter which allows to choose whether the wait can be interrupted or 
14423           not. Also added the method mono_monitor_enter(), which locks the monitor
14424           using an infinite wait and without allowing interruption.
14425           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
14426           interrupted.
14427         * object.h: Added new fields in MonoThread. suspend_event holds the event
14428           used to susped/resume the thread. synch_lock is the lock object to use for
14429           modifying the thread state.
14430         * threads.c: Use the new synch_lock object for locking, instead of "this",
14431           which can generate deadlocks.
14432           Moved thread state change in Thread.Sleep and Thread.Join from managed
14433           to unmanaged code. This avoids a deadlock when the thread was suspended
14434           just after acquiring the thread lock.
14435           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
14436           Implemented Thread.Suspend using an event instead of ThreadSuspend,
14437           which is not fully implemented in the io-layer.
14438         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
14439
14440 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
14441
14442         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
14443         threads-types.h: more API cleanups.
14444
14445 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14446
14447         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
14448         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
14449         threadpool.c, threads.c: first pass at the exported API cleanup.
14450
14451 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14452
14453         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
14454
14455 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14456
14457         * icall.c: added internalGetHome.
14458
14459 2004-06-14  Dick Porter  <dick@ximian.com>
14460
14461         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
14462         possible to return successfully when '.' or '..' were the only
14463         entries in a directory, but were skipped.  The MonoIOStat was not
14464         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
14465         Fixes bug 59574.
14466
14467 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14468
14469         * reflection.c: make binaries run on .Net 1.1 by default.
14470
14471 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14472
14473         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
14474
14475 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
14476
14477         * marshal.c: keep track of struct size with explicit layout
14478         (bug #59979).
14479
14480 2004-06-12  Martin Baulig  <martin@ximian.com>
14481
14482         * mono-debug-debugger.c: Comment out a debugging g_message().
14483
14484 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
14485
14486         * reflection.c, reflection.h: do not free custom attrs that are cached.
14487         * icall.c: use braces to make code clearer.
14488
14489 2004-06-11  Martin Baulig  <martin@ximian.com>
14490
14491         * class.h (MonoInflatedField): New type.
14492         (MonoClassField): Replaced `MonoType *generic_type' with
14493         `MonoInflatedField *generic_info'.
14494
14495         * icall.c
14496         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
14497
14498 2004-06-11  Martin Baulig  <martin@ximian.com>
14499
14500         * reflection.c (mono_image_create_method_token): Correctly encode
14501         varargs methods.
14502
14503 2004-06-11  Martin Baulig  <martin@ximian.com>
14504
14505         * metadata.c (mono_metadata_parse_method_signature): When parsing
14506         a MethodDef which has VarArgs, also set sentinelpos if we don't
14507         have any parameters.
14508
14509 2004-06-11  Martin Baulig  <martin@ximian.com>
14510
14511         * verify.c (mono_method_verify): In CEE_CALL, use
14512         mono_method_get_signature() to get the method's signature, unless
14513         we're a PInvoke method.
14514
14515 2004-06-10  Jackson Harper  <jackson@ximian.com>
14516
14517         * assembly.c: Use <path>/lib/mono/gac for the extra paths
14518         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
14519         logical name as the supplied path is just a prefix to the gac not
14520         the direct path to it.
14521         
14522 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
14523
14524         * reflection.c: make the token for a created method match
14525         the token of the MethodBuilder it was created from
14526         (IKVM requires this behaviour now).
14527
14528 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
14529
14530         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
14531         reflection.c, socket-io.c: leak fixes.
14532
14533 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
14534
14535         * icall.c: handle sentinel pos in vararg methods in position different
14536         from 0.
14537
14538 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14539
14540         * culture-info-tables.h: freshly generated.
14541
14542 2004-06-09  Martin Baulig  <martin@ximian.com>
14543
14544         * loader.c (mono_get_method_constrained): Call `mono_class_init
14545         (constrained_class)'.   
14546
14547 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
14548
14549         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
14550         any methods. Fixes #59629.
14551
14552 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
14553
14554         * culture-info-tables.h: reflecting locale-builder updates.
14555
14556 2004-06-08  Dick Porter  <dick@ximian.com>
14557
14558         * object.h:
14559         * locales.c: Fixed compile warnings, including a real bug in
14560         CompareInfo_internal_compare.
14561         
14562 2004-06-08  Dick Porter  <dick@ximian.com>
14563
14564         * locales.c
14565         (ves_icall_System_Globalization_CompareInfo_internal_index):
14566         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
14567         Double-check the resuls of usearches, because ICU currently
14568         ignores most of the collator settings here.  Fixes bug 59720.
14569         
14570 2004-06-08  Dick Porter  <dick@ximian.com>
14571
14572         * locales.c
14573         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
14574         Fix memory leak and segfault-causing typo.  No idea how this one
14575         lasted so long without being noticed.
14576
14577 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
14578
14579         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
14580         any methods. Fixes #59629.
14581
14582 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14583
14584         * assembly.c:
14585         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
14586         own the critical section before). Removed dead code (that's done
14587         in the preload hook).
14588
14589         (mono_assembly_load_with_partial_name): call the preload hook.
14590
14591 2004-06-08  Martin Baulig  <martin@ximian.com>
14592
14593         * metadata.c (mono_metadata_signature_alloc): Default
14594         `sentinelpos' to -1.
14595
14596         * reflection.c (mono_image_get_array_token): Likewise.
14597
14598 2004-06-08  Martin Baulig  <martin@ximian.com>
14599
14600         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
14601
14602         * metadata.c (mono_metadata_parse_method_signature): When parsing
14603         a MethodDef which has VarArgs, set sentinelpos.
14604
14605         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
14606         `gint16' since we're using -1 for non-varargs methods.
14607
14608         * reflection.c
14609         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
14610         (method_encode_signature): Added varargs support.
14611         (method_builder_encode_signature): Likewise.
14612         (mono_image_get_varargs_method_token): New static method.
14613         (mono_image_create_method_token): New public method; this is
14614         called via an icall instead of mono_image_create_token() when
14615         calling a varargs method.       
14616
14617 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
14618
14619         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
14620
14621 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
14622
14623         * culture-info-tables.h : Reflecting the latest locale-builder that
14624           fixed empty array representation ({} to {0}).
14625
14626 2004-06-07  Jackson Harper  <jackson@ximian.com>
14627
14628         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
14629         looking up extra gac paths. This allows MONO_GAC_PATH to act
14630         exactly like a prefix.
14631         
14632 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
14633
14634         * reflection.c (mono_reflection_type_from_name): Make a copy of the
14635         type name before modifying it. Fixes #59405.
14636
14637 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
14638
14639         * culture-info.h: added fields for "all datetime patterns".
14640         * locales.c: (  ves_icall_System_Globalization_CultureInfo
14641           _construct_datetime_format ()): fill xxx_patterns fields.
14642         * object.h: added fields for "all datetime patterns" to
14643           MonoDateTimeFormatInfo.
14644         * culture-info-tables.h: reflecting locale-builder updates.
14645
14646 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
14647
14648         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
14649         the event has no add and remove methods. Fixes #59629.
14650
14651 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
14652
14653         * object.c: Fixed possible integer overflow when allocating large
14654         strings.
14655
14656 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
14657
14658         * culture-info-tables.h: reflecting locale-builder updates.
14659
14660 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
14661
14662         * culture-info-tables.h: reflecting locale-builder updates.
14663
14664 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
14665
14666         * culture-info-tables.h: reflecting locale-builder updates.
14667
14668 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
14669
14670         * threads.c: Made Thread.Sleep abortable.
14671
14672 2004-06-02  Martin Baulig  <martin@ximian.com>
14673
14674         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
14675
14676         * debug-mono-symfile.h: Bumped symbol file version number to 37.
14677
14678 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
14679
14680         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
14681
14682 2004-05-30  Jackson Harper  <jackson@ximian.com>
14683
14684         * reflection.c: Do not hardcode assembly versions or public key
14685         tokens anymore. All of this except the corlib section was dead
14686         code anyways.
14687         
14688 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
14689
14690         * object.c (mono_runtime_invoke_array): Automatically create boxed
14691         objects for byref valuetypes if needed. Fixes #59300.
14692         
14693         * object.c (mono_method_return_message_restore): Handle 
14694         MONO_TYPE_OBJECT as well.
14695
14696 2004-05-28  Jackson Harper  <jackson@ximian.com>
14697
14698         * reflection.c: The modified type encoding was causing build
14699         problems. Reverted for now.
14700         
14701 2004-05-28  Jackson Harper  <jackson@ximian.com>
14702
14703         * reflection.c/h: Take an assembly ref so that we dont create
14704         fully qualified names when encoding types in the same assembly as
14705         the custom attribute being emitted.
14706         * appdomain.c: Increment version number.
14707         
14708 2004-05-26  Duncan Mak  <duncan@ximian.com>
14709
14710         * icall.c
14711         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
14712         Set the full version number (major, minor, build, revision).
14713
14714 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
14715
14716         * marshal.c (emit_struct_conv): increment src/dst after blit
14717         (mono_marshal_get_managed_wrapper,
14718         mono_marshal_get_native_wrapper): make sure we have marshalling
14719         info before marshalling params (info computation affects
14720         blittable)
14721
14722         * class.c (class_compute_field_layout): correctly deal with
14723         blittable
14724         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
14725         value types (as per what windows dows by default)
14726         (mono_class_setup_mono_type): System.ValueType is blittable
14727         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
14728         blittable
14729
14730         * marshal.c (mono_marshal_load_type_info): flag types  as
14731         non-blittable if the native layout doesn't match the managed
14732         layout
14733
14734 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14735
14736         * appdomain.c: don't add stuff in the private search path that is
14737         above the application base. If application base is not set, there's
14738         no private search path.
14739
14740 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
14741
14742         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
14743         byref struct arguments in native->managed marshalling.
14744
14745 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
14746
14747         * marshal.c (mono_marshal_get_runtime_invoke): correctly
14748         cache methods using signature (special case for methods
14749         that are value type or string class)
14750         
14751         * image.c (mono_image_close): clean up allocated GSList's
14752         in runtime_invoke_cache.
14753
14754 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14755
14756         * mono-config.c: set the correct path for mono_cfg_dir on windows when
14757         there's no MONO_CFG_DIR environment variable defined.
14758
14759 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14760
14761         * threads.c: windows version must be >= 0x0500 to include OpenThread.
14762
14763 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
14764
14765         * threadpool.c: Really wait for 500ms after the async call, even if the wait
14766           is interrumped.
14767         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
14768           before waiting for it, and call CloseHandle after the wait to unref it.
14769           This will make sure that handles are not disposed too early.
14770
14771 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14772
14773         * appdomain.c:
14774         * appdomain.h:
14775         * icall.c: removed
14776         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
14777         needed now.
14778
14779         * object.c: se the application_base only for the domain that runs
14780         Main. Fixes bug #59216,
14781
14782 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14783
14784         * appdomain.c:
14785         * object.c: only the domain in which Main is run have
14786         SetupInformation.ConfigurationFile set, so moved a few lines from
14787         appdomain.c to object.c.
14788
14789 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14790
14791         * appdomain.c: we tried to load [name].(dll|exe), but according
14792         to bug #57710, we must also try [culture]/[name].(dll|exe) and
14793         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
14794         There's a test case attached to bug #58922.
14795
14796 2004-05-27  Dick Porter  <dick@ximian.com>
14797
14798         * icall.c:
14799         * file-io.c: Implemented icalls for locking and unlocking regions
14800         in a file.
14801         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
14802         FALSE on error (fixes both compiler warning and real bug.)
14803
14804 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
14805
14806         * culture-info-tables.h: reflecting locale-builder updates.
14807
14808           (Added missing ChangeLog entry for 05/26)
14809
14810 2004-05-27  Jackson Harper  <jackson@ximian.com>
14811
14812         * locales.c: Fix some cut and paste errors.
14813         
14814 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14815
14816         * mono-config.c: set the correct path for config. directory on windows.
14817
14818 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
14819
14820         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
14821           on win32.
14822
14823 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14824
14825         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
14826         from pinvoke functions.
14827         
14828         * marshal.c (mono_ftnptr_to_delegate): Implement this.
14829
14830 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
14831
14832         * culture-info-tables.h: reflecting locale-builder updates.
14833
14834 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14835
14836         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
14837         #59086.
14838
14839 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
14840
14841         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
14842         * icall.c: Modified icalls for RNG.
14843         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
14844         Windows (CryptoAPI).
14845
14846 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
14847
14848         * locales.c: Fix build.
14849
14850 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
14851
14852         * culture-info-tables.h: reflecting locale-builder updates.
14853
14854 2004-05-25  Jackson Harper  <jackson@ximian.com>
14855
14856         * locales.c: When creating the current culture use the $LANGs
14857         specific culture. So DateTimeFormat and NumberFormat entries are created.
14858         
14859 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
14860
14861         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
14862         a char array as parameter.
14863
14864 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
14865
14866         * image.c: In mono_image_open(), always use an absolute path name to
14867           look for already loaded images.
14868
14869 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
14870
14871         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
14872         missing in the windows build (like older cygwin include files).
14873
14874 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
14875
14876         * icall.c: Fixed check for possible integer overflow in Buffer_
14877         BlockCopy icall. Replaced comments style // by /* */.
14878
14879 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
14880
14881         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
14882         
14883         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
14884         check after MONO_VTADDR. Fixes pinvoke2.exe.
14885
14886         * marshal.h marshal.c metadata.h: Add beginnings of support for
14887         ftnptr -> delegate marshalling.
14888
14889 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
14890
14891         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
14892         * threads.c: Fix warnings.
14893
14894 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
14895
14896         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
14897         * icall.c: Registered icalls for Suspend and Resume.
14898         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
14899           Thread.Abort.
14900         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
14901         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
14902         * process.c: Use WaitForSingleObjectEx.
14903         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
14904           checkpoints.
14905         * threads.c, threads.h: Make use of new Ex wait methods. Improved
14906           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
14907           for Suspend and Resume. Added new mono_thread_stop, used for stoping
14908           background threads. Added basic support for Abort in Windows.
14909           Start new threads using a managed delegate invoke wrapper. This wrapper
14910           has an interruption checkpoint that is needed since an interruption
14911           can be requested before the thread leaves the unmanaged code that starts 
14912           the thread.
14913         * marshal.c: Added interruption checkpoint after every native call, and
14914           also before managed calls for wrappers called from unmanaged code to
14915           go into managed code.
14916         * object.h: Added new field in MonoThread to keep track of interruption
14917           requests.
14918
14919 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
14920
14921         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
14922         calls.
14923
14924 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14925
14926         * appdomain.c:
14927         * assembly.c:
14928         * gc.c:
14929         * locales.c:
14930         * mono-config.c:
14931         * rand.c: getenv -> g_getenv (windows!)
14932
14933         * process.c: complete_path is also used on non-windows platforms.
14934
14935 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14936
14937         * icall.c: new signature for Process_Start.
14938
14939         * process.[ch]: new signature for Process_Start. If we're on windows
14940         and UseShellExecute is false, we have to search for the program by
14941         ourselves if we don't get a full path.
14942
14943 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
14944
14945         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
14946         marshalling and call CleanUpNativeData if needed. Fixes #58646.
14947
14948 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14949
14950         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
14951         Fixes bug #58373.
14952
14953 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14954
14955         * process.c: use double quotes to quote program name and arguments on
14956         windows. Fixes bug #58575.
14957
14958 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14959
14960         * file-io.c: don't return "." and ".." when using windows Find*File.
14961
14962 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
14963
14964         * marshal.c: Don't pass wrappers to message init because method 
14965         addressed used to lookup metadata. part of remoting[2|3] fix.
14966
14967 2004-05-15  Jackson Harper  <jackson@ximian.com>
14968
14969         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
14970         path is essentially the same as MONO_PATH except that it points to
14971         GACs instead of lib directories.
14972         * loader.h: The user gac is gone so we dont need function to
14973         enable/disable it.
14974         * mono-config.c: user gac option is now gone.
14975         
14976 2004-05-15  Jackson Harper  <jackson@ximian.com>
14977
14978         * culture-info.h: Make defines more consistent, add calendar data
14979         to the culture info table.
14980         * culture-info-tables.h: Add basic calendar data. Basically
14981         everyone gets default gregorian until all the data is
14982         updated.
14983         * locales.c: Use the new consistent defines. Set calendar data for
14984         culture info objects.
14985         * object.h: add a field for calendar data to CultureInfo
14986         
14987 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
14988
14989         * image.c: image->runtime_invoke_cache is keyed on signatures now.
14990         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
14991         a signature.
14992         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
14993         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
14994         an extra param that is the pointer of the method to invoke. The IL for
14995         the invoke method is no longer specific to the method, but to the
14996         signature of the method. Thus, we can share the same code for multiple
14997         methods. This reduces the number of methods that have to be compiled.
14998
14999 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
15000
15001         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
15002
15003         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15004
15005         * icall.c: Optimize Buffer.BlockCopy.
15006
15007 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15008
15009         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
15010         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
15011         quote). Changed them to "MMMM yyyy".
15012
15013 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
15014
15015         * rand.c
15016         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
15017
15018 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
15019
15020         * reflection.h: Updated after changes to managed structures.
15021
15022         * appdomain.c: Bump corlib version.
15023
15024 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15025
15026         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
15027         windows.
15028
15029 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15030
15031         * Makefile.am: link to ../os/libmonoos.la on windows.
15032
15033         * assembly.c:
15034                 -If MONO_DEBUG, warn about non-existing directories in
15035                 MONO_PATH.
15036                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
15037                 compile time variable.
15038                 -Removed init_default_path and call mono_set_rootdir from
15039                 libmonoos.a instead (windows only).
15040
15041         * assembly.h: declare mono_assembly_getrootdir().
15042
15043         * domain.c:
15044         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
15045
15046         * loader.c: s/getenv/g_getenv/
15047
15048 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15049
15050         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
15051
15052         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
15053
15054         * metadata.h: Add new marshalling conversions.
15055
15056         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
15057         function.
15058
15059         * reflection.c (mono_reflection_get_type): Lookup the type in all
15060         modules of a multi-module assembly. Fixes #58291.
15061
15062 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15063
15064         * threads.c: Before aborting a background, set the StopRequested
15065         state.  This avoids throwing the Abort exception.
15066         In mono_thread_manage, don't continue with the shutdown until all
15067         aborted threads have actually stopped.
15068
15069 2004-05-10  Jackson Harper  <jackson@ximian.com>
15070
15071         * locales.c: Remove the modifier from culture names.
15072         
15073 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15074
15075         * Makefile.am: monosn is not installed any more. It has been deprecated
15076         in favor of sn.
15077
15078 2004-05-07  Jackson Harper  <jackson@ximian.com>
15079
15080         * locales.c
15081         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
15082         Fix array construction, add bailout if the length is 0.
15083
15084 2004-05-07  Dick Porter  <dick@ximian.com>
15085
15086         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
15087         machine doesn't have a DNS entry.  Patch by Urs Muff
15088         (umuff@quark.com), fixes bug 57928.
15089
15090 2004-05-06  Jackson Harper  <jackson@ximian.com>
15091
15092         * reflection.c: Handle null PublicTokens properly. alloc mem for
15093         assembly names culture so we dont crash when freeing it.
15094         
15095 2004-05-06  Jackson Harper  <jackson@ximian.com>
15096
15097         * assembly.c: Check the usergac when loading with partial names.
15098         
15099 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15100
15101         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
15102         does nothing for now (not required for Linux/Windows) but the class
15103         library can call it (and a newer or modified runtime could need it).
15104         * icall.c: Registred icall.
15105
15106 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15107
15108         * loader.c: prints a message on module loading error we set MONO_DEBUG
15109         environment variable.
15110
15111 2004-05-05  Jackson Harper  <jackson@ximian.com>
15112
15113         * appdomain.c: Handle PublicKeyToken=null properly.
15114         
15115 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
15116
15117         * environment.c|h: Added icall ves_icall_System_Environment_
15118         GetOSVersionString to get the current OS version as a string.
15119         * icall.c: Registred icall.
15120
15121 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
15122
15123         * object.c: in mono_object_get_virtual_method(), take into account that
15124         non-virtual methods don't have a slot in the vtable. Check needed when
15125         the object is a proxy.
15126
15127 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15128
15129         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
15130         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
15131
15132         * object.c (mono_class_compute_gc_descriptor): Fix warning.
15133
15134         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
15135         passed when a valuetype is expected.
15136
15137         * object.c (mono_unhandled_exception): Only set the exit code if the
15138         exception happens in the main thread. Fixes thread5.exe.
15139
15140         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
15141         invalid names. Fixes #58047.
15142
15143 2004-05-03  Jackson Harper  <jackson@ximian.com>
15144
15145         * assembly.c: This line was committed accidently and is unneeded.
15146         
15147 2004-05-03  Jackson Harper  <jackson@ximian.com>
15148
15149         * icall.c: Add new icall for Assembly::LoadWithPartialName
15150         * assembly.c/.h: new function that probes the GAC to load partial
15151         assembly names by Paolo Molaro.
15152         
15153 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15154
15155         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
15156         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
15157         (type_get_fully_qualified_name): Added PublicKeyToken when building a
15158         full type name.
15159
15160 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15161
15162         * appdomain.c: fixed check for 'neutral' culture and removed warning.
15163         * reflection.c: fix bug when parsing a full type name and Version is not
15164         the last thing in the string.
15165
15166 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
15167
15168         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
15169         crashes when it is freed.
15170
15171 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15172
15173         * assembly.c: print the compat warning to stderr.
15174
15175 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
15176
15177         * assembly.c (mono_assembly_load_references): Add a compatibility
15178         hack to run old applications that might be still referencing the
15179         3300-based assemblies, only do this for System.xxx.
15180
15181 2004-05-01  Jackson Harper  <jackson@ximian.com>
15182
15183         * appdomain.c: If the culture is neutral we set it to "".
15184         
15185 2004-04-29  Jackson Harper  <jackson@ximian.com>
15186
15187         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
15188
15189 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
15190  
15191         * string-icalls.c: added low overhead function for copying chars
15192         * icall.c: added needed icall for the above function
15193  
15194 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15195
15196         * icall.c: fix return value of get_global_assembly_cache.  Implemented
15197         Environment.GetLogicalDrives.
15198
15199 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
15200
15201         * rand.c: try and talk to egd or prngd
15202         for random bytes if opening devices fail.
15203
15204 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15205
15206         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
15207         alignment for the type using the native alignment of its members 
15208         instead of using klass->min_align.
15209
15210         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
15211
15212 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15213
15214         * file-io.c:
15215         * socket-io.c: added check for sys/aio.h.
15216
15217 2004-04-28  Dick Porter  <dick@ximian.com>
15218
15219         * threads.c: Don't abort a thread thats already aborting, when
15220         terminating everything.
15221
15222 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15223
15224         * icall.c: added 2 new async calls for Socket.
15225
15226         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
15227         IO on *nix systems.
15228
15229         * threadpool.c: removed unused variable.
15230
15231 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
15232
15233         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
15234
15235 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
15236
15237         * locales.c: put back string_invariant_tolower () and
15238         string_invariant_toupper ().
15239
15240 2004-04-26 David Waite <mass@akuma.org>
15241
15242         * file-io.h:
15243         * socket-io.h:
15244         * threads.h:
15245         * unicode.h: remove comma from end of enumeration declarations
15246
15247 2004-04-26 David Waite <mass@akuma.org>
15248
15249         * debug-mono-symfile.h:
15250         * decimal.c:
15251         * mono_debug.h:
15252         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
15253
15254
15255 2004-04-26  Jackson Harper  <jackson@ximian.com>
15256
15257         * appdomain.c: Increment version number.
15258         
15259 2004-04-26  Jackson Harper  <jackson@ximian.com>
15260
15261         * appdomain.c: Set assembly references public token value when
15262         PublicKeyToken is specified, not the hash_value. Free public token
15263         values when free assembly name data. Previously the public key
15264         token was hex decoded, however we are using hex encoded public key
15265         tokens, so this is not neccasary.
15266         * assembly.c: Lookup assemblies in the gac if their public token
15267         value is set. Add function to allow enabling user gac
15268         lookups. Specify whether or not the assembly was loaded from the
15269         GAC. Compare full assembly names when checking the cache for
15270         assemblies (Temporarily disabled see comment in code). Remove
15271         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
15272         specifies trace-loader they get extra info to stdout on the
15273         loading of assemblies.
15274         * image.h: Add a field for an assembly references public token
15275         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
15276         whether an assembly has been loaded from the GAC.
15277         * image.c: Remove a corlib -> mscorlib name mapping.
15278         * loader.h: Add function to enable/disable the user gac.
15279         * mono-config.c: Check if the usergac is enabled in the config
15280         file.
15281         * icall.c: New icall to determine whether or not an assembly has
15282         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
15283         * tabldefs.h: Add constant for assemblyref flag that specifies a
15284         full public key is used instead of a public token.
15285         * reflection.c: Remove mscorlib -> corlib mappings. Set
15286         PublicTokenValue instead of hash value. This value is a hex
15287         string so it does not need to be expanded.
15288
15289 2004-04-26  Martin Baulig  <martin@ximian.com>
15290
15291         * mono-debug-debugger.c (mono_debugger_initialize): Set
15292         `mono_debugger_initialized' before calling mono_debug_lock().
15293
15294 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
15295
15296         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
15297           InternalToUpper/InternalToLower.
15298         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
15299           removed invariant culture shortcut.  This is now done in managed code.
15300         * locales.c: (string_invariant_toupper/tolower) removed.
15301
15302 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15303
15304         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
15305         Added Poll internal call.
15306
15307         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
15308         call for Poll. Select was too heavy for polling a single socket.
15309
15310         * threadpool.[ch]: added mono_threadpool_cleanup.
15311         * threads.c: use it. Don't use Thread_Abort on windows.
15312
15313 2004-04-23  Martin Baulig  <martin@ximian.com>
15314
15315         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
15316
15317 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
15318
15319         * icall.c: Registred new icalls for key pair protection and added an
15320         icall for Environment.GetFolderPath on Windows.
15321         * security.c|h: Added new icalls for key pair protection.
15322
15323 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15324
15325         * socket-io.c: don't display the non-supported family warning for known
15326         families. Now this is not displayed on windows when checking support
15327         for IPv4/IPv6.
15328
15329 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15330
15331         * class.c: don't display the layout warning for static fields.
15332
15333 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
15334
15335         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
15336         * locales.c, locales.h: Added new icalls for culture-specific
15337         Char.ToLower and Char.ToUpper.
15338
15339 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15340
15341         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
15342         by David Waite.
15343
15344 2004-04-20  Martin Baulig  <martin@ximian.com>
15345
15346         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
15347         of the type name before passing it to mono_reflection_type_from_name().
15348
15349 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15350
15351         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
15352         encodings here. Fixes #56965.
15353
15354 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
15355
15356         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
15357         fix test on strstr result not that I can see anything that
15358         relies on the result.
15359
15360 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15361
15362         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
15363         Fixes #57081.
15364
15365         * marshal.c (mono_marshal_get_string_encoding): New helper function.
15366
15367         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
15368         function to determine which marshalling to use for strings. Fixes
15369         #56965.
15370
15371         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
15372
15373         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
15374
15375 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
15376
15377         * icall.c: #include mono-config.h
15378
15379 2004-04-15  Jackson Harper  <jackson@ximian.com>
15380
15381         * culture-info-tables.h: Fix date formats for en-US culture.
15382         
15383 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
15384
15385         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
15386         ThreadPool.SetMinThreads.
15387         * threadpool.c: Implemented ThreadPool.GetMinThreads and
15388         ThreadPool.SetMinThreads.
15389
15390 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
15391
15392         * mono-config.c: also load the .config file in the directory
15393         where the assembly was found.
15394
15395 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15396
15397         * assembly.c: load per-assembly config files.
15398         * icall.c: decrapified code to get the config dir and moved to
15399         mono-config.c.
15400         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
15401         per-assembly config files. When doing a dll map lookup give precedence
15402         to the per-assembly data.
15403
15404 2004-04-14  Martin Baulig  <martin@ximian.com>
15405
15406         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
15407         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
15408         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
15409
15410         * mono-debugger-debugger.c: While the debugger is locked, remember
15411         whether the symbol tables have changes and send one single
15412         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
15413
15414 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15415
15416         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
15417
15418         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
15419         function.
15420
15421         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
15422         account when marshalling string arrays. Fixes #56965.
15423
15424 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
15425
15426         * icall.c: Add new icalls mapping for security.
15427         * security.c|h: Add internal calls for WindowsIdentity,
15428         WindowsImpersonationContext and WindowsPrincipal.
15429
15430 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
15431
15432         * class.c: Added comment to ensure the System.MonoDummy class
15433         is removed when no longer necessary
15434
15435 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15436
15437         * appdomain.c: Pass arguments to the bootstraping exceptions to
15438         minimize JITed methods at boot
15439
15440         * metadata.c (mono_exception_from_name_two_strings): Allow for the
15441         second string to be null.
15442
15443         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
15444         Change the protocol to minimize the JIT methods at startup.  Now
15445         it Returns the internal codepage, if the value of "int_code_page"
15446         is 1 at entry, and we can not compute a suitable code page
15447         number, returns the code page as a string.
15448
15449 2004-04-13  Jackson Harper  <jackson@ximian.com>
15450
15451         * culture-info-tables.h: Fix number of decimal digits for all
15452         english locales.
15453
15454 2004-04-13  Jackson Harper  <jackson@ximian.com>
15455
15456         * icall.c: Clairfy out of sync error message. It is not always
15457         your corlib that is out of sync.
15458
15459 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
15460
15461         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
15462         properties when only the set accessor is overriden. Fixes #55874.
15463
15464 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
15465
15466         * assembly.c (mono_assembly_load_references): Make this thread safe.
15467         Fixes #56327.
15468
15469 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15470
15471         * monosn.c: Add missing initialization calls.
15472
15473 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
15474
15475         * locales.c:
15476         ves_icall_System_Globalization_CultureInfo_construct_number_format
15477         Fix g_assert so it compiles on fussier compilers re int/ptr
15478         mismatch
15479
15480 2004-04-08  Dick Porter  <dick@ximian.com>
15481
15482         * socket-io.h:
15483         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
15484         53992.  Also rearrange the code so that the internal calls return
15485         an error value and exceptions are thrown from managed code.
15486
15487         * icall.c: Add type info to the socket icalls.
15488
15489 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15490
15491         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
15492         owes me a beer.
15493
15494 2004-04-07  Martin Baulig  <martin@ximian.com>
15495
15496         * class.c (mono_class_from_generic_parameter): Don't default
15497         `klass->parent' to `mono_defaults.object_type'.
15498
15499 2004-04-07  Martin Baulig  <martin@ximian.com>
15500
15501         * reflection.c (mono_reflection_initialize_generic_parameter): Set
15502         `param->pklass->reflection_info'.       
15503
15504 2004-04-07  Jackson Harper  <jackson@ximian.com>
15505
15506         * culture-info-tables.h: Fix date separator symbol.
15507         
15508 2004-04-07  Martin Baulig  <martin@ximian.com>
15509
15510         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
15511         from System.Type to System.MonoType.
15512
15513 2004-04-07  Martin Baulig  <martin@ximian.com>
15514
15515         * reflection.h
15516         (MonoReflectionGenericParam): Added `has_reference_type' and
15517         `has_value_type' fields.
15518
15519         * reflection.c (mono_image_get_generic_param_info): Encode the
15520         correct flags if we have the `class' or `struct' constraint.
15521
15522 2004-04-07  Martin Baulig  <martin@ximian.com>
15523
15524         * reflection.h
15525         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
15526
15527 2004-04-07  Jackson Harper  <jackson@ximian.com>
15528
15529         * appdomain.c: Revert extra patches, just wanted to bump the
15530         version number.
15531         
15532 2004-04-07  Jackson Harper  <jackson@ximian.com>
15533
15534         * Makefile.am: Add culture-info private headers.
15535         * icall.c: Add new icalls for contructing locales.
15536         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
15537         * locales.h: Declare new culture info construction methods.
15538         * object.h: Add new fields used to avoid the CultureMap to
15539         MonoCultureInfo.
15540         * culture-info.h: Definition of structs used in the culture info
15541         tables.
15542         * culture-info-tables.h: Autogenerated tables that contain culture
15543         info data. This file was generated with the locale-builder tool.
15544         * appdomain.c: Incement corlib version number.
15545         
15546 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
15547
15548         * appdomain.c: (mono_runtime_init) move mono_thread_init
15549         to before mono_object_new calls so critical sections
15550         are initialized before use.
15551
15552 2004-04-07  Martin Baulig  <martin@ximian.com>
15553
15554         * icall.c
15555         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
15556         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
15557         (ves_icall_MonoGenericParam_initialize): Removed.
15558         (monogenericparam_icalls): Removed.
15559         (generictypeparambuilder_icalls): Added new table for
15560         System.Reflection.Emit.GenericTypeParameterBuilder.
15561
15562         * reflection.c
15563         (mono_reflection_define_generic_parameter): Removed.
15564         (mono_reflection_initialize_generic_parameter): This is now called
15565         from GenericTypeParameterBuilder's .ctor.
15566
15567 2004-04-06  Martin Baulig  <martin@ximian.com>
15568
15569         * class.c (mono_class_init): Don't inflate nested classes in a
15570         generic instance.
15571         (mono_type_get_name_recurse): Include the generic arguments for
15572         generic instances and generic type declarations.
15573         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
15574         (_mono_class_get_instantiation_name): Removed.
15575         (mono_class_create_generic): Always use `gklass->name' as our name.
15576
15577         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
15578
15579         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
15580         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
15581         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
15582         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
15583         closed generic methods here.
15584
15585         * reflection.c
15586         (mono_reflection_generic_inst_get_nested_types): Removed.
15587         (inflate_mono_method): Copy the generic parameters from the
15588         MonoMethodHeader into out MonoGenericMethod.
15589
15590 2004-04-06  Martin Baulig  <martin@ximian.com>
15591
15592         * row-indexes.h
15593         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
15594
15595         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
15596
15597         * reflection.c (build_compressed_metadata): If we have any entries
15598         in the GenericParam, MethodSpec or GenericParamConstraint tables,
15599         set the header version to 1.1.
15600
15601 2004-04-06  Martin Baulig  <martin@ximian.com>
15602
15603         * class.c (mono_class_init): If we're a generic instance,
15604         initialize our nested classes, too.
15605         (_mono_class_get_instantiation_name): Deal with the new `!%d'
15606         suffix. 
15607
15608 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15609
15610         * process.c: quote the argument passed to the shell on windows.
15611
15612 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15613
15614         * threads.c (mono_alloc_special_static_data): Allow this to be
15615         called during startup.
15616
15617 2004-04-02  Martin Baulig  <martin@ximian.com>
15618
15619         * icall.c
15620         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
15621
15622 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15623
15624         * icall.c: Fix build.
15625
15626 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
15627
15628         * Makefile.am: Added security.c|h.
15629         * icall.c: Added icall for get_UserName;
15630         * security.c: New file for security related icalls. Added function
15631         get_UserName for System.Environment (fix #56144).
15632         * security.h: New. Header file for security.c
15633
15634 2004-04-02  Dick Porter  <dick@ximian.com>
15635
15636         * icall.c: Deleted the icalls that were obsoleted some time ago
15637         by the ICU string code, and which were mixed into the icall
15638         rearranging.  Fixes bug 55969.
15639
15640         * string-icalls.h: 
15641         * string-icalls.c: Deleted the code that those icalls reference.
15642
15643 2004-04-01  Martin Baulig  <martin@ximian.com>
15644
15645         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
15646
15647         * class.c (mono_class_from_generic_parameter): Don't set 
15648         TYPE_ATTRIBUTE_INTERFACE.
15649         (my_mono_class_from_generic_parameter): Likewise.
15650
15651 2004-04-01  Martin Baulig  <martin@ximian.com>
15652
15653         * loader.c (find_method): Added an optional `MonoClass *ic'
15654         argument to search in a specific interface.
15655         (mono_get_method_constrained): New public function.
15656
15657 2004-04-01  Martin Baulig  <martin@ximian.com>
15658
15659         * reflection.c (mono_image_get_generic_field_token): Use the
15660         `handleref' cache here.
15661
15662 2004-04-01  Martin Baulig  <martin@ximian.com>
15663
15664         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
15665
15666         * reflection.c (create_generic_typespec): Use the `typespec' hash
15667         here, not the `typeref' one.    
15668
15669 2004-04-01  Martin Baulig  <martin@ximian.com>
15670
15671         * class.c (mono_class_inflate_generic_type): Moved the
15672         functionality into a new static inflate_generic_type() which
15673         returns NULL if it didn't do anything.  Only increment the
15674         `mono_stats.inflated_type_count' if we actually inflated
15675         something.
15676         (mono_class_get_full): Check the classes type to see whether we
15677         need to inflate it; also inflate MONO_TYPE_(M)VAR.
15678
15679 2004-04-01  Jackson Harper  <jackson@ximian.com>
15680
15681         * reflection.c: Set culture for assembly references.
15682         
15683 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
15684
15685         * reflection.[ch], icall.[ch], Fix support for pinning variables.
15686
15687 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15688
15689         * assembly.c:
15690         (do_mono_assembly_open): the critical section also covers
15691         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
15692
15693 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15694
15695         * threads.c:
15696         (mono_manage_threads): abort the background threads when finishing.
15697         Fixes bug #47232.
15698
15699 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15700
15701         * gc.c: only close the done_event handle if there was no timeout.
15702         C-ified comments.
15703
15704 2004-03-30  Martin Baulig  <martin@ximian.com>
15705
15706         * icall.c (icall_entries): It's called "System.Activator", not
15707         "System.Activation".    
15708
15709 2004-03-30  Martin Baulig  <martin@ximian.com>
15710
15711         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
15712         (mono_class_create_from_typespec): Likewise.
15713
15714 2004-03-30  Martin Baulig  <martin@ximian.com>
15715
15716         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
15717         `has_ctor_constraint' and `initialized'.
15718
15719 2004-03-30  Martin Baulig  <martin@ximian.com>
15720
15721         * reflection.c (encode_new_constraint): New static function to add
15722         the constructor constraint attribute to a type parameter.
15723         (encode_constraints): Call encode_new_constraint() if necessary.
15724
15725         * reflection.h
15726         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
15727
15728         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
15729         
15730 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
15731
15732         * reflection.c, icall.c: add support for pinning variables. 
15733
15734 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
15735
15736         * marshal.c (mono_marshal_get_managed_wrapper):
15737         init bool local with zero rather than null.
15738
15739 2004-03-29  Martin Baulig  <martin@ximian.com>
15740
15741         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
15742         the "official" behavior here.
15743         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
15744
15745 2004-03-29  Martin Baulig  <martin@ximian.com>
15746
15747         * icall.c: Reflect latest API changes.
15748
15749 2004-03-29  Martin Baulig  <martin@ximian.com>
15750
15751         * loader.c (mono_get_method_from_token): Also call
15752         mono_metadata_load_generic_params () for abstract and interface
15753         methods; replace the type arguments in the method signature with
15754         the ones which are loaded from the metadata.
15755
15756 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
15757
15758         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
15759         of the lock is not the current thread. MS.NET don't do it, in spite of
15760         what the documentation says. See bug #56157.
15761
15762 2004-03-28  Martin Baulig  <martin@ximian.com>
15763
15764         * class.c (mono_class_init): Don't call init_properties() and
15765         init_events() for generic instances; set `prop->parent' when
15766         inflating properties.
15767
15768         * reflection.c (mono_generic_inst_get_object): Call
15769         `mono_class_init (ginst->klass)'.
15770         (mono_type_get_object): Only create a MonoGenericInst if your
15771         generic type is a TypeBuilder.
15772         (do_mono_reflection_bind_generic_parameters): Only set
15773         `ginst->is_dynamic' if our generic type is a TypeBuilder.
15774
15775 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15776
15777         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
15778         Fixes #56091.
15779
15780 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15781
15782         * icall.c: added Kill_internal icall.
15783         * process.[ch]: added Kill_internal icall.
15784
15785 2004-03-25  Martin Baulig  <martin@ximian.com>
15786
15787         * class.h (MonoStats): Added `generic_instance_count',
15788         `inflated_method_count', `inflated_type_count' and
15789         `generics_metadata_size'.       
15790
15791 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15792
15793         * reflection.c: no warnings now.
15794
15795 2004-03-25  Martin Baulig  <martin@ximian.com>
15796
15797         * class.c (mono_class_get_full): New public function; does a
15798         mono_class_get(), but also takes a `MonoGenericContext *'.
15799
15800         * loader.c (mono_field_from_memberref): Renamed to
15801         `field_from_memberref', made static and added `MonoGenericContext *'
15802         argument.
15803         (mono_field_from_token): Added `MonoGenericInst *' argument.
15804         (method_from_memberef): Likewise.
15805         (mono_get_method_from_token): Likewise.
15806         (mono_get_method_full): New public function; does a
15807         mono_get_method(), but also takes a `MonoGenericContext *'.
15808
15809         * verify.c (mono_method_verify): Get the method's generic context
15810         and pass it to mono_field_from_token(), mono_get_method_full() and
15811         mono_class_get_full().
15812
15813 2004-03-25  Martin Baulig  <martin@ximian.com>
15814
15815         * class.c (mono_class_inflate_generic_type): Take a
15816         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
15817         `MonoGenericMethod *'.
15818
15819 2004-03-25  Martin Baulig  <martin@ximian.com>
15820
15821         * loader.h (MonoMethodInflated): Store the MonoGenericContext
15822         instead of the MonoGenericMethod here.
15823
15824 2004-03-25  Martin Baulig  <martin@ximian.com>
15825
15826         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
15827         each time we create a new MonoGenericInst, we also create a new
15828         context which points back to us.
15829
15830         * class.c (inflate_method): Use `ginst->context' instead of
15831         creating a new context.
15832
15833         * loader.c (method_from_memberref): Use
15834         `klass->generic_inst->context' instead of creating a new context.
15835
15836 2004-03-25  Martin Baulig  <martin@ximian.com>
15837
15838         * class.h (MonoGenericContext): New struct.
15839         (MonoGenericMethod): Removed `generic_inst'.
15840
15841         * class.c (mono_class_inflate_generic_method): Take a
15842         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
15843
15844 2004-03-25  Martin Baulig  <martin@ximian.com>
15845
15846         * loader.h (MonoMethodInflated): New typedef.
15847
15848         * metadata.h (MonoMethodSignature): Removed `gen_method', make
15849         `generic_param_count' consume just 30 bits, added `is_inflated'
15850         and `has_type_parameters' flags (one bit each).
15851
15852         * class.c (mono_class_inflate_generic_method): Create a
15853         MonoMethodInflated instead of a MonoMethodNormal and set
15854         `is_inflated' in the method signature.
15855
15856         * class.h (MonoGenericMethod): Removed `generic_method'.
15857
15858 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
15859
15860         * image.c: Make sure the name of a MonoImage is always an absolute path.
15861           This fixes bug #54415.
15862
15863 2004-03-24  Martin Baulig  <martin@ximian.com>
15864
15865         * class.c (mono_class_setup_vtable): If we're a generic instance,
15866         use our generic type's vtable size.
15867
15868 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15869
15870         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
15871         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
15872         problems.
15873
15874 2004-03-23  Martin Baulig  <martin@ximian.com>
15875
15876         * class.h (MonoDynamicGenericInst): Added `int count_events' and
15877         `MonoEvent *events'.
15878
15879         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
15880         (typebuilder_icalls): Added "get_event_info"; calls
15881         mono_reflection_event_builder_get_event_info(). 
15882
15883         * reflection.c (mono_reflection_generic_inst_initialize): Added
15884         `MonoArray *events'.
15885         (mono_reflection_event_builder_get_event_info): New function.
15886
15887 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
15888
15889         * object.h: add mono_type_initialization_init
15890
15891         * object.c (mono_runtime_class_init): 
15892         implement class constructor synchronization rules
15893         to cope with threading issues.  
15894         add mono_type_initialization_init
15895
15896         * appdomain.c (mono_runtime_init): call 
15897         mono_type_initialization_init
15898
15899         * class.h: removing initializing field from MonoVTable
15900
15901 2004-03-23  Martin Baulig  <martin@ximian.com>
15902
15903         * class.c (my_mono_class_from_generic_parameter): Use
15904         `param->name' if it's not NULL. 
15905
15906 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
15907
15908         * class.c: do not insert non-virtual methods in the vtable.
15909         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
15910         that means the method is non-virtual. This never would have
15911         happened before.
15912
15913 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15914
15915         * profiler.c: Added lock for accessing coverage_hash.
15916
15917 2004-03-22  Martin Baulig  <martin@ximian.com>
15918
15919         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
15920         `method->method->signature->generic_param_count != 0' to make it
15921         work for interface methods.
15922
15923 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15924
15925         * process.c: quote the string passed to the shell using g_shell_quote.
15926
15927 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15928
15929         * threads.c:
15930         (mono_threads_manage): don't remove the finalizer thread and self
15931         from the threads hash table so that mono_thread_manage can be called
15932         more than once.
15933
15934 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15935
15936         * process.c: quote the arguments when UseShellExecute is true. Fixes
15937         bug #55790.
15938
15939 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15940
15941         * threads.c: set mono_thread_detach as a cleanup routine for every
15942         thread. This way it's always executed upon thread termination, either
15943         aborted or finished normally. No more xsp hangs!
15944
15945 2004-03-17  Martin Baulig  <martin@ximian.com>
15946
15947         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
15948         `int count_nested' and a `MonoType **nested'.
15949
15950         * reflection.c (mono_reflection_bind_generic_parameters): Moved
15951         most of the functionality into a new static
15952         do_mono_reflection_bind_generic_parameters() and don't take a
15953         `MonoType *nested_in' argument any more.  Don't compute nested
15954         types here.
15955         (mono_reflection_generic_inst_get_nested_types): New public method
15956         to get nested types.
15957
15958         * class.c (mono_class_create_generic): Set `klass->nested_in' if
15959         we're a nested class.
15960
15961         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
15962         mono_reflection_generic_inst_get_nested_types() to compute the
15963         nested types.
15964
15965 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15966
15967         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
15968         descriptive error message under windows.
15969         
15970 2004-03-17  Martin Baulig  <martin@ximian.com>
15971
15972         * class.c (dup_type): Added `const MonoType *original' argument;
15973         copy the attrs from the original type.
15974
15975 2004-03-17  Martin Baulig  <martin@ximian.com>
15976
15977         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
15978         `m->generic_inst_cache' here.
15979
15980 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15981
15982         * exception.h exception.c: Add stack_overflow_exception.
15983
15984 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15985
15986         * threadpool.c:
15987         (overlapped_callback): call SetEvent *after* invoking the callback.
15988         No need to call CloseHandle.
15989
15990 2004-03-16  Martin Baulig  <martin@ximian.com>
15991
15992         * reflection.c (mono_image_get_fieldref_token): Take a
15993         `MonoReflectionField *' instead of a `MonoClassField *' and a
15994         `MonoClass *'; store the `MonoReflectionField *' in the hash.
15995
15996 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15997
15998         * appdomain.c: don't add the culture to the filename we're looking for
15999         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
16000
16001 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16002
16003         * locales.c: don't ignore symbols when doing case insensitive compares.
16004         Thanks Dick! Fixes bug #54046.
16005
16006         * threads.c: surround 'threads' usage with enter/leave in
16007         mono_thread_manage.
16008
16009 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
16010
16011         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
16012         implicitly marshalled as [Out]. Fixes #55450.
16013
16014         (mono_marshal_get_runtime_invoke): Zero out the result if there is
16015         an exception.
16016
16017 2004-03-16  Martin Baulig  <martin@ximian.com>
16018
16019         * class.c (mono_class_from_generic_parameter): Use the actual
16020         parameter name. 
16021
16022 2004-03-16  Martin Baulig  <martin@ximian.com>
16023
16024         * reflection.c (type_get_signature_size): New static function.
16025         Compues the size of the type in a method signature.
16026         (method_get_signature_size): New static function; calls
16027         type_get_signature_size() to compute the actual size of the
16028         method's signature.
16029         (method_encode_signature): Use method_get_signature_size() to get
16030         the signature's size rather than using `nparams * 10'.
16031
16032 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16033
16034         * file-io.h: define here WapiOverlapped on windows. I don't want the
16035         regular OVERLAPPED one.
16036
16037         * file-io.c:
16038         * threadpool.c: somehow, BindIoCompletionCallback is not found.
16039         Disabling AIO on windows.
16040
16041 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16042
16043         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
16044         bug #55385.
16045
16046 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16047
16048         * appdomain.c: upgraded corlib version.
16049
16050         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
16051         and BeginWrite. Allow opening files for asynchrnous operations.
16052
16053         * file-io.h: new struct that maps FileStreamAsyncResult.
16054         * icall.c: added new icalls.
16055         * process.[ch]: support setting child process environment variables
16056         and use the SHELL or COMSPEC when UseShellExecute is true.
16057
16058         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
16059         callback for async. IO is here and also BindHandle.
16060
16061         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
16062         from here.
16063
16064 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
16065
16066         * reflection.c (create_custom_attr): Allow len == 0.
16067
16068         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
16069         computation on big-endian machines.
16070
16071 2004-03-13  Martin Baulig  <martin@ximian.com>
16072
16073         * class.h (MonoGenericInst): Added `int count_ifaces'.
16074
16075         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
16076         `ginst->count_ifaces' instead `klass->interface_count' since we
16077         may get called before the vtable is created.
16078
16079         * loader.c (mono_method_get_param_names): If we're a generic
16080         instance, return and don't initialize the class.
16081
16082         * reflection.c (mono_reflection_setup_generic_class): Don't call
16083         ensure_runtime_vtable().
16084         (mono_reflection_bind_generic_parameters): Set
16085         `ginst->count_ifaces'.
16086
16087 2004-03-11  Jackson Harper <jackson@ximian.com>
16088
16089         * icall.c:
16090         * unicode.c:
16091         * unicode.h: Remove unused System.Char icalls.
16092         
16093 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
16094
16095         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
16096         code when we P/Invoke the first library in Windows.Forms, instead
16097         of when we first open the assembly.
16098
16099         * assembly.c: Drop the lookup from here.
16100
16101 2004-03-10  Martin Baulig  <martin@ximian.com>
16102
16103         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
16104         class for properties, fields and events.  Finally fixes #54945.
16105
16106 2004-03-10  Martin Baulig  <martin@ximian.com>
16107
16108         * metadata.c (mono_metadata_class_equal): New static function;
16109         checks whether two generic instances or two generic parameters are
16110         equal.
16111         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
16112         compare classes.        
16113
16114 2004-03-10  Martin Baulig  <martin@ximian.com>
16115
16116         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
16117
16118         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
16119         argument and write it into the `reflection_info' field.
16120
16121         * icall.c
16122         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
16123         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
16124
16125 2004-03-09  Jackson Harper  <jackson@ximian.com>
16126
16127         * char-conversions.h: use 8 bits for numeric data its all we need
16128         * icall.c: numeric data is only 8 bits now.
16129
16130 2004-03-09  Martin Baulig  <martin@ximian.com>
16131
16132         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
16133
16134         * class.c (init_properties, init_events): Initialize the new
16135         `parent' field.
16136
16137         * reflection.c (typebuilder_setup_properties): Likewise.
16138         (typebuilder_setup_events): Likewise.
16139
16140         * reflection.h (MonoEventInfo): Replaced `parent with
16141         `declaring_type' and `reflected_type'.
16142
16143         * icall.c (ves_icall_get_property_info): Distinguish between
16144         declaring and reflected type.
16145         (ves_icall_get_event_info): Likewise.
16146
16147 2004-03-09  Martin Baulig  <martin@ximian.com>
16148
16149         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
16150         (ves_icall_Type_GetField): Correctly set field->klass.
16151
16152 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
16153
16154         * loader.h: Fix warning.
16155
16156 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
16157
16158         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
16159         library routine if present.  Notice that it will still continue
16160         executing even if its missing, for those working on the Gtk#
16161         edition of Windows.Forms.
16162
16163         * assembly.c (do_mono_assembly_open): If loading the
16164         System.Windows.Forms call mono_loader_wini_init.
16165
16166 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
16167
16168         * class.h: Added MonoRemoteClass struct.
16169         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
16170         function for MonoStrings.
16171         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
16172         Added internal call for getting the proxy type.
16173         * marshal.c: Get the type of transparent proxies from its remote_class.
16174         Added methods that generate the IL for type checks and casts:
16175         mono_marshal_get_isinst, mono_marshal_get_castclass, 
16176         mono_marshal_get_proxy_cancast.
16177         * marshal.h: Declaration of the previous new methods.
16178         * object.c: Added new moethods for creating and updating MonoRemoteClass
16179         instances: mono_remote_class, mono_upgrade_remote_class, 
16180         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
16181         * verify.c: FIx transparent_proxy_fields layout.
16182         * appdomain.c: Bump corlib version.
16183
16184 2004-03-04  Jackson Harper  <jackson@ximian.com>
16185
16186         * icall.c: Add icall to access char conversion tables.
16187         * char-conversions.h: Character conversion tables.
16188         * Makefile.am: Add char-conversions.h private header file.
16189         
16190 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
16191
16192         * appdomain.c (unload_thread_main): Increase unloading timeout to
16193         10 sec as a temporary workaround for Nant problems.
16194
16195 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
16196
16197         * gc.c: Add checks for GC_enable and GC_disable.
16198
16199         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
16200         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
16201         (bug #54988).
16202         
16203 2004-02-27  Martin Baulig  <martin@ximian.com>
16204
16205         * reflection.c (mono_reflection_bind_generic_parameters): Take a
16206         `MonoReflectionType *' instead of a `MonoType *'.
16207
16208 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
16209
16210         * gc.c (run_finalize): Avoid finalizing the object representing the
16211         finalizer thread.
16212         (finalizer_thread): Fix warning.
16213
16214 2004-02-25  Martin Baulig  <martin@ximian.com>
16215
16216         * class.c (_mono_class_get_instantiation_name): Added `int offset'
16217         argument for nested types.
16218         (mono_class_create_generic): Added support for nested generictypes.
16219
16220         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
16221         `GList *nested'.
16222
16223         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
16224
16225         * reflection.c (method_encode_signature): Increase the minimum
16226         value of `size' from 10 to 11.
16227         (mono_reflection_bind_generic_parameters): Take `int type_argc'
16228         and `MonoType **types' arguments instead of the `MonoArray
16229         *types'; added `MonoType *nested_in'.  Recursively instantiate
16230         nested classes. 
16231
16232 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
16235         stack_overflow_ex members which are used by exception handling.
16236
16237         * appdomain.c (mono_runtime_init): Initialize the new members.
16238
16239         * gc.c (mono_gc_enable): New helper function.
16240         * gc.c (mono_gc_disable): New helper function.
16241
16242 2004-02-23  Martin Baulig  <martin@ximian.com>
16243
16244         * icall.c: I must have been really stupid - make it actually work
16245         this time ;-)
16246
16247 2004-02-23  Martin Baulig  <martin@ximian.com>
16248
16249         * loader.c (method_from_memberref): Only inflate the method if
16250         it's in another klass.
16251
16252 2004-02-23  Martin Baulig  <martin@ximian.com>
16253
16254         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
16255         (mono_class_init): If we're a generic instance and an interface,
16256         compute `class->interface_id'; also create `class->interfaces'
16257         here and inflate them.
16258
16259         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
16260         `ginst->is_open'.
16261         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
16262
16263         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
16264
16265 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
16266
16267         * reflection.c (method_encode_code): Improved the error message
16268         generated by the exception.
16269
16270 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16271
16272         * icall.c: Martin did not do what he said in the ChangeLog for
16273         2004-02-18, but put back the changes for properties and events.
16274         Commenting those changes out again and adding comment to bug #54518.
16275         
16276         * process.c: removed warning.
16277
16278 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
16279
16280         * marshal.c (emit_struct_conv): Print an error message instead of
16281         asserting when a type does not have the StructLayout attribute.
16282
16283 2004-02-20  Martin Baulig  <martin@ximian.com>
16284
16285         * reflection.c (mono_type_get_object): Also use the cache for
16286         generic instances.
16287         (mono_reflection_bind_generic_parameters): Always compute
16288         `ginst->ifaces'.        
16289
16290 2004-02-20  Martin Baulig  <martin@ximian.com>
16291
16292         * class.h (MonoGenericMethod): Removed `klass'.
16293
16294         * class.c (mono_class_inflate_generic_method): Added `MonoClass
16295         *klass' argument.
16296
16297 2004-02-20  Martin Baulig  <martin@ximian.com>
16298
16299         * reflection.c (method_encode_methodspec): Actually use the
16300         uninflated signature for the memberref.
16301
16302 2004-02-20  Martin Baulig  <martin@ximian.com>
16303
16304         * class.h (MonoGenericMethod): Removed `declaring'.
16305
16306         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
16307         is NULL, compute it here.
16308
16309 2004-02-20  Martin Baulig  <martin@ximian.com>
16310
16311         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
16312
16313         * metadata.c (mono_metadata_generic_inst_hash): New method.
16314         (mono_metadata_generic_inst_equal): New method.
16315
16316         * reflection.c (mono_reflection_bind_generic_parameters): Use the
16317         `klass->image->generic_inst_cache' cache to avoid creating
16318         duplicate MonoGenericInst's.
16319
16320         * class.c (mono_class_inflate_generic_type): Use the cache.
16321
16322 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
16323
16324         * object.c: fixed gc descriptor calculation for embedded valuetypes.
16325
16326 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16327
16328         * icall.c: added Socket.WSAIoctl icall.
16329
16330         * socket-io.[ch]: implemented
16331         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
16332
16333 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
16334
16335         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
16336
16337 2004-02-18  Urs C Muff  <umuff@quark.com>
16338
16339         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
16340         this work on PPC and other big-endian architectures.
16341
16342         * debug-mono-symfile.h: Prepended the names of all the `guint32'
16343         fields with an underscore to make sure they're only accessed by
16344         the read32() macro.
16345
16346 2004-02-18  Martin Baulig  <martin@ximian.com>
16347
16348         * icall.c: Put the klass->refclass changes back for methods and
16349         fields, but not for properties and events.  We're currently not
16350         distinguishing between DeclaringType and ReflectedType for
16351         properties and events, that's what caused the regressions.
16352
16353 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16354
16355         * object.c:
16356         (mono_async_result_new): the handle can be NULL.
16357
16358         * threadpool.c: Use an event instead of a semaphore, don't initialize
16359         it until needed. This saves quite a few semaphores from being created
16360         when using the threadpool.
16361
16362 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
16363
16364         * object.c (mono_string_is_interned_lookup): Fix interning of long
16365         strings. Fixes #54473.
16366
16367         * domain.c (ldstr_equal): Optimize if the two strings are equal.
16368
16369         * icall.c: Revert the klass->refclass changes since they introduce
16370         regressions (bug #54518).
16371
16372 2004-02-18  Martin Baulig  <martin@ximian.com>
16373
16374         * class.c (mono_class_init): If we're a generic instance and don't
16375         come from a TypeBuilder, inflate our members here.
16376         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
16377         (mono_class_create_generic): New public method.
16378         (mono_class_initialize_generic): Removed.
16379         (get_instantiation_name): Renamed to
16380         _mono_class_get_instantiation_name() and made it public.
16381
16382 2004-02-18  Martin Baulig  <martin@ximian.com>
16383
16384         * class.c (mono_class_inflate_generic_type): Clear the new
16385         instance's `nginst->klass' when inflating a generic instance.
16386         (mono_class_is_subclass_of): Added (basic) support for generic
16387         instances.
16388
16389 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
16390
16391         * appdomain.h, domain.c: use a MonoCodeManager instead of a
16392         MonoMempool to hold compiled native code.
16393
16394 2004-02-17  Martin Baulig  <martin@ximian.com>
16395
16396         * class.h (MonoDynamicGenericInst): Added `count_properties' and
16397         `properties'.
16398
16399         * reflection.c (mono_reflection_generic_inst_initialize): Added
16400         `MonoArray *properties' argument.
16401
16402         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
16403
16404 2004-02-17  Martin Baulig  <martin@ximian.com>
16405
16406         * icall.c (ves_icall_Type_GetFields): Renamed to
16407         ves_icall_Type_GetFields_internal() and added a
16408         `MonoReflectionType *rtype' argument; pass it to
16409         mono_field_get_object() to set the field's "reflected" type.
16410         (ves_icall_Type_GetConstructors): Likewise.
16411         (ves_icall_Type_GetEvents): Likewise.
16412         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
16413         argument; pass it to mono_method_get_object() to set the method's
16414         "reflected" type.       
16415
16416 2004-02-17  Martin Baulig  <martin@ximian.com>
16417
16418         * class.h (MonoDynamicGenericInst): New type.
16419         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
16420
16421         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
16422         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
16423         (ves_icall_MonoGenericInst_GetFields): New interncall.
16424
16425         * class.c (mono_class_from_generic): Don't call
16426         mono_class_initialize_generic() if this is a dynamic instance;
16427         ie. it's being created from a TypeBuilder.
16428         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
16429         `class->byval_arg.type'.
16430
16431         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
16432         to `inflate_method' and made static.
16433         (mono_reflection_inflate_field): Removed.
16434         (mono_reflection_generic_inst_initialize): New public method.
16435
16436         * reflection.h (MonoReflectionGenericInst): Removed `methods',
16437         `ctors' and `fields'; added `initialized'.
16438
16439 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
16440
16441         * debug-helpers.c (mono_method_full_name): Fix output for empty
16442         namespaces.
16443
16444 2004-02-12  Martin Baulig  <martin@ximian.com>
16445
16446         * class.h (MonoClassField): Added `MonoType *generic_type'.
16447
16448         * reflection.c (mono_image_get_fieldref_token): Added support for
16449         instantiated generic types.
16450         (field_encode_inflated_field): Removed.
16451         (mono_image_get_inflated_field_token): Removed.
16452         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
16453
16454         * reflection.h (MonoReflectionInflatedField): Removed.
16455
16456 2004-02-12  Martin Baulig  <martin@ximian.com>
16457
16458         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
16459         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
16460
16461         * reflection.c (mono_image_get_methodspec_token): Take a
16462         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
16463         (mono_image_create_token): Check whether we have a
16464         `method->signature->gen_method' and call
16465         mono_image_get_methodspec_token() if appropriate.
16466         (inflated_method_get_object): Removed.
16467         (mono_reflection_bind_generic_method_parameters): Return a
16468         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
16469         (mono_reflection_inflate_method_or_ctor): Likewise.
16470
16471         * reflection.h (MonoReflectionInflatedMethod): Removed.
16472
16473 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
16474
16475         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
16476         for custom valuetype marshalling.
16477
16478         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
16479
16480 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16481
16482         * icall.c: fixed WSAGetLastError_internal name.
16483
16484 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
16485
16486         * threads.c (mono_thread_attach): Allow this to be called multiple
16487         times for a thread.
16488         
16489         * threads.c (build_wait_tids): Do not wait for ourselves.
16490
16491         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
16492         appdomain list is empty.
16493
16494         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
16495         memory returned by mono_string_builder_to_utf16, since it points into
16496         managed memory. Thanks to Bernie Solomon for noticing this.
16497
16498         * icall.c: Add AppDomainSetup icalls.
16499
16500         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
16501
16502         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
16503         types.
16504
16505         * reflection.c (reflection_methodbuilder_to_mono_method): Save
16506         custom attributes to the method_aux struct. Also fix array indexes etc.
16507
16508         * loader.c (mono_method_get_param_names): Make dynamic case work again.
16509         
16510 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
16511
16512         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
16513         (both static and runtime) and reduce startup time.
16514
16515 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
16516
16517         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
16518         AsAny marshalling conversion instead of crashing.
16519
16520         * marshal.c: Fix warnings.
16521
16522 2004-02-09  Martin Baulig  <martin@ximian.com>
16523
16524         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
16525
16526         * reflection.h (MonoReflectionInflatedMethod): Removed the
16527         `declaring' field, it's now in the unmanaged MonoGenericMethod.
16528
16529         * reflection.c (method_encode_methodspec): Removed the `method'
16530         argument; we get it from `gmethod->declaring'.
16531         (inflated_method_get_object): Removed the `declaring' argument.
16532
16533 2004-02-09  Martin Baulig  <martin@ximian.com>
16534
16535         * class.h (MonoGenericMethod): New type.
16536         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
16537         `generic_method'.
16538
16539         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
16540         a `MonoGenericMethod *gen_method' one.
16541
16542         * class.c (mono_class_inflate_generic_type): Take an additional
16543         `MonoGenericMethod * argument.  This is only non-NULL if we're
16544         inflating types for a generic method.   
16545         (mono_class_inflate_generic_signature): Renamed to
16546         inflate_generic_signature() and made static; take a
16547         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
16548         (inflate_generic_header): Take a `MonoGenericMethod *' argument
16549         instead of a `MonoGenericInst *' one.
16550         (mono_class_inflate_generic_method): Likewise.
16551
16552         * reflection.c (encode_generic_method_sig): Take a
16553         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
16554         (method_encode_methodspec): Likewise.
16555         (inflated_method_get_object): Likewise. 
16556
16557         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
16558         field with a `MonoGenericMethod *gmethod' one.  
16559
16560 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
16561
16562         * class.h (mono_class_has_parent): add parens to expansion
16563         so you can ! this.
16564
16565 2004-02-08  Martin Baulig  <martin@ximian.com>
16566
16567         * image.h (MonoImage): Removed `generics_cache'.
16568
16569         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
16570         instead of a `MonoType *' argument; removed the `inflate_methods'
16571         argument.  Don't inflate methods here.
16572
16573         * loader.c (find_method): If it's a generic instance, call
16574         mono_class_init() on the `sclass->generic_inst->generic_type'.
16575
16576         * metadata.c (mono_type_size): Make this work on uninitialized
16577         generic instances; call it on the `ginst->generic_type's class.
16578
16579         * reflection.c (mono_reflection_bind_generic_parameters): Call
16580         mono_class_from_generic() to create the `ginst->klass'.
16581
16582 2004-02-08  Martin Baulig  <martin@ximian.com>
16583
16584         * class.h (MonoClass): Changed type of `generic_inst' from
16585         `MonoType *' to `MonoGenericInst *'.
16586
16587 2004-02-08  Martin Baulig  <martin@ximian.com>
16588
16589         * icall.c (ves_icall_Type_BindGenericParameters): Just call
16590         mono_type_get_object(), this is now creating a `MonoGenericInst'
16591         for MONO_TYPE_GENERICINST.
16592         (ves_icall_MonoGenericInst_GetParentType): Likewise.
16593         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
16594
16595         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
16596         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
16597         (inflated_method_get_object): Added `MonoClass *refclass' argument.
16598         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
16599         and reflected type.
16600
16601         * reflection.h (MonoReflectionInflatedMethod): Removed
16602         `declaring_type' and `reflected_type'.
16603
16604 2004-02-08  Martin Baulig  <martin@ximian.com>
16605
16606         * class.h (MonoGenericInst): Added `MonoType *parent' and
16607         `MonoType **ifaces'.
16608
16609         * reflection.h (MonoReflectionGenericInst): Removed `klass',
16610         `parent' and `interfaces'.
16611
16612         * reflection.c (mono_reflection_bind_generic_parameters): Take a
16613         `MonoType *' argument and return a `MonoType *'.
16614
16615         * icall.c
16616         (ves_icall_MonoGenericInst_GetParentType): New interncall.
16617         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
16618
16619 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
16620
16621         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
16622         valuetype marshalling.
16623
16624 2004-02-06  Martin Baulig  <martin@ximian.com>
16625
16626         * class.c
16627         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
16628         (my_mono_class_from_generic_parameter): Likewise.
16629
16630 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
16631
16632         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
16633         contents of the symbol files lazily.
16634
16635         * object.h (MonoThread): Add 'name' and 'name_len' fields.
16636
16637         * threads.h threads.c icall.c: New icalls for getting and setting the
16638         threads name.
16639
16640 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
16643         Raise an exception when the domain is not found.
16644
16645 2004-02-03  Martin Baulig  <martin@ximian.com>
16646
16647         * reflection.c (mono_image_get_methodspec_token): Use the
16648         uninflated signature; fixes gen-33.
16649
16650 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
16651
16652         * gc.c threads.c: Make the finalizer thread a normal managed thread so
16653         the finalizer code can use thread functionality.
16654
16655         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
16656         the finalizer thread.
16657
16658         * threads.c: Make some functions more robust.
16659
16660         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
16661
16662         * metadata.h: Add new marshalling conventions.
16663
16664         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
16665         stringbuilder marshalling. Fixes #53700.
16666
16667         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
16668
16669         * reflection.c (mono_image_get_type_info): Save declarative security
16670         info.
16671
16672         * reflection.c (mono_image_get_field_info): Handle uninitialized 
16673         unmanaged fields as well.
16674
16675         * appdomain.c: Bump corlib version.
16676
16677 2004-02-01  Martin Baulig  <martin@ximian.com>
16678
16679         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
16680         method type arguments.  
16681
16682 2004-01-30  Duncan Mak  <duncan@ximian.com>
16683
16684         * marshal.h: Add prototype for
16685         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
16686         and
16687         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
16688         fix the build.
16689
16690 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
16691
16692         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
16693         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
16694
16695 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
16696
16697         * marshal.c (mono_marshal_get_native_wrapper): Add support for
16698         custom marshalling of valuetypes.
16699
16700         * marshal.c: Fix some warnings.
16701
16702 2004-01-29  Martin Baulig  <martin@ximian.com>
16703
16704         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
16705         for generic method parameters.
16706
16707         * reflection.c (method_encode_methodspec): Write the uninflated
16708         signature into the methodspec table.
16709         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
16710         is always the uninflated method.
16711         (reflection_methodbuilder_to_mono_method): Copy the generic
16712         parameters from the MethodBuilder into `header->gen_params'.
16713
16714 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
16715
16716         * class.c (mono_class_from_generic_parameter): Fix warning.
16717
16718 2004-01-27  Martin Baulig  <martin@ximian.com>
16719
16720         * class.c (mono_class_from_generic_parameter): Don't create
16721         `klass->methods' here.  
16722
16723 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
16724
16725         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
16726         extension since it does not work with libraries named lib<FOO>.dll.so.
16727
16728 2004-01-25  Martin Baulig  <martin@ximian.com>
16729
16730         * class.c (mono_class_inflate_generic_type): Added support for
16731         MONO_TYPE_GENERICINST.
16732
16733         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
16734         inflate methods on open constructed types.      
16735
16736 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16737
16738         * object.c: fire ProcessExit event in the root AppDomain after running
16739         Main. Fixes bug #53299.
16740
16741 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
16742
16743         * socket-io.c: include the new socket-wrappers.h header.
16744         Use the wrappers instead of the unix socket functions to make the code
16745         more clear.
16746
16747 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
16748
16749         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
16750
16751         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
16752         Fixes #22532.
16753
16754 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * reflection.c (mono_image_create_pefile): Handle the case when the
16757         entry point is not a MethodBuilder.
16758
16759         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
16760         field to ReflectionMethod since it is not allways a builder.
16761
16762         * reflection.c (type_get_fully_qualified_name): New helper function to
16763         return the fully qualified name of a type.
16764
16765         * reflection.c (encode_marshal_blob): Always emit the fully qualified
16766         type name for custom marshallers.
16767
16768         * reflection.c (mono_marshal_spec_from_builder): Ditto.
16769
16770         * class.c (mono_class_setup_vtable): If a parent class already 
16771         implements an interface, use the implementing methods from that class.
16772         Fixes #53148.
16773
16774 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16775
16776         * threadpool.c: just return instead of ExitThread to allow for thread
16777         clean up earlier.
16778
16779 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
16780
16781         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
16782         when closing resource modules.
16783
16784         * reflection.c (mono_image_create_pefile): Handle the case when the
16785         entry point is not a MethodBuilder.
16786
16787         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
16788         field to ReflectionMethod since it is not allways a builder.
16789
16790 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
16791
16792         * marshal.c (mono_marshal_get_managed_wrapper): 
16793         mono_marshal_alloc takes native int so CONV_I
16794         the arg for 64bits.
16795
16796 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
16797
16798         * reflection.c (fixup_cattrs): New function to fixup the methoddef
16799         tokens in the cattr table. Fixes #53108.
16800
16801 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16802
16803         * loader.c: don't trim ".dll" before looking up in the config file.
16804         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
16805
16806 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
16807
16808         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
16809         Return the module which contains the resource as well.
16810         (ves_icall_System_Reflection_Module_Close): New icall.
16811
16812         * appdomain.c: Bump corlib version number.
16813
16814         * image.c (mono_image_addref): New public function.
16815
16816         * assembly.c: Call mono_image_addref.
16817
16818         * reflection.c (mono_module_get_object): Increase reference count of 
16819         the image.
16820
16821         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
16822         Fixes #22532.
16823
16824         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
16825         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
16826         proper exceptions on DllImport problems.
16827
16828 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
16829
16830         * class.c, metadata.c: eliminate CSIZE macro.
16831
16832 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
16833
16834         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
16835         * object.h: Added async_callback field in MonoAsyncResult.
16836         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
16837         * verify.c: Added async_callback in MonoAsyncResult layout.
16838
16839 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
16840
16841         * reflection.c (mono_reflection_get_custom_attrs): Add support
16842         for Modules.
16843
16844 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
16847         marshalling.
16848         (mono_marshal_method_from_wrapper): Add null pointer check.
16849
16850 2004-01-16  Martin Baulig  <martin@ximian.com>
16851
16852         * debug-mono-symfile.h: Set version number to 36 and reflect
16853         latest symbol writer changes.
16854
16855 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16856
16857         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
16858         multi-dimensional arrays.
16859         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
16860         (mono_class_from_mono_type): Use bounded_array_class_get.
16861         
16862         * class.c (mono_bounded_array_class_get): New function which takes
16863         a 'bounded' bool argument to distinguish vectors from one dimensional
16864         arrays.
16865
16866         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
16867         bounded_array_class_get if the array has bounds.
16868
16869         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
16870         Search modules loaded using AssemblyBuilder:AddModule as well.
16871
16872 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16873
16874         * appdomain.c: increased corlib version.
16875         * filewatcher.c: removed g_print.
16876         * icall.c:
16877         (get_property_info): only allocate what is actually requested.
16878         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
16879
16880 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16881
16882         * Makefile.am: added filewatcher.[ch]
16883         * filewatcher.[ch]: FileSystemWatcher runtime support.
16884         * icall.c: added new FSW icalls.
16885
16886 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
16887
16888         * string-icalls.c: fix stringbuilder regression as suggested by
16889         Iain McCoy <iain@mccoy.id.au>.
16890
16891 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16892
16893         * process.c (process_read_stringtable_block): Recognize '007f' as
16894         a language neutral stringtable block.
16895
16896 2004-01-12  Patrik Torstensson
16897
16898         * object.h (MonoStringBuilder) : Changed layout to support our
16899         new stringbuilder class.
16900         * marshal.c: Change marshalling to support the new layout of 
16901         string builder.
16902         * appdomain.c: increased version number because new layout of
16903         string builder.
16904
16905 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
16906
16907         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
16908         assembly name as an string instead of an AssemblyName, since it is
16909         easier to extract info from it.
16910
16911         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
16912         the culture subdirectories too. Fixes #52231.
16913
16914 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16915
16916         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
16917         It takes 2 new parameters with an optional name for the method to look
16918         for and case ignoring info.
16919
16920         * threadpool.c: removed unused variable.
16921
16922 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16923
16924         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
16925         It takes 2 new parameters with an optional name for the property to look
16926         for and case ignoring info.
16927         Fixes bug #52753.
16928
16929 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
16932         Fix #52451.
16933
16934 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16935
16936         * appdomain.c:
16937         * assembly.c: escape the uri before passing it to g_filename_from_uri.
16938         Fixes bug #52630.
16939
16940 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * reflection.c: Add support for more than one unmanaged resource.
16943
16944         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
16945         in field->def_value, as done in all other cases.
16946
16947         * reflection.c (mono_reflection_get_custom_attrs): Add support for
16948         TypeBuilders.
16949
16950         * reflection.c (mono_reflection_create_runtime_class): Remove 
16951         errorneous assignment to klass->element_class, since it is already
16952         done in mono_reflection_setup_internal_class.
16953
16954 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16955
16956         * gc.c: added missing LeaveCriticalSection.
16957         * icall.c: indented a couple of lines.
16958         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
16959         if we call EndInvoke inside a callback. Fixes bug #52601.
16960
16961 2004-01-07  Martin Baulig  <martin@ximian.com>
16962
16963         * mono-debug-debugger.h
16964         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
16965
16966 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
16967
16968         * appdomain.c: Use messages in NotImplementedException.
16969
16970         * exception.c (mono_get_exception_not_implemented): Now this takes
16971         a message argument.
16972
16973         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
16974         exception instead of g_asserting an aborting when something is not
16975         implemented.
16976
16977         Add some inline docs.
16978
16979 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
16980
16981         * reflection.h: Update after changes to object layout.
16982
16983         * reflection.c: Implement saving of unmanaged aka win32 resources.
16984
16985         * appdomain.c: Bump version number.
16986
16987         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
16988         Handle missing domains gracefully.
16989
16990 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
16991
16992         * file-io.c : On Windows, there are much more invalid_path_chars.
16993
16994 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
16995
16996         * class.h, object.c: prepare for GetType () speedup.
16997
16998 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
16999
17000         * profiler.c: workaround for --profile null reference exception on
17001           cygwin. Patch by Patrik Torstensson.
17002
17003 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
17004
17005         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
17006         make work for unaligned access.
17007
17008 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
17009
17010         * class.c: small cleanup (class->fields [i] -> field).
17011         * image.c: check address of metadata is valid.
17012
17013 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
17014
17015         * assembly.h assembly.c (mono_assembly_loaded): New public function to
17016         search the list of loaded assemblies.
17017
17018         * reflection.c (mono_reflection_type_from_name): Use 
17019         mono_assembly_loaded instead of mono_image_loaded.
17020
17021         * reflection.c: Fix warnings.
17022
17023 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
17024
17025         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
17026         is dynamic. This is needed since an assembly can contain both dynamic and
17027         non-dynamic images.
17028
17029         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
17030         assembly->dynamic.
17031
17032         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
17033
17034         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
17035         to store modules loaded using AddModule.
17036
17037         * reflection.c (mono_image_fill_file_table): Generalize this so it works
17038         on Modules.
17039
17040         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
17041
17042         * reflection.c (mono_image_fill_export_table_from_module): New function to
17043         fill out the EXPORTEDTYPES table from a module.
17044
17045         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
17046         into a separate function. Also handle loaded non-dynamic modules.
17047
17048         * reflection.c (mono_image_basic_init): Fix memory allocation.
17049
17050         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17051
17052         * assembly.c (mono_assembly_load_references): Make this public.
17053
17054 2003-12-19  Martin Baulig  <martin@ximian.com>
17055
17056         * class.c (mono_class_initialize_generic): Made this static, take
17057         a `MonoGenericInst *' instead of a `MonoClass *'.
17058         (mono_class_from_generic): Call mono_class_initialize_generic()
17059         unless we're already initialized or being called from
17060         do_mono_metadata_parse_generic_inst().
17061
17062         * class.h (MonoGenericInst): Added `initialized' and
17063         `init_pending' flags.
17064
17065         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
17066         `mono_class_init (gklass)' or mono_class_initialize_generic()
17067         here; set `generic_inst->init_pending' while parsing the
17068         `type_argv'.
17069
17070 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
17071
17072         * locales.c: include string.h for memxxx prototypes
17073
17074 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
17075
17076         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
17077         constructor when accessing literal fields.
17078
17079 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
17080
17081         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17082
17083         * reflection.c (assembly_add_resource_manifest): New function to fill
17084         the MANIFESTRESOURCE table.
17085
17086         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
17087
17088         * reflection.h: Update to changes in class layout.
17089
17090         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
17091         Reenable call to mono_runtime_is_shutting_down ().
17092
17093         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
17094         determine if the runtime is shutting down.
17095
17096 2003-12-16  Jackson Harper <jackson@ximian.com>
17097
17098         * icall.c: comment out call to mono_runtime_is_shutting_down to
17099         fix build.
17100         
17101 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
17102
17103         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
17104         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
17105
17106 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
17107
17108         * reflection.c: move definition of swap_with_size
17109         to before its first call
17110
17111 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
17112
17113         * appdomain.c (mono_runtime_is_shutting_down): New public function.
17114
17115         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
17116         icall.
17117
17118         * object.c: Fix warnings.
17119
17120         * icall.c (ves_icall_Type_Get...): Only consider inherited static
17121         members if FlattenHierarchy is set.
17122
17123         * reflection.c (mono_image_add_decl_security): New function to emit
17124         declarative security.
17125
17126         * reflection.h reflection.c: Add support for declarative security.
17127
17128         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17129         
17130 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
17131
17132         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
17133         
17134         * appdomain.c verify.c: Moved corlib version checking into its own
17135         function in appdomain.c since it needs to create vtables etc.
17136
17137 2003-12-13  Patrik Torstensson <p@rxc.se>
17138
17139         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
17140         instead of unwrapped server.
17141
17142 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
17143
17144         * verify.c (check_corlib): Fix field index.
17145
17146 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
17147
17148         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
17149         GetGacPath icall.
17150
17151 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
17152
17153         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
17154         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
17155         cope with sizeof(size_t) != sizeof(guint32).
17156
17157 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17158
17159         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
17160         in case of failure.
17161
17162 2003-12-10  Mark Crichton <crichton@gimp.org>
17163
17164         * icall.c: removed the GetNonZeroBytes.  We now handle this case
17165         in managed code.
17166
17167         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
17168
17169 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
17170
17171         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
17172         marked as deleted.
17173
17174 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
17175
17176         * verify.c (check_corlib): Handle the case when the version field is 
17177         initialized by a static constructor.
17178
17179 2003-12-08  Patrik Torstensson  <p@rxc.se>
17180
17181     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
17182
17183 2003-12-08  Martin Baulig  <martin@ximian.com>
17184
17185         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
17186         a MonoReflectionGenericParameter, also take the parameter index
17187         and name as arguments.
17188         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
17189         (ves_icall_MonoGenericParam_initialize): New interncall.
17190         (ves_icall_Type_make_byref_type): New interncall.
17191
17192         * reflection.h (MonoReflectionGenericParam): Derive from
17193         MonoReflectionType, not just from MonoObject.  Added `refobj' and
17194         `index' fields.
17195
17196         * reflection.c (mono_reflection_define_generic_parameter): Create
17197         and return a new MonoReflectionGenericParam; don't initialize the
17198         constraints here.
17199         (mono_reflection_initialize_generic_parameter): New public method;
17200         initializes the constraints and creates the `param->pklass'.
17201
17202 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
17203
17204         * reflection.h reflection.c: Use the new fields 'num_types', 
17205         'num_fields' and 'num_methods' to track the number of types etc.
17206
17207         * verify.c (check_corlib): Check corlib version number.
17208
17209 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
17210
17211         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
17212         function works on all methods.
17213
17214 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
17215
17216         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
17217         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
17218         the custom_type_info flag of the transparent proxy.
17219         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
17220         objects that supports IRemotingTypeInfo.
17221         * object.h: Added custom_type_info field in transparent proxy.
17222
17223 2003-12-06  Martin Baulig  <martin@ximian.com>
17224
17225         * class.c (mono_class_create_from_generic): Removed.
17226         (mono_class_from_generic): Check `ginst->klass' before doing
17227         anything else.  This is important to fully support "recursive"
17228         generic types.
17229
17230         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
17231         empty `generic_inst->klass' before doing anything else.
17232
17233 2003-12-06  Dick Porter  <dick@ximian.com>
17234
17235         * verify.c: 
17236         * object.h:
17237         * icall.c:
17238         * locales.c: Use C structs to access class fields.  Don't do a
17239         conversion between MonoString and UChar because both are
17240         platform-endian UTF-16.  Compare now takes startindex and count
17241         parameters.  Add a char overload for IndexOf.  Speed up the
17242         invariant string IndexOf.
17243
17244 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
17245
17246         * Makefile.am (monosn_LDADD): Fix parallel build.
17247
17248 2003-12-04  Martin Baulig  <martin@ximian.com>
17249
17250         * icall.c
17251         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
17252         (ves_icall_Type_make_array_type): New interncall.       
17253
17254 2003-12-04  Martin Baulig  <martin@ximian.com>
17255
17256         * locales.c: also change it in the !HAVE_ICU case.
17257
17258 2003-12-04  Dick Porter  <dick@ximian.com>
17259
17260         * icall.c:
17261         * locales.c: construct_compareinfo is now in CompareInfo, not
17262         CultureInfo.
17263
17264 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * image.c (mono_image_load_file_for_image): Cache loaded images in the
17267         image->files array.
17268
17269         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
17270         table as well.
17271
17272         * assembly.c (mono_assembly_load_references): Only load references
17273         once.
17274
17275         * class.c (mono_class_from_name): Avoid linear search of the 
17276         EXPORTEDTYPE table.
17277
17278         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
17279
17280 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
17281
17282         * image.h (MonoImage): Add 'field_cache' field.
17283
17284         * loader.c (mono_field_from_token): Cache field lookups.
17285         
17286         * reflection.c (mono_module_get_object): Fix name property.
17287
17288         * icall.c (ves_icall_get_enum_info): Update after changes to 
17289         mono_metadata_get_constant_index ().
17290
17291         * icall.c: Get rid of get_type_info icall, use a separate icall for
17292         each type property to avoid needless memory allocations. Fixes #51514.
17293
17294         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
17295         to avoid needless binary searches.
17296
17297         * class.c (class_compute_field_layout): Move the initialization of
17298         field->def_value to mono_class_vtable ().
17299
17300         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
17301         non-corlib types.
17302
17303         * object.c (mono_object_allocate): Make it inline.
17304
17305         * object.c (mono_object_allocate_spec): Make it inline.
17306         
17307 2003-12-02  Dick Porter  <dick@ximian.com>
17308
17309         * locales.c (create_NumberFormat): NumberFormatInfo construction.
17310         Patch by Mohammad DAMT (mdamt@cdl2000.com).
17311
17312 2003-12-01  Dick Porter  <dick@ximian.com>
17313
17314         * threads.c: Fix signature and call in CreateMutex and
17315         CreateEvent.
17316
17317 2003-12-01  Dick Porter  <dick@ximian.com>
17318
17319         * icall.c: 
17320         * locales.c: Implement string compares and searching
17321
17322         * object.h: Add extra Thread field
17323
17324 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
17325
17326         * reflection.c (fixup_method): Add support for MonoCMethod.
17327
17328 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
17331
17332         * reflection.c (assembly_name_to_aname): Allow extra characters in
17333         assembly names. Fixes #51468.
17334
17335 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
17336
17337         * exception.c (mono_exception_from_name_domain): New helper function.
17338
17339         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
17340         exception object in the correct domain.
17341
17342         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
17343         formatting + make a copy a the input data.
17344
17345         * loader.c (mono_get_method_from_token): Methods which contain
17346         native code do not have entries in the ImplMap.
17347
17348         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
17349         Thanks to Gonzalo for spotting this.
17350         
17351         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
17352         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
17353
17354         * assembly.h (mono_assembly_load_from): Split the second part of 
17355         assembly loading into a new public function.
17356
17357         * exception.h (mono_get_exception_bad_image_format): New function.
17358
17359 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
17360
17361         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
17362         Enumerate all modules inside a dynamic assembly. Fixes #51293.
17363         
17364         * icall.c: Add new icall for creating dynamic methods.
17365
17366         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
17367
17368         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
17369
17370         * reflection.c (mono_reflection_create_dynamic_method): New icall to
17371         create a dynamic method.
17372
17373         * reflection.c (resolve_object): New helper function.
17374
17375         * reflection.c: Generalize ReflectionMethodBuilder and the functions
17376         which manipulate it so they can also work on dynamic methods.
17377
17378         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
17379         creating the MonoReflectionMethodAux structure if it is not needed.
17380         
17381         * reflection.h verify.c: Update after changes to object layout.
17382
17383         * reflection.c (method_builder_encode_signature): Fix compilation on
17384         gcc 2.95.x.
17385
17386 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
17387
17388         * appdomain.h: Added support for context static fields. Added static_data
17389           field to MonoAppContext and renamed thread_static_fields to a more
17390           generic special_static_fields in MonoAppDomain, since it can now contain
17391           context static fields.
17392         * domain.c: Updated hashtable name.
17393         * object.c: Replaced field_is_thread_static() for a more generic
17394           field_is_special_static() which also checks for context static attribute.
17395           In mono_class_vtable(), added support for static context fields.
17396         * threads.c: Changed methods that manage thread static fields to more
17397           generic methods so they can be reused both for thread and context static
17398           data.
17399         * threads.h: Declared some new methods.
17400
17401 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
17402
17403         * reflection.h: Update after changes to the managed types.
17404
17405         * reflection.c (encode_custom_modifiers): New helper function.
17406
17407         * reflection.c (method_encode_signature): Emit custom modifiers.
17408
17409         * reflection.c (field_encode_signature): Emit custom modifiers.
17410
17411 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
17412
17413         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
17414
17415         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
17416         implementation.
17417
17418         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
17419         icall.
17420
17421         * object.c (mono_field_get_value_object): New function.
17422
17423         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
17424         specific.
17425
17426 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
17427
17428         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
17429         return a preallocated out-of-memory exception instance.
17430
17431         * object.c (out_of_memory): Use the new function.
17432
17433         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
17434         flag is before the custom modifiers. Fixes #49802.
17435
17436 2003-11-16  Martin Baulig  <martin@ximian.com>
17437
17438         * class.c (mono_class_is_open_constructed_type): Implemented the
17439         MONO_TYPE_GENERICINST case.
17440
17441 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
17442
17443         * assembly.c (mono_assembly_fill_assembly_name): New function to
17444         fill out the MonoAssemblyName structure.
17445         (mono_assembly_open): Use the new function.
17446
17447         * icall.c (fill_reflection_assembly_name): New helper function.
17448
17449         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
17450         new function.
17451
17452         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
17453
17454 2003-11-15  Martin Baulig  <martin@ximian.com>
17455
17456         * class.c (mono_class_is_open_constructed_type): New public
17457         function; checks whether a type is an open constructed type,
17458         ie. whether it still contains type parameters.
17459         (mono_class_inflate_generic_type): If we're a type parameter and
17460         the inflated type is also a MONO_TYPE_(M)VAR, return the original
17461         type.
17462
17463         * class.h (MonoGenericInst): Added `guint32 is_open'.
17464
17465         * loader.c (method_from_methodspec): Check whether we're an open
17466         or closed constructed type and set `ginst->is_open'.
17467
17468         * reflection.c (mono_reflection_bind_generic_parameters): Check
17469         whether we're an open or closed constructed type and set
17470         `ginst->is_open'.
17471         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
17472         from open constructed types.
17473
17474 2003-11-15  Martin Baulig  <martin@ximian.com>
17475
17476         * reflection.c (mono_reflection_bind_generic_parameters): If we're
17477         a generic instance (instead of a generic type declaration) with
17478         unbound generic parameters, bind them to our actual types.
17479
17480 2003-11-14  Martin Baulig  <martin@ximian.com>
17481
17482         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
17483
17484         * reflection.c (mono_reflection_bind_generic_parameters): If we're
17485         an interface type, populate `res->interfaces' with instantiated
17486         versions of all the interfaces we inherit.
17487
17488 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
17489
17490         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
17491         when MONO_PATH is set but doesn't contain the install dir.
17492
17493 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17494
17495         * icall.c:
17496         (ves_icall_Type_GetInterfaces): don't return an interface twice when
17497         it's also implemented in base classes. Fixes bug #50927.
17498
17499 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
17502         if this method is called from a finalizer. Fixes #50913.
17503
17504 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
17505
17506         * threads.c: Implement VolatileRead/VolatileWrite
17507
17508         * icall.c: Add new icalls for VolatileRead/VolatileWrite
17509
17510 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
17511
17512         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
17513         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
17514         2.95.3.
17515
17516         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
17517         from Peter Ross (pro@missioncriticalit.com).
17518         
17519 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
17520
17521         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
17522
17523 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * assembly.c (mono_assembly_load_references): Disable check because it
17526         triggers on older corlibs which lots of people have.
17527
17528 2003-11-12  Jackson Harper  <jackson@ximian.com>
17529
17530         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
17531         load corlib.dll if mscorlib.dll is not found.
17532         * assembly.h: Remove corlib name define.
17533         * class.c:
17534         * domain.c:
17535         * image.c: Change corlib name to mscorlib.
17536         
17537 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
17538
17539         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
17540
17541 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
17542
17543         * appdomain.h: Added loader_optimization here to sync with the C#
17544         code, and add disallow_binding_redirects field.
17545
17546 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
17547
17548         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
17549
17550         * reflection.c (mono_image_build_metadata): Fix crash on modules
17551         with no types.
17552
17553         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
17554
17555         * icall.c (ves_icall_get_method_info): Return callingConvention as
17556         well.
17557
17558         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
17559         namespaces from the EXPORTEDTYPE table as well.
17560
17561         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
17562         from all modules inside the assembly.
17563         
17564 2003-11-11  Martin Baulig  <martin@ximian.com>
17565
17566         * reflection.c (mono_reflection_bind_generic_parameters): Make
17567         this work for interfaces.
17568
17569 2003-11-11  Martin Baulig  <martin@ximian.com>
17570
17571         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
17572
17573 2003-11-11  Martin Baulig  <martin@ximian.com>
17574
17575         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
17576         "MonoInflatedMethod" and "MonoInflatedCtor".
17577
17578 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
17579
17580         * reflection.c (resolution_scope_from_image): Use the assembly table
17581         from the manifest module, since other modules don't have it.
17582
17583         * debug-helpers.c (mono_type_full_name): New helper function.
17584
17585         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
17586
17587         * image.c (mono_image_load_file_for_image): New public function which
17588         is a replacement for the load_file_for_image in class.c.
17589
17590         * assembly.c (mono_assembly_load_module): A wrapper for the function
17591         above which does assembly association and reference loading too.
17592
17593         * class.c (mono_class_from_name): Call mono_assembly_load_module.
17594
17595 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17596
17597         * appdomain.c: not all of the attributes for the full assembly name
17598         are required and the order doesn't matter. Fixes bug #50787.
17599
17600 2003-11-10  Dick Porter  <dick@ximian.com>
17601
17602         * locales.c: Use platform-endian UTF16
17603
17604 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
17605
17606         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
17607         
17608 2003-11-10  Martin Baulig  <martin@ximian.com>
17609
17610         * metadata.c
17611         (mono_metadata_load_generic_params): Make this actually work.
17612
17613         * reflection.c (mono_reflection_bind_generic_parameters): If our
17614         parent is a generic instance, pass all the `types' to it, no
17615         matter whether it has the same number of type parameters or not.
17616
17617 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
17618
17619         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
17620
17621         * assembly.c (mono_assembly_load_references): Move the image<->assembly
17622         assignment code to this function so it gets called recursively for all
17623         modules.
17624
17625         * image.c (load_modules): Remove the assembly assignment since it is
17626         now done by mono_assembly_load_references.
17627         
17628         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
17629         Add 'module' argument.
17630         (mono_module_get_types): New helper function.
17631         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
17632
17633 2003-11-08  Martin Baulig  <martin@ximian.com>
17634
17635         * class.c (mono_class_inflate_generic_method): Interface method
17636         don't have a header.
17637
17638         * reflection.c (mono_image_get_methodspec_token): Take an
17639         additional `MonoGenericInst *' argument instead of reading it from
17640         the header; this is necessary to support interfaces.
17641         (mono_image_create_token): Pass the `MonoGenericInst *' from the
17642         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
17643         (inflated_method_get_object): Take an additional `MonoGenericInst *'
17644         argument.
17645
17646         * reflection.h (MonoReflectionInflatedMethod): Added
17647         `MonoGenericInst *ginst'.
17648
17649 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
17652
17653 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
17654
17655         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
17656
17657 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
17658
17659         * reflection.c 
17660         (reflection_methodbuilder_from_method_builder):
17661         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
17662         initialize a ReflectionMethodBuilder structure.
17663         (mono_image_get_methodbuilder_token):
17664         (mono_image_get_ctorbuilder_token): New functions to emit memberref
17665         tokens which point to types in another module inside the same assembly.
17666
17667         * reflection.c: Use the new helper functions.
17668         
17669         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
17670
17671         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
17672         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
17673
17674         * reflection.c (resolution_scope_from_image): Emit a moduleref if
17675         neccesary.
17676
17677         * reflection.c (mono_image_build_metadata): Emit metadata only for the
17678         current module. Emit the manifest only for the main module.
17679
17680         * reflection.c (mono_image_create_token): Add assertion when a 
17681         memberref needs to be created.
17682
17683         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
17684
17685         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
17686         larger buffer for the custom attribute blob. Fixes #50637.
17687         
17688 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17689
17690         * threadpool.c: notify listener on async processing handles after
17691         invoking the async callback. Thanks to Zoltan.
17692
17693 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
17696         avoid code duplication.
17697
17698         * reflection.h (MonoDynamicImage): New type which is currently unused,
17699         but will be used through the ref.emit code in place of 
17700         MonoDynamicAssembly.
17701
17702         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
17703         object layout.
17704
17705         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
17706         a MonoDynamicImage instead of just a MonoImage.
17707         
17708         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
17709         icalls to ModuleBuilder but keep their semantics, so they will work
17710         with moduleb->assemblyb. This will change later.
17711         
17712 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
17713
17714         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
17715         object layout.
17716
17717         * reflection.c (mono_image_build_metadata): Avoid creation of a default
17718         main module, since it is now done by the managed code.
17719
17720 2003-11-03  Martin Baulig  <martin@ximian.com>
17721
17722         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
17723         `ginst->klass' here.
17724         (method_encode_methodspec): Don't use the `ginst->generic_method's
17725         klass if it's a generic instance, use `ginst->klass' in this case.
17726
17727 2003-11-03  Martin Baulig  <martin@ximian.com>
17728
17729         * reflection.c (mono_image_get_generic_method_param_info):
17730         Removed, use mono_image_get_generic_param_info() instead.
17731         (mono_image_get_type_info): Write the GenericParam table before
17732         the Method table.  This is neccessary because in the GenericParam
17733         table, type parameters of the class (ie. '!0' etc.) must come
17734         before the ones from its generic methods (ie. '!!0' etc).
17735
17736 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
17737
17738         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
17739
17740 2003-11-02  Martin Baulig  <martin@ximian.com>
17741
17742         * reflection.c (create_generic_typespec): Take a
17743         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
17744         the generic parameters from it.
17745
17746 2003-11-02  Martin Baulig  <martin@ximian.com>
17747
17748         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
17749         instead of a `MonoClassField *' since we just need the type.
17750         (create_generic_typespec): New static function.  Creates a
17751         TypeSpec token for a generic type declaration.
17752         (mono_image_get_generic_field_token): New static function.
17753         (mono_image_create_token): If we're a FieldBuilder in a generic
17754         type declaration, call mono_image_get_generic_field_token() to get
17755         the token.
17756
17757 2003-11-02  Martin Baulig  <martin@ximian.com>
17758
17759         * reflection.h
17760         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
17761         `MonoReflectionGenericInst *declaring_type' and
17762         `MonoReflectionGenericInst *reflected_type' fields.
17763
17764         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
17765         `MonoReflectionGenericInst *declaring_type' and a
17766         `MonoReflectionGenericInst *reflected_type' argument instead of a
17767         single `MonoReflectionGenericInst *type' one.  Set
17768         `res->declaring_type' and `res->reflected_type' from them.
17769         (mono_reflection_inflate_field): Likewise.      
17770
17771 2003-11-02  Martin Baulig  <martin@ximian.com>
17772
17773         * class.c (mono_class_setup_vtable): Don't store generic methods
17774         in the vtable.  
17775
17776 2003-11-02  Martin Baulig  <martin@ximian.com>
17777
17778         * reflection.h (MonoReflectionGenericInst): Added
17779         `MonoReflectionType *declaring_type'.
17780
17781         * reflection.c (mono_reflection_bind_generic_parameters): Use
17782         `if (tb->parent)' instead of `klass->parent'.
17783
17784 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
17785
17786         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
17787         with an empty ASSEMBLY table.
17788
17789         * reflection.c (mono_image_build_metadata): Avoid using the same loop
17790         variable in the inner and outer loops.
17791
17792 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
17793
17794         * metadata.h (mono_metadata_make_token): Put parentheses around macro
17795         argument.
17796
17797         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
17798         
17799         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
17800         icalls. Instead, do everything in managed code. This is needed since
17801         it is hard to restore the original domain etc. in unmanaged code in the
17802         presence of undeniable exceptions.
17803
17804         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
17805         New icalls to push and pop appdomain refs.
17806
17807 2003-10-31  Martin Baulig  <martin@ximian.com>
17808
17809         * class.c (inflate_generic_type): Renamed to
17810         mono_class_inflate_generic_type() and made it public.
17811
17812         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
17813         New interncall.
17814
17815         * loader.c (mono_field_from_memberref): Also set the retklass for
17816         typespecs.
17817
17818         * fielder.c (mono_image_get_inflated_field_token): New static
17819         method; creates a metadata token for an inflated field.
17820         (mono_image_create_token, fixup_method): Added support for
17821         "MonoInflatedField".
17822         (fieldbuilder_to_mono_class_field): New static function.
17823         (mono_reflection_inflate_field): New public function.
17824
17825         * reflection.h
17826         (MonoReflectionGenericInst): Added `MonoArray *fields'.
17827         (MonoReflectionInflatedField): New typedef.     
17828
17829 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
17830
17831         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
17832         for Solaris and other platforms without s6_addr16
17833
17834 2003-10-30  Martin Baulig  <martin@ximian.com>
17835
17836         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
17837         argument instead of two.
17838         (mono_class_inflate_generic_signature): Likewise.
17839         (inflate_generic_header): Likewise.
17840         (mono_class_inflate_generic_method): Likewise.  In addition, if
17841         `ginst->klass' is set, it becomes the new `method->klass'.
17842
17843         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
17844         field.
17845
17846         * reflection.c (encode_generic_method_sig): Write a 0xa as the
17847         first byte. [FIXME]
17848         (method_encode_methodspec): If we have generic parameters, create
17849         a MethodSpec instead of a MethodRef.
17850         (fixup_method): Added support for "MonoInflatedMethod" and
17851         "MonoInflatedCtor".
17852         (mono_image_create_token): Added support for "MonoInflatedMethod"
17853         and "MonoInflatedCtor".
17854         (inflated_method_get_object): New static function; returns a
17855         managed "System.Reflection.MonoInflatedMethod" object.
17856         (mono_reflection_bind_generic_method_parameters): Return a
17857         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
17858         (mono_reflection_inflate_method_or_ctor): Likewise.
17859         (mono_image_get_generic_method_param_info): Initialize unused
17860         fields to zero.
17861         (mono_image_get_generic_param_info): Likewise.
17862
17863         * reflection.h (MonoReflectionInflatedMethod): New public
17864         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
17865         "S.R.MonoInflatedCtor" classes.
17866
17867         * loader.c (method_from_memberref): If we're a TypeSpec and it
17868         resolves to a generic instance, inflate the method.
17869
17870 2003-10-28  Dick Porter  <dick@ximian.com>
17871
17872         * object.c (mono_runtime_run_main): Convert command-line arguments
17873         into utf8, falling back to the user's locale encoding to do so.
17874
17875 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
17876
17877         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
17878         at this time.
17879
17880         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
17881
17882         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
17883         up icalls at method definition time. Partially fixes #33569.
17884
17885 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
17886
17887         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
17888         marshalling of arrays. Fixes #50116.
17889
17890         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
17891
17892         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
17893         points to a vtable in the dying appdomain.
17894
17895         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
17896         listeners into unmanaged code inside the lock.
17897
17898         * object.c (mono_class_vtable): Turn off typed allocation in non-root
17899         domains and add some comments.
17900
17901 2003-10-25  Martin Baulig  <martin@ximian.com>
17902
17903         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
17904
17905         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
17906
17907         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
17908         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
17909         currently parsing.  Create the generic class and store it in
17910         `generic_inst->klass' before parsing the type arguments.  This is
17911         required to support "recursive" definitions; see mcs/tests/gen-23.cs
17912         for an example.
17913         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
17914         to support recursive typespec entries.
17915
17916         * class.c (mono_class_setup_parent): If our parent is a generic
17917         instance, we may get called before it has its name set.
17918         (mono_class_from_generic): Splitted into
17919         mono_class_create_from_generic() and mono_class_initialize_generic().
17920
17921 2003-10-25  Martin Baulig  <martin@ximian.com>
17922
17923         * icall.c (ves_icall_Type_BindGenericParameters): Return a
17924         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
17925         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
17926         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
17927
17928         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
17929         (create_typespec): Likewise.
17930         (mono_reflection_bind_generic_parameters): Return a
17931         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
17932         (mono_reflection_inflate_method_or_ctor): New public function.
17933
17934         * reflection.h (MonoReflectionGenericInst): New typedef.        
17935
17936 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
17937
17938         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
17939         inside the domain lock. Fixes #49993.
17940         
17941         * object.c (mono_class_vtable): When typed allocation is used, 
17942         allocate vtables in the GC heap instead of in the mempool, since the
17943         vtables contain GC descriptors which are used by the collector even
17944         after the domain owning the mempool is unloaded.
17945
17946         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
17947
17948         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
17949         reflect what it does. Also invalidate mempools instead of freeing
17950         them if a define is set.
17951
17952         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
17953         of the appdomain.
17954         
17955         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
17956         hold the finalizable objects in this domain.
17957
17958         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
17959         appdomain.
17960
17961         * appdomain.c (mono_domain_set): New function to set the current
17962         appdomain, but only if it is not being unloaded.
17963
17964         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
17965         appdomain which is being unloaded.
17966         
17967         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
17968         unloading of the root appdomain.
17969
17970         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
17971         icall to execute a method in another appdomain. Intended as a 
17972         replacement for InternalSetDomain, which can confuse the code 
17973         generation in the JIT.
17974
17975         * appdomain.c (mono_domain_is_unloading): New function to determine
17976         whenever an appdomain is unloading.
17977
17978         * appdomain.c (mono_domain_unload): New function to correctly unload
17979         an appdomain.
17980
17981         * assembly.c (mono_assembly_load_references): Check that an assembly
17982         does not references itself.
17983
17984         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
17985         domain manually, it asks the finalizer thread to do it, then waits for
17986         the result. Also added a timeout.
17987
17988         * icall.c: Register the new icalls.
17989
17990         * threads.h threads.c: Export the mono_gc_stop_world and 
17991         mono_gc_start_world functions.
17992         
17993         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
17994         function to fill out the mempool with 0x2a.
17995
17996 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * reflection.h (MonoReflectionMethodAux): New structure to store
17999         information which is rarely used, thus is not in the MonoMethod
18000         structure.
18001
18002         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
18003         store the aux info.
18004
18005         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
18006         and marshalling info into the aux structure.
18007
18008         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
18009         from the aux structure.
18010
18011         * loader.c (mono_method_get_param_names): Retrieve the param names from
18012         the aux structure.
18013         
18014 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * exception.h exception.c: Add AppDomainUnloadedException && fix 
18017         warning.
18018
18019 2003-10-21  Dick Porter  <dick@ximian.com>
18020
18021         * socket-io.c
18022         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
18023         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
18024
18025 2003-10-21  Martin Baulig  <martin@ximian.com>
18026
18027         * reflection.c (mono_reflection_bind_generic_parameters):
18028         `klass->parent' is NULL for interfaces.
18029
18030 2003-10-21  Martin Baulig  <martin@ximian.com>
18031
18032         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18033
18034 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
18035
18036         * exception.c (mono_exception_from_name_msg): New helper function for
18037         creating exceptions and initializing their message field.
18038
18039         * exception.c: Simplify functions using the new helper.
18040
18041         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
18042         New function.
18043
18044         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
18045         mono_raise_exception, since otherwise gcc doesn't generate the function
18046         epilog for raise_exception, confusing the stack unwinding in the JIT.
18047         Fixes #45043.
18048
18049         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
18050         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
18051         Fixes #49499.
18052
18053 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18054
18055         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
18056         utf8.
18057
18058 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
18059
18060         * icall.c: Removed GetUninitializedObject method because
18061           AllocateUninitializedClassInstance does the same.
18062
18063 2003-10-18  Martin Baulig  <martin@ximian.com>
18064
18065         * class.c (inflate_generic_signature): Renamed to
18066         mono_class_inflate_generic_signature() and made it public.
18067         (my_mono_class_from_generic_parameter): New static function; if we
18068         don't already have the generic parameter's MonoClass, create a
18069         very simple one which is just used internally in the runtime and
18070         not passed back to managed code.
18071
18072         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
18073
18074         * metadata.h (MonoMethodSignature): Moved the
18075         `MonoGenericParam *gen_params' to the MonoMethodHeader.
18076         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
18077
18078         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
18079         ves_icall_MonoMethod_GetGenericArguments(); this is now an
18080         interncall on the MonoMethod class, not on MethodInfo.
18081         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
18082         calling mono_reflection_bind_generic_method_parameters() directly.
18083
18084         * loader.c (mono_method_get_signature): If this is a MethodSpec;
18085         return the already computed `method->signature'.
18086         (method_from_methodspec): New static function to load a method
18087         from a MethodSpec entry.
18088         (mono_get_method_from_token): Call the new method_from_methodspec()
18089         for MethodSpec tokens.  
18090         (mono_get_method_from_token): If we're a generic method, load the
18091         type parameters.
18092
18093         * reflection.c (mono_image_get_memberref_token): Allow
18094         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
18095         table.
18096         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
18097         (mono_image_create_token): First check whether it's a generic
18098         method (so we'd need to create a MethodSpec), then do the other
18099         two alternatives.
18100         (mono_reflection_bind_generic_method_parameters): Return a
18101         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
18102         called directly from the interncall.
18103
18104 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
18105
18106         * reflection.c (load_public_key): Move loading of the public key
18107         into managed code.
18108
18109         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
18110
18111         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
18112         fields.
18113
18114         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
18115         culture, hash_alg and public_key. Fixes #49555.
18116
18117 2003-10-17  Martin Baulig  <martin@ximian.com>
18118
18119         * class.h (MonoGenericInst): Moved this declaration here and added
18120         `MonoMethod *generic_method'.
18121
18122         * icall.c
18123         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
18124         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
18125
18126         * metadata.c (mono_metadata_type_equal): Two types of
18127         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
18128         index; ie. don't compare the address of the `MonoGenericParam'
18129         structure.
18130         (mono_metadata_load_generic_params): Removed the `MonoMethod
18131         *method' argument.
18132
18133         * metadata.h (MonoGenericInst): Moved declaration to class.h.
18134         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
18135
18136         * reflection.c (method_encode_signature): Encode the number of
18137         generic parameters.
18138         (encode_generic_method_sig): New static function.
18139         (method_encode_methodspec): New static function; creates an entry
18140         in the MethodSpec table for a generic method.
18141         (mono_image_get_methodspec_token): New static function.
18142         (mono_image_create_token): Call mono_image_get_methodspec_token()
18143         for generic methods.
18144         (mono_reflection_bind_generic_method_parameters): New public
18145         function.  Instantiates a generic method.
18146
18147 2003-10-16  Martin Baulig  <martin@ximian.com>
18148
18149         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
18150         *gen_params' here from MonoMethodHeader.
18151
18152         * metadata.c (mono_metadata_parse_method_signature): If we have
18153         generic parameters, initialize `method->gen_params' and then set
18154         the correct `type->data.generic_param' in all the parameters.
18155
18156 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
18157
18158         * threads.c (mono_threads_get_default_stacksize): New function to 
18159         return the default stacksize.
18160
18161         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
18162         termination of the finalizer thread, since the previous method had
18163         race conditions. Fixes #49628.
18164
18165         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
18166         as for the other managed threads.
18167
18168 2003-10-16  Martin Baulig  <martin@ximian.com>
18169
18170         * class.c (inflate_generic_signature): Copy `generic_param_count'
18171         and `gen_params'.
18172
18173         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
18174         New interncall.
18175
18176         * metadata.c (mono_metadata_parse_method_signature): Actually set
18177         the `method->generic_param_count' here.
18178         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
18179
18180 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * object.h: Add a new field to TypedRef to simplify the implementation
18183         of the REFANY opcodes in the JIT.
18184
18185         * icall.c: Make use of the new field.
18186
18187         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
18188         dynamically.
18189
18190 2003-10-15  Martin Baulig  <martin@ximian.com>
18191
18192         * class.c (mono_class_from_gen_param): Renamed to
18193         mono_class_from_generic_parameter() and moved most of the
18194         functionality from mono_reflection_define_generic_parameter()
18195         here; ie. we create a "real" class here.
18196         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
18197         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
18198         previously been called.
18199
18200         * class.h (MonoGenericParam): Moved the declaration of this struct
18201         here from metadata.h and added `MonoMethod *method'.
18202
18203         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
18204         interncall.
18205
18206         * loader.c (mono_get_method_from_token): If we have any generic
18207         parameters, call mono_metadata_load_generic_params() to read them
18208         from the MONO_TABLE_GENERICPAR.
18209
18210         * metadata.c (mono_metadata_load_generic_params): Added
18211         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
18212
18213         * metadata.h (MonoMethodSignature): Replaced
18214         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
18215         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
18216
18217         * reflection.c (mono_reflection_define_generic_parameter): Moved
18218         most of the functionality into the new
18219         mono_class_from_generic_parameter(); set the `method' field if
18220         we're a method parameter.       
18221
18222 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
18223
18224         * marshal.c (emit_struct_conv): if native size is 0
18225         emit no code.
18226
18227 2003-10-14  Martin Baulig  <martin@ximian.com>
18228
18229         * icall.c: The generics API has changed in the spec since it was
18230         added to System.Type; these modifications make it match the spec
18231         again.
18232         (ves_icall_Type_GetGenericParameters): Renamed to
18233         `ves_icall_Type_GetGenericArguments'.
18234         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
18235         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
18236         `ves_icall_MonoType_get_HasGenericArguments'.
18237         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
18238         `ves_icall_MonoType_get_IsGenericParameter'.
18239         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
18240         this is no interncall anymore.
18241         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
18242         `ves_icall_TypeBuilder_get_IsGenericParameter'.
18243
18244 2003-10-14  Martin Baulig  <martin@ximian.com>
18245
18246         * reflection.c (mono_reflection_bind_generic_parameters): Also
18247         inflate generic methods if we're reading the class from IL.
18248
18249 2003-10-13  Martin Baulig  <martin@ximian.com>
18250
18251         * reflection.c (mono_reflection_define_generic_parameter): This
18252         method isn't called directly from the icall anymore; take a
18253         `MonoReflectionAssemblyBuilder *' so we can use this for type and
18254         method generic parameters.
18255         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
18256         (method_builder_encode_signature): Encode generic parameters.
18257         (mono_image_get_method_info): Write generic params to the
18258         MONO_TABLE_GENERICPARAM table.
18259
18260         * reflection.h (MonoReflectionMethodBuilder): Added
18261         `MonoArray *generic_params'.
18262
18263         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
18264
18265         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
18266         wrapper for mono_reflection_define_generic_parameter().
18267         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
18268
18269 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
18270
18271         * marshal.h: Add missing function to fix build.
18272
18273         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
18274         the SetLastError pinvoke attribute.
18275
18276         * marshal.c (mono_marshal_set_last_error): New helper function called
18277         by the generated code.
18278         
18279         * marshal.c (mono_mb_emit_branch): New helper function.
18280
18281         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
18282
18283         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
18284         classes as parameters and return values of delegates. Fixes #29256. 
18285
18286 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
18287
18288         * locales.c: use gint32 in non HAVE_ICU case
18289
18290 2003-10-11  Martin Baulig  <martin@ximian.com>
18291
18292         * mono-debug.c (mono_debug_add_method): Added a workaround for
18293         bug #48591.
18294
18295 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
18298         delegates passed to native code must use the STDCALL calling 
18299         convention. Fixes #35987.
18300
18301 2003-10-10  Martin Baulig  <martin@ximian.com>
18302
18303         * class.c (inflate_generic_type): If we're inflating for a generic
18304         type instance (and not for a generic method), return
18305         MONO_TYPE_MVAR unchanged.
18306
18307 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18308
18309         * string-icalls.c: Join ignores null strings in the source array.
18310         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
18311         * threads.c: GetAvailableTheads is slightly more accurate.
18312
18313 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
18314
18315         * threads.h threads.c : add mono_threads_set_default_stacksize
18316         and pass default to CreateThread calls.
18317
18318 2003-10-09  Dick Porter  <dick@ximian.com>
18319
18320         * icall.c:
18321         * locales.h:
18322         * locales.c: Internal calls for constructing CultureInfo and
18323         related objects from libicu (if its available.)
18324
18325 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
18326
18327         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
18328
18329 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18330
18331         * threadpool.c: added an argument to async_invoke_thread that is the
18332         item to process, pass the MonoAsyncResult to the thread start function
18333         when creating a new thread. This way we don't need to acquire any lock
18334         when we're creating a new thread. Readded a semaphore for faster
18335         response times (instead of that Sleep i added).
18336
18337 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
18338
18339         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
18340         get daylight change dates better on Windows, fix handling
18341         of platforms without tm_gmtoff.
18342
18343 2003-10-06  Martin Baulig  <martin@ximian.com>
18344
18345         * class.c (inflate_generic_method): Renamed to
18346         mono_class_inflate_generic_method() and made public.
18347         (mono_class_init): Don't inflate the generic methods here.
18348         (mono_class_from_generic): Added `gboolean inflate_methods'
18349         argument.  Inflate the methods here.
18350
18351         * loader.c (mono_method_get_param_names): Ignore instances of
18352         generic types for the moment.
18353
18354         * reflection.c (fixup_method): Added support for inflated methods.
18355         (mono_image_create_token): Use mono_image_get_methodref_token()
18356         for inflated methods.
18357         (mono_custom_attrs_from_param): Ignore instances of generic types
18358         for the moment.
18359         (mono_reflection_bind_generic_parameters): New public function.
18360         Moved all the functionality from
18361         ves_icall_Type_BindGenericParameters() here and added support for
18362         dynamic types.
18363         (mono_reflection_define_generic_parameter): Initialize
18364         `klass->methods' here.
18365
18366         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
18367         functionality into mono_reflection_define_generic_parameter().
18368         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
18369         TypeBuilder, return that TypeBuilder.
18370
18371 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18372
18373         * appdomain.c: removed mono_delegate_semaphore.
18374
18375         * threadpool.c:
18376         (mono_thread_pool_add): moved hash table creation inside and the thread 
18377         creation outside of the critical region.
18378         (mono_thread_pool_finish): removed obsolete code.
18379         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
18380         continue or exit the thread depending on the queue.
18381
18382 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
18383
18384         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
18385         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
18386         handle more bool marshalling options
18387
18388 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
18389
18390         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
18391         arrays of structs. Also add a more descriptive error message when
18392         a structure member is marshalled as LPArray.
18393
18394 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * marshal.c (mono_marshal_get_native_wrapper): Add support for
18397         marshalling arrays of complex types. Fixes #29098. Also remove an
18398         usused and incomplete function.
18399
18400 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
18401
18402         * gc.c: report heap_size - free_bytes as total memory allocated
18403         (bug#49362).
18404
18405 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
18406
18407         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
18408         fix timezone handling problems on Windows.
18409         
18410         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
18411         asserts when the year is outside the range handled by ms the functions.
18412
18413         * class.c (setup_interface_offsets): If the class is an interface,
18414         fill out its interface_offsets slot.
18415
18416 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18417
18418         * threadpool.c: mark threadpool threads as background.
18419
18420 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
18421
18422         * decimal.c - define DECINLINE to nothing if not using GCC
18423
18424 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
18425
18426         * assembly.c: More refcount fixes.
18427
18428 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18429
18430         * string-icalls.c: if we're not trimming, return the same string.
18431         When not splitting, don't create a new string.
18432
18433 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18434
18435         * image.c:
18436         (mono_image_open): increment the ref_count inside the critical section.
18437
18438 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * image.c (mono_image_open): Fix reference counting bug.
18441
18442 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
18443
18444         * marshal.c (mono_marshal_type_size) struct alignment changed for 
18445         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
18446         64bits. Avoid leak in mono_marshal_get_native_wrapper when
18447         mono_lookup_pinvoke_call throws.        
18448
18449 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
18450
18451         * reflection.c (mono_reflection_parse_type): Fix #49114.
18452
18453         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
18454         temporary workaround for cygwin header problem.
18455
18456         * object.c (mono_object_isinst): Synchronize this with the code
18457         generated by the JIT for casts.
18458
18459 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
18460
18461         * reflection.c (encode_type): Fix #38332.
18462
18463 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
18464
18465         * marshal.c (mono_marshal_method_from_wrapper): New function to return
18466         the original method from the wrapper method.
18467
18468 2003-09-25  Martin Baulig  <martin@ximian.com>
18469
18470         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
18471         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
18472         (ves_icall_Type_get_IsGenericInstance): New interncall.
18473
18474 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
18475
18476         * object.c: fix cast warning in big endian code.
18477
18478 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
18479
18480         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
18481         
18482 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18483
18484         * assembly.c: don't call check_env from mono_assembly_load. It's
18485         already done once in mono_assemblies_init and may cause headaches when
18486         multiple threads are loading assemblies.
18487
18488 2003-09-19  Martin Baulig  <martin@ximian.com>
18489
18490         * reflection.c (mono_reflection_define_generic_parameter): Don't
18491         allocate `klass->methods', set `klass->flags' to
18492         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
18493
18494 2003-09-18  Martin Baulig  <martin@ximian.com>
18495
18496         * class.c (mono_class_init): Don't create `class->methods' if it's
18497         already initialized.
18498
18499         * metadata.c (mono_metadata_load_generic_params): Make this
18500         actually work.
18501
18502         * reflection.c (mono_reflection_define_generic_parameter): Set
18503         parent class and interfaces from the constraints.
18504
18505         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
18506         to keep this struct in sync with the declaration in TypeBuilder.cs.
18507
18508 2003-09-17  Martin Baulig  <martin@ximian.com>
18509
18510         * metadata.h (MonoType): Replaced the data's `int type_param'
18511         field with `MonoGenericParam *generic_param'.
18512         (MonoGenericParam): Added `MonoClass *klass'.
18513
18514         * class.c (mono_class_from_gen_param): Removed the
18515         `MonoImage *image' and `int type_num' arguments.
18516
18517         * metadata.c (mono_metadata_parse_generic_param): New static
18518         method; creates a MonoGenericParam which just contains the index.
18519         (do_mono_metadata_parse_type): Call
18520         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
18521         MONO_TYPE_MVAR.
18522
18523         * reflection.c (mono_image_typedef_or_ref): Generic type
18524         parameters may be in the same assembly, but never use a typedef
18525         for them.
18526         (mono_reflection_define_generic_parameter): We're now creating a
18527         "real" class for the type parameter; it's now safe to call
18528         mono_class_from_mono_type() on the class'es type, it'll do the
18529         right thing.
18530
18531 2003-09-16  Martin Baulig  <martin@ximian.com>
18532
18533         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
18534         `symfile->range_entry_size' and `symfile->class_entry_size' here;
18535         the `symfile' data structure must be fully initialized before it
18536         gets added to the table.
18537
18538 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
18541
18542         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
18543         class init trampolines.
18544
18545 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
18548         to the built-in profiler to turn off time and allocation profiling
18549         respectively.
18550
18551 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
18554         g_direct_equal.
18555
18556         * debug-helpers.c (mono_method_full_name): Print the wrapper type
18557         in human readable form.
18558
18559 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
18560
18561         * reflection.c icall.c: Fixed warnings.
18562
18563         * image.c (load_class_names): Use a temporary hash table to hold the
18564         namespaces in order to avoid doing many string comparisons.
18565
18566         * image.h: Fix typo.
18567
18568         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
18569         Pass NULL instead of g_direct_equal to the GHashTable constructor 
18570         since the NULL case is short-circuited inside g_hash_table_lookup, 
18571         leading to better performance.  
18572
18573         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
18574         obtain the first custom attribute for a given index. Depends on the
18575         CustomAttribute table being sorted by the parent field.
18576
18577         * reflection.c (mono_custom_attrs_from_index): Use the new function 
18578         for better performance.
18579
18580 2003-09-07  Martin Baulig  <martin@ximian.com>
18581
18582         * class.c (mono_class_init): If we're a generic instance, inflate
18583         all our methods instead of loading them from the image.
18584         (mono_class_from_generic): Set `class->methods = gklass->methods'.
18585
18586 2003-09-07  Martin Baulig  <martin@ximian.com>
18587
18588         * mono-debug-debugger.c: Added support for constructors.
18589
18590 2003-09-06  Martin Baulig  <martin@ximian.com>
18591
18592         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
18593         New interncall.
18594
18595         * reflection.c (mono_reflection_setup_generic_class): Call
18596         ensure_runtime_vtable() to create the vtable.
18597
18598 2003-09-05  Martin Baulig  <martin@ximian.com>
18599
18600         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
18601         MONO_TYPE_MVAR.
18602
18603 2003-09-04  Martin Baulig  <martin@ximian.com>
18604
18605         * reflection.c (mono_reflection_define_generic_parameter): Generic
18606         parameters start with zero.
18607
18608 2003-09-04  Martin Baulig  <martin@ximian.com>
18609
18610         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
18611
18612         * reflection.h (MonoReflectionGenericParam): New typedef.
18613         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
18614         the generic parameters from the managed TypeBuilder.
18615
18616         * reflection.c (mono_reflection_define_generic_parameter): New function.
18617         (mono_reflection_create_runtime_class): Encode generic parameters.
18618         (mono_reflection_setup_generic_class): New function; this is
18619         called after adding adding all generic params to the TypeBuilder.
18620         (encode_type): Added MONO_TYPE_VAR.
18621
18622 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
18623
18624         * class.h class.c (mono_class_needs_cctor_run): Moved this method
18625         here from the JIT.
18626
18627         * assembly.h assembly.c: Moved the AOT loading code into an assembly
18628         load hook.
18629
18630 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
18631
18632         * reflection.h reflection.c class.h class.c: Delete duplicate 
18633         definition of mono_type_get_name () from reflection.c and export the
18634         one in class.c.
18635
18636         * class.c: Class loading fixes from Bernie Solomon 
18637         (bernard@ugsolutions.com).
18638
18639         * reflection.c: Endianness fixes from Bernie Solomon 
18640         (bernard@ugsolutions.com).
18641         
18642 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
18643
18644         * assembly.h assembly.c: Define a file format version for AOT
18645         libraries.
18646         
18647         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
18648
18649         * appdomain.h (MonoJitInfo): New field to determine whenever the
18650         code is domain neutral.
18651         
18652 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
18653
18654         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
18655
18656 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
18657
18658         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
18659         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
18660         Avoid caching the result since strings must be domain specific. Fixes
18661         #48050.
18662
18663 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * marshal.c (mono_marshal_init): Make this callable multiple times
18666         since it is hard to find a correct place to call it.
18667
18668         * object.c (mono_runtime_class_init): Execute static constructors in
18669         the correct appdomain.
18670
18671         * image.c (build_guid_table): Handle the case when multiple images have
18672         the same GUID.
18673
18674 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18675
18676         * icall.c: added a couple of icalls for System.Web.
18677
18678 2003-08-28  Martin Baulig  <martin@ximian.com>
18679
18680         * icall.c (ves_icall_Type_BindGenericParameters): Use
18681         `klass->generic_inst' instead of `&klass->byval_arg' in the
18682         mono_type_get_object() call.  The returned type must be
18683         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
18684
18685 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * NOTES: New file.
18688
18689         * object.c (mono_class_proxy_vtable): Make it thread safe.
18690
18691         * pedump.c: Fix warning.
18692
18693         * object.c appdomain.h: Get rid of metadata_section. 
18694         It is no longer needed and it was causing deadlocks with domain->lock.
18695
18696         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
18697
18698 2003-08-26  Martin Baulig  <martin@ximian.com>
18699
18700         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
18701
18702 2003-08-26  Martin Baulig  <martin@ximian.com>
18703
18704         * pedump.c (main): Call mono_metadata_init(),
18705         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
18706         and mono_loader_init().
18707
18708 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
18709
18710         * loader.h: Add missing include to fix build.
18711
18712         * image.h: mono_image_load_references is no more.
18713
18714         * assembly.c: Reworked assembly loading to make it really thread safe.
18715         After these changes, the assembly returned by mono_assembly_open is
18716         fully initialized, i.e. all its references assemblies are loaded.
18717
18718         * assembly.c (mono_image_load_references): Renamed to 
18719         mono_assembly_load_references, and made private, since clients no
18720         longer need to call it.
18721
18722         * class.c: Removed calls to mono_assembly_load_references, since it was
18723         a source of deadlocks.
18724
18725         * loader.h loader.c class.h class.c: Protect data structures using a 
18726         new lock, the loader lock.
18727
18728         * class.c (mono_class_setup_vtable): Create temporary hash tables and
18729         GPtrArrays only when needed.
18730
18731         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
18732         into empty structures by mcs. Fixes pinvoke7.cs.
18733         
18734         * domain.c (mono_init): Call a new initialization function.
18735
18736         * appdomain.c (mono_runtime_init): Call the new initializer function
18737         of the marshal module.
18738
18739         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
18740         inserted into empty structures by mcs. Fixes pinvoke7.cs.
18741
18742         * marshal.h marshal.c: Added locks around the wrapper caches to make
18743         this module thread safe.
18744
18745         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
18746         this argument. Fixes pinvoke1.exe.
18747
18748 2003-08-25  Lluis Sanchez <lluis@ximian.com>
18749
18750         * object.h: Added call_type field to MonoMethodMessage and the corresponding
18751         enumeration of values. Removed fields to store remote call output values in
18752         MonoAsyncResult. Not needed any more.
18753         * object.c: Initialize call_type and async_result fields in mono_message_init.
18754         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
18755         dispatching the message.
18756         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
18757         async call to finish. To do it use a message with EndInvoke call type.
18758
18759 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * loader.h loader.c (mono_method_hash_marhal_info): New function which
18762         determines whenever a method has marshalling info.
18763
18764 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18765
18766         * assembly.c: fix the build on windows.
18767
18768 2003-08-22 Lluis Sanchez <lluis@ximian.com>
18769
18770         * object.cs: Fixed bug #47785.
18771
18772 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
18773
18774         * string-icalls.c (StringReplace): If their are no occurances of
18775         the old string found return a reference to the supplied
18776         string. This saves some memory and matches MS behavoir.
18777         
18778 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18779
18780         * socket-io.c: fixed compilation for systems that define AF_INET6
18781         and don't define SOL_IP/SOL_IPV6.
18782
18783 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
18786         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
18787
18788         * rawbuffer.c rawbuffer.h: Make this module thread safe.
18789
18790         * domain.c: Make this module thread safe.
18791
18792         * domain.c (mono_init): Call new initialization function.
18793
18794         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
18795         reference types too. Fixes #38812.
18796
18797         * image.c (mono_image_init): Fixed warnings.
18798
18799         * class.c (mono_class_from_typeref): Handle assembly load failure
18800         correctly.
18801
18802         * appdomain.c (add_assemblies_to_domain): Handle the case when
18803         the references of an assembly are not yet loaded.
18804
18805         * metadata.c image.c assembly.c: Moved initialization of global
18806         variables to a separate function called at startup since lazy 
18807         initialization of these variables is not thread safe.
18808         
18809         * image.c assembly.c: Made this module thread safe by adding locks in 
18810         the appropriate places.
18811
18812         * domain.c (mono_init): Call the new initialization functions of the
18813         three modules.
18814
18815 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
18816
18817         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
18818           make a direct call. It is proxy's work to make the call asynchronous.
18819           mono_delegate_end_invoke(): If the targe is a proxy, just collect
18820           the return values.
18821         * object.cs: mono_method_call_message_new(): read AsyncResult and
18822           state object from parameters list, if this info is requested.
18823         * object.h: Added fields to store remote call output values in
18824           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
18825
18826 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
18827
18828         * object.h: add needed fields to MonoThread.
18829         * threads.c, threads.h: allow registering a function to cleanup data
18830         allocated per thread by the JIT.
18831
18832 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18833
18834         * loader.h: portability fix by Bernie Solomon
18835         * <bernard@ugsolutions.com>.
18836
18837 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
18840         return a MonoArray. This simplifies the code and also ensures that
18841         the cache allways contains an object reference as a value.
18842
18843         * icall.c (ves_icall_get_parameter_info): Simplified using the new
18844         function.
18845
18846 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18847
18848         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
18849         fixes a problem with byte ordering when getting the address family for
18850         a socket.
18851
18852 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * .cvsignore: Added monosn.
18855
18856         * reflection.h reflection.c loader.c: Added support for parameter
18857         marshalling to dynamically created types. Fixes #47295.
18858
18859 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
18860
18861         * rand.c: remove useless warnings.
18862
18863 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
18864
18865         * class.c: implemented ldtoken for methods and fieldrefs.
18866
18867 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18868
18869         * threadpool.c: when mono_async_invoke was called, no one took care of
18870         monitoring the queue. So if the method invoked took some time and we
18871         got new async invoke requests after 500 ms (the thread created waited
18872         that long in WaitForSingleObject), the new async invoke was not called
18873         until the previous one finished.
18874
18875         This is fixed now. Thanks to Totte for helping with it.
18876
18877 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18878
18879         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
18880
18881 2003-08-11  Martin Baulig  <martin@ximian.com>
18882
18883         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
18884
18885 2003-08-06  Martin Baulig  <martin@ximian.com>
18886
18887         * mono-debug-debugger.c: Added support for static fields,
18888         properties and methods.
18889
18890 2003-08-06  Martin Baulig  <martin@ximian.com>
18891
18892         * mono-debug-debugger.c: Don't store the MonoString's vtable to
18893         make this work for applications with multiple application domains.
18894
18895 2003-08-04  Martin Baulig  <martin@ximian.com>
18896
18897         * mono-debug-debugger.c: Completely reworked the type support; the
18898         most important thing is that we're now just using one single
18899         `MonoType' instance per type.
18900
18901 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
18902
18903         * mono-endian.h, mono-endian.c, icall.c: Added icall
18904         ves_icall_System_Double_AssertEndianity to assert double word endianity
18905         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
18906
18907 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
18908
18909         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
18910         support, icalls and fixes.
18911
18912 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
18913
18914         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
18915         classes that are a punctuation character in .NET is not the same a
18916         g_unichar_ispunct.
18917
18918 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
18919
18920         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
18921
18922 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
18923
18924         * icall.c: Add new MemCopy internalcall.
18925         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
18926         Simplified code; It is not necessary to handle all the cases here,
18927         as the C# code takes care of it.  Only handle the case of the name
18928         resource embedded into the assembly.
18929
18930         Changed signature to return the data pointer and the size of the
18931         data. 
18932
18933 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
18934
18935         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
18936         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
18937
18938 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
18939
18940         * socket-io.c: ignore EINTR error in select.
18941
18942 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
18943
18944         * class.h, class.c: removed unused subclasses field in MonoClass.
18945
18946 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
18947
18948         * icall.c: improve fix of get_base_definition(). If the parent class
18949           doesn't have the mehod, look at the parent of the parent.
18950         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
18951           to check if a parameter is an in or out parameter
18952           (PARAM_ATTRIBUTE_IN is not set by default).
18953           mono_method_return_message_restore(): Use mono_class_value_size to
18954           get the size of a value type. mono_type_stack_size (parameterType)
18955           does not return the correct value if parameterType is byRef.
18956           mono_load_remote_field(), mono_load_remote_field_new(),
18957           mono_store_remote_field(), mono_store_remote_field_new():
18958           raise exception if the remote call returns an exception.
18959
18960 2003-07-28  Martin Baulig  <martin@ximian.com>
18961
18962         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
18963         method.  This is a wrapper around mono_runtime_invoke() which
18964         boxes the instance object if neccessary.
18965
18966 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
18967
18968         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
18969         metadata.h, row-indexes.h, verify.c: first cut of generics support.
18970
18971 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
18972
18973         * icall.c: disable mcs bug workaround.
18974
18975 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
18976
18977         * object.c (mono_runtime_class_init): Take the metadata_section
18978         mutex before obtaining the domain mutex.
18979
18980         * appdomain.h: Added definition of metadata_section mutex here. 
18981
18982         * object.c: define metadata_mutex here.
18983
18984 2003-07-24  Ravi Pratap  <ravi@ximian.com>
18985
18986         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
18987         fixed.
18988
18989 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
18990
18991         * reflection.c: Fix bug #46669
18992
18993 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18994
18995         * exception.c:
18996         * exception.h:
18997         * icall.c:
18998         * object.h: fill in the type name for TypeLoadException.
18999
19000 2003-07-23  Ravi Pratap  <ravi@ximian.com>
19001
19002         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
19003         relationship between TypeBuilders while compiling corlib) and bug
19004         45993 (Array types returned from the runtime while compiling
19005         corlib were from the loaded corlib).
19006
19007 2003-07-22  Martin Baulig  <martin@ximian.com>
19008
19009         * mono-debug-debugger.c: Reworked the type support a bit more;
19010         distinguish between types and classes.
19011
19012 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
19013
19014         * icall.c: add IsArrayImpl icall.
19015
19016 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
19017
19018         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
19019         initializing real_size only once. Also fix bug #46602.
19020
19021 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
19022
19023         * object.c: Renamed mono_metadata_section to metadata_section.
19024
19025 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
19026
19027         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
19028           empty array if the type is an array. Fixed.
19029           ves_icall_MonoMethod_get_base_definition: if the base method
19030           is abstract, get the MethodInfo from the list of methods of
19031           the class.
19032         * reflection.c: ParameterInfo.PositionImpl should be zero-based
19033           and it was 1-based. Fixed in mono_param_get_objects.
19034
19035 2003-07-20  Martin Baulig  <martin@ximian.com>
19036
19037         * mono-debug.h: Set version number to 31.
19038         (mono_debug_init): Added `MonoDomain *' argument.
19039
19040         * mono-debug-debugger.c: Reworked the type support; explicitly
19041         tell the debugger about builtin types; pass the `klass' address to
19042         the debugger.
19043
19044 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
19045
19046         * image.c: Allow new metadata tables to be loaded without a
19047         warning. Also update the warning message to give the new constant value.
19048                 
19049 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
19050
19051         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
19052         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
19053         array type representation changes.
19054
19055 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19056
19057         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
19058         on Environment.Exit () call.
19059
19060 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
19061
19062         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
19063         requires a matching corlib.
19064
19065 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19066
19067         * Changelog: My editor decided to add a CR to each line. Sorry about that.
19068           Committed again without the CRs.
19069         
19070 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
19071
19072         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
19073           getting it from the "this" socket instance. Did not work
19074           if the socket is a subclass of Socket.
19075           Also fixed bug #35371.
19076
19077 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19078
19079         * metadata.c: fixed size for TypedByRef.
19080         * loader.c: when searching for a method, consider the vararg amrker.
19081         * unicode.c, decimal.c: constify some arrays.
19082
19083 2003-07-15  Dick Porter  <dick@ximian.com>
19084
19085         * socket-io.c: Fixed compilation for gcc < 3.2.
19086
19087         Fixed compilation for machines that don't have AF_INET6 (thanks to
19088         Bernie Solomon <bernard@ugsolutions.com> for that part.)
19089
19090         Fixed compile warnings.
19091         
19092         Fixed formatting and line endings.
19093
19094 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
19095
19096         * socket-io.h:
19097         * socket-io.c: Added IPv6 support.
19098
19099 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * class.c (mono_class_is_assignable_from): New function to implement
19102         the is_assignable_from logic. Used by mono_object_isinst, 
19103         Type::IsAssignableFrom () and the interpreter.
19104
19105         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
19106         Object, even interfaces.
19107         
19108         * object.c (mono_object_isinst): Implement in terms of 
19109         is_assignable_from.
19110
19111         * icall.c (ves_icall_type_is_assignable_from): New icall.
19112
19113 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * domain.c (foreach_domain): fix compiler warning.
19116
19117 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
19118
19119         * image.c (load_metadata_ptrs): use g_strndup because strndup is
19120         not available on all plattforms
19121
19122 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
19123
19124         * image.h image.c: Store the metadata version string in MonoImage.
19125         * icall.c: New icall to retrieve the image version.
19126         * reflection.c (create_dynamic_image): Fill in the image version field
19127         * reflection.c (build_compressed_metadata): Use the image version
19128         from the image structure.
19129
19130 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19131
19132         * appdomain.c: modified comment.
19133         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
19134         That will be its last iteration when mono_gc_cleanup is called from
19135         mono_runtime_cleanup and before the domain is unloaded.
19136
19137         Fixes bug #45962.
19138
19139 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
19140
19141         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
19142         attributes.
19143
19144 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19145
19146         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
19147         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
19148         Bernie Solomon <bernard@ugsolutions.com>.
19149
19150 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19151
19152         * object.c, object.h: provide mono_object_new_fast() for faster
19153         allocation in some special cases.
19154
19155 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
19156
19157         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
19158         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
19159
19160 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
19161
19162         * threadpool.c: fix leaks.
19163
19164 2003-07-01  Dick Porter  <dick@ximian.com>
19165
19166         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
19167         using MonoGHashTables.  Fixes threadpool bug posted to list.
19168
19169 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
19170
19171         * image.h, image.c: added support to load an assembly from a byte array.
19172         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
19173         assembly bundle support.
19174
19175 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
19176
19177         * threadpool.c (mono_thread_pool_add): keep a reference to the
19178         AsyncResult to prevent GC
19179
19180 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19181
19182         * class.c: leak fix.
19183
19184 2003-06-25  Dick Porter  <dick@ximian.com>
19185
19186         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
19187         for the async object, the WaitHandle object will close the handle.
19188         Fixes bug 45321.
19189
19190 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19191
19192         * class.c: in mono_array_class_get (), lookup from the hash with the
19193         same type we insert: this works around a bug in
19194         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
19195         lluis. The real fix will have to wait for after the release.
19196
19197 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19198
19199         * icall.c: fix memory leak when getting type members.
19200
19201 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19202
19203         * reflection.c: added more pubtoken special cases.
19204
19205 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
19206
19207         * class.c: handle field offset correctly when class size
19208         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
19209
19210 2003-06-20  Martin Baulig  <martin@ximian.com>
19211
19212         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
19213         *image' field.
19214
19215 2003-06-20  Martin Baulig  <martin@ximian.com>
19216
19217         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
19218
19219 2003-06-20  Martin Baulig  <martin@ximian.com>
19220
19221         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
19222         just distinguish between variables in registers and variables at
19223         an offset relative to a register.
19224
19225 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19226
19227         * icall.c: #ifdef out latest changes until mcs is fixed.
19228
19229 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19230
19231         * icall.c: return members in metadata order.
19232
19233 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
19234
19235         * icall.c: avoid infinite loop in GetTimeZoneData.
19236
19237 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
19238
19239         * icall.c: added Marshal.Prelink/All icalls.
19240
19241 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
19242
19243         * object.c, object.h: fix warnings and do some overflow checking
19244         when creating arrays.
19245
19246 2003-06-17  Dick Porter  <dick@ximian.com>
19247
19248         * file-io.h:
19249         * file-io.c: File attributes need to be tweaked slightly when
19250         passed from the managed to the w32 world.
19251
19252 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19253         * profiler.h profiler-private.h profiler.c: Rework last patch
19254         based on suggestion by Paolo.
19255         
19256 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
19257
19258         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
19259         instruction level coverage data collection.
19260         * profiler.h profiler.c (: Added new callback function which can be
19261         used by the profiler to limit which functions should have coverage
19262         instrumentation.
19263         * profiler.c (mono_profiler_load): Call g_module_build_path to
19264         generate the file name of the profiler library.
19265
19266 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
19267
19268         * profiler.c, profiler.h, profiler-private.h: added basic block 
19269         coverage profiling API.
19270
19271 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * reflection.c (mono_reflection_create_runtime_class): Add support
19274         for events in dynamically generated code.
19275
19276         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
19277         not allocated.
19278
19279 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
19280
19281         * icall.c: when getting timezone info, return reasonable values if we
19282         can't get the actual data.
19283
19284 2003-06-14  Dick Porter  <dick@ximian.com>
19285
19286         * threads.c (start_wrapper): Remove the reference to the thread
19287         object in the TLS data, so the thread object can be finalized.
19288         This won't be reached if the thread threw an uncaught exception,
19289         so those thread handles will stay referenced :-( (This is due to
19290         missing support for scanning thread-specific data in the Boehm GC
19291         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
19292
19293 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
19294
19295         * reflection.c: ensure streams and tables are first allocated with
19296         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
19297
19298 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
19299
19300         * icall.c: fixed GetElementType for byrefs (bug# 44792).
19301
19302 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
19303
19304         * reflection.c (mono_reflection_create_runtime_class): Add support for
19305         properties to dynamically created classes.
19306         * reflection.c: Fix a few places where non-MonoObjects were inserted
19307         into the tokens hashtable.
19308
19309 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19310
19311         * object.c: some support to handle out of memory exceptions.
19312
19313 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
19314
19315         * marshal.c (mono_marshal_get_native_wrapper): support reference
19316         return types
19317
19318 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19319
19320         * object.h, object.c: more portability stuff from Bernie Solomon.
19321         Unexport mono_object_allocate(). Added mono_object_unbox ().
19322         Set exitcode when an unhandled exception is thrown.
19323
19324 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
19325
19326         * marshal.c (mono_marshal_get_native_wrapper): use custom
19327         marshaler for return types.
19328
19329 2003-06-10  Dick Porter  <dick@ximian.com>
19330
19331         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
19332         ip_mreq is available
19333
19334 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
19335
19336         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
19337         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
19338         by Bernie Solomon <bernard@ugsolutions.com>.
19339
19340 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
19341
19342         * gc.c (mono_gc_init): Avoid error message on shutdown when
19343         GC_DONT_GC=1 is used.
19344
19345         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
19346         New icall to return the GUID of a module.
19347
19348 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
19349
19350         * class.c: ensure instance size always includes the parent's size
19351         even whem class size is set explicitly (fixes bug#44294).
19352
19353 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19354
19355         * profiler.h, profiler.c: made the simple profiler thread-safe,
19356         get more accurate timing info. Allow the loading of an
19357         externally-developed profiler module.
19358
19359 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
19360
19361         * marshal.c (mono_marshal_get_native_wrapper): improved
19362         class/byref arguments.
19363         (mono_marshal_get_native_wrapper): better string marshaling support.
19364
19365 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
19366
19367         * class.c: ensure .pack and .size are handled correctly and
19368         simplified layout of static fields.
19369
19370 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
19371
19372         * appdomain.c
19373         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
19374
19375         * loader.c (mono_lookup_pinvoke_call): look for modules in the
19376         current directory (fix bug 44008)
19377
19378 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
19379
19380         * marshal.c (mono_marshal_get_native_wrapper): started support for
19381         custom marshalers.
19382         (mono_delegate_to_ftnptr): consider marshalling specifications
19383
19384 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
19385
19386         * reflection.c, reflection.h: emit custom marshal info.
19387
19388 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19389
19390         * object.c: free the GError.
19391         * icall.c: added CloseEvent_internal.
19392         * threads.[ch]:
19393         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
19394         call.
19395
19396 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * loader.c (mono_method_get_signature): Add support for dynamic
19399         assemblies.
19400
19401 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
19402
19403         * reflection.c: fixed bug #43905.
19404
19405 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
19406
19407         * class.c, domain.c, icall.c, metadata.h, object.h: support for
19408         handling TypedReference and ArgIterator.
19409         * loader.c, loader.h: added function to get signature at call site.
19410
19411 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19412
19413         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
19414         data readonly. Buglets and warning fixes. Some MethodSpec support.
19415
19416 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
19417
19418         * class.h, class.c, object.c: remove relative numbering support.
19419
19420 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
19421
19422         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
19423         free the string, until we get a chance to fix Gtk#
19424
19425 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19426
19427         * marshal.c: revert last patch.
19428
19429 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
19430
19431         * icall.c: updates for new mono_class_vtable() not calling
19432         the type constructor anymore.
19433
19434 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19435
19436         * object.h, object.c: separate vtable creation from type
19437         initialization. Make running the .cctor thread safe.
19438
19439 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
19440
19441         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
19442
19443 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
19444
19445         * loader.c (mono_get_method): consider calling convention
19446
19447 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
19448
19449         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
19450         to return the invisible global type for a module.
19451
19452         * reflection.c (mono_image_build_metadata): Emit global fields too.
19453
19454 2003-05-20  Peter Williams  <peterw@ximian.com>
19455
19456         * loader.c (mono_lookup_internal_call): Add a few newlines.
19457
19458 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
19461         literal strings.
19462
19463         * appdomain.c (set_domain_search_path): Recalculate search path when
19464         AppDomainSetup.PrivateBinPath changes.
19465
19466         * object.c (mono_class_compute_gc_descriptor): It turns out some
19467         parts of the class libs (like System.Thread) holds pointers to
19468         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
19469         to treat native int a pointer type here.
19470         
19471 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
19472
19473         * appdomain.h, domain.c: add hashtable for jump target resolution.
19474
19475 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * reflection.h reflection.c icall.c: Added new icalls 
19478         GetManifestResourceInfoInternal, GetModulesInternal and support
19479         infrastructure.
19480
19481 2003-05-16  Dick Porter  <dick@ximian.com>
19482
19483         * icall.c:
19484         * file-io.h:
19485         * file-io.c: Implement System.IO.MonoIO::GetTempPath
19486
19487 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
19488
19489         * object.c: mono_store_remote_field: little fix to previous patch.
19490
19491 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
19492
19493         * class.c: add constructors to array classes.
19494         * icall.c: special case array construction for InternalInvoke (),
19495
19496 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * class.h class.c reflection.c object.c: Added support for field
19499         defaults in dynamically generated classes.
19500
19501 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
19502
19503         * reflection.c: properly encode charset for ddlimport.
19504
19505 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
19506
19507         * threads.c: allow compiling without GC.
19508
19509 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
19510
19511         * appdomain.h, object.c, object.h, threads.c, threads.h: added
19512         handling of thread static data.
19513
19514 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
19515
19516         * reflection.h, reflection.c: added mono_custom_attrs_free ().
19517
19518 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
19519
19520         * class.c (mono_array_class_get): always set the serializable flags
19521         (mono_array_class_get): always set the SEALED attribute for array types
19522
19523 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
19524
19525         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
19526         attributes (fix for bug 42021).
19527
19528 2003-05-12  Dick Porter  <dick@ximian.com>
19529
19530         * gc.c: Don't run finalizers when the finalizer thread is
19531         finishing up, because the default domain has already been
19532         destroyed.
19533
19534 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
19535
19536         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
19537         value is null, we should throw an exception.   This is slightly
19538         different than the other conventions used for the constructor.
19539
19540 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19541
19542         * socket-io.c: fixed windows build.
19543
19544 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19545
19546         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
19547
19548 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * object.c (mono_string_new_wrapper): Compatibility fix for MS
19551         compilers.
19552
19553 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
19554
19555         * class.c (mono_class_layout_fields): Add experimental GC aware
19556         auto layout facility. Requires class library changes to work correctly.
19557
19558         (mono_class_setup_vtable): Avoid overriding explicit interface
19559         method implementations. Fixes iface3.exe test.
19560
19561         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
19562         object reference.
19563         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
19564         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
19565
19566         * metadata.h: Add new type classification macro which determines
19567         whenever the type holds an object reference.
19568
19569 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
19570
19571         * marshal.c (mono_marshal_get_native_wrapper): cleanups
19572
19573 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
19574
19575         * gc.c (finalizer_thread): Work around a GC bug.
19576
19577 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
19578
19579         * marshal.c (emit_struct_conv): allow unions
19580
19581         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
19582
19583 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
19584
19585         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
19586
19587 2003-05-06  Martin Baulig  <martin@ximian.com>
19588
19589         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
19590
19591 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19592
19593         * socket-io.c:
19594         (Select_internal): allow NULLs, don't create arrays if not needed.
19595         Coupled with Socket.cs changes.
19596
19597         * threadpool.c:
19598         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
19599         register a finalizer for it that will close the semaphore handle. This
19600         fixes the leak and make Lupus' test run with > 4080 loops.
19601
19602 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
19603
19604         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
19605         Jerome Laban (bug #42287)
19606
19607 2003-05-02  Martin Baulig  <martin@ximian.com>
19608
19609         * debug-mono-symfile.h
19610         (MonoSymbolFile): Moved declaration into mono-debug.h.
19611         (MonoDebugMethodJitInfo): Likewise.
19612         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
19613         argument.
19614         (_mono_debug_address_from_il_offset): Take a
19615         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
19616
19617         * mono-debug.h
19618         (MonoDebugDomainData): New struct.
19619         (mono_debug_get_domain_data): New function.
19620         (mono_debug_add_method): Take an additional `MonoDomain *'
19621         argument.
19622         (mono_debug_source_location_from_address): Likewise.
19623         (mono_debug_il_offset_from_address): Likewise.
19624         (mono_debug_address_from_il_offset): Likewise.
19625
19626 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
19627
19628         * reflection.c: one more check for null type in custom attrs.
19629
19630 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19631
19632         * reflection.c: avoid warning (comparison is always false due to limited
19633         range of data type).
19634
19635 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19636
19637         * icall.c: throw an exception in Type.GetField if the argument 'name'
19638         is NULL.
19639
19640 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
19641
19642         * reflection.c: fixed handling of enums in named arguments to custom
19643         attributes (bug #42123).
19644
19645 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
19646
19647         * reflection.c: use the right array element type and handle
19648         a null for a Type argument, too.
19649
19650 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
19651
19652         * reflection.c: handle arrays as arguments to custom attributes.
19653
19654 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
19655
19656         * reflection.c: handle a string value in a custom attr
19657         ctor that takes an object.
19658
19659 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
19660
19661         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
19662         (fix bug #42063)
19663
19664 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
19667
19668 2003-04-27  Martin Baulig  <martin@ximian.com>
19669
19670         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
19671         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
19672         MONO_DEBUGGER_EVENT_BREAKPOINT.
19673         (mono_breakpoint_trampoline_code): Removed.
19674         (mono_debugger_event_handler): The last argument is now a
19675         `guint32'.
19676         (mono_debugger_insert_breakpoint_full): Removed the
19677         `use_trampoline' argument.
19678         (mono_debugger_method_has_breakpoint): Likewise.
19679         (mono_debugger_trampoline_breakpoint_callback): Renamed to
19680         mono_debugger_breakpoint_callback(); take the method and
19681         breakpoint number as arguments.
19682
19683 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
19684
19685         * metadata.c: fix off by one when loading parameters attributes.
19686
19687 2003-04-24  Martin Baulig  <martin@ximian.com>
19688
19689         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
19690
19691 2003-04-24  Martin Baulig  <martin@ximian.com>
19692
19693         * mono-debug-debugger.c: Moved all code which interacts with the
19694         Mono Debugger here.
19695
19696         * debug-mono-symfile.c: This code now just deals with the symbol
19697         file itself, the debugger code is now in mono-debug-debugger.c.
19698
19699 2003-04-23  Martin Baulig  <martin@ximian.com>
19700
19701         * mono-debug.c (mono_debug_source_location_from_il_offset):
19702         New method; like mono_debug_source_location_from_address(), but
19703         takes an IL offset instead of a machine address.
19704
19705 2003-04-23  Martin Baulig  <martin@ximian.com>
19706
19707         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
19708         `line' field; this is now computed by the debugger.
19709
19710 2003-04-23  Martin Baulig  <martin@ximian.com>
19711
19712         * mono-debug.[ch]: New files.  This is the new debugging interface.
19713
19714         * mono-debug-debugger.[ch]: New files.  Moved all code which
19715         interacts with the Mono Debugger here.
19716
19717 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
19718
19719         * domain.c (mono_init): initialize mono_defaults.monitor_class
19720
19721 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
19722
19723         * reflection.c (method_encode_code): Add a spicy exception to help
19724         future compiler authors.
19725
19726 2003-04-21  Martin Baulig  <martin@ximian.com>
19727
19728         * icall.c
19729         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
19730         Make this work with relative pathnames; g_filename_to_uri() needs
19731         an absolute filename.
19732
19733 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
19734
19735         * icall.c: Track name changes in Object and ValueType.
19736
19737 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
19738
19739         * metadata.c (mono_type_stack_size): size should be a multiple of
19740         sizeof (gpointer)
19741
19742 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19743
19744         * gc.c:
19745         (internal_domain_finalize): moved into mono_domain_finalize. No need
19746         to create another thread because the finalizers will be run in the
19747         finalizer thread.
19748         
19749         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
19750         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
19751         to be run (MS does this too).
19752
19753 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * object.c (mono_class_compute_gc_descriptor): Update comment.
19756
19757         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
19758
19759         * image.h: Add synchronized wrapper cache.
19760
19761         * image.c (do_mono_image_open): Initialize cache.
19762
19763         * reflection.c (create_dynamic_mono_image): Initialize cache.
19764
19765 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19766
19767         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
19768         ves_icall_System_Buffer_ByteLengthInternal.
19769
19770 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
19771
19772         * reflection.c: setup klass->nested_in earlier. Allow
19773         a dash in the assembly name.
19774
19775 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
19776
19777         * metadata.c (mono_type_to_unmanaged): dont access
19778         type->data.klass for MONO_TYPE_OBJECT
19779         (mono_type_to_unmanaged): consider System.Delegate class
19780
19781 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
19782
19783         * class.c: just setup supertypes in the proper place instead of
19784         initializing the full element class for arrays.
19785
19786 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
19787
19788         * class.c: ensure the element class of arrays is initialized.
19789         Setup the supertype info for array classes, too.
19790
19791 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
19792
19793         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
19794
19795 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19796
19797         * Makefile.am: re-added -m option when running cygpath. This way,
19798         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
19799         separator.
19800         * mono-config.c: same codepath for locating mono config file for WIN32
19801         and the rest.
19802         * assembly.c: if mono_assembly_setrootdir is called, don't override
19803         the value set.
19804
19805 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19806
19807         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
19808         MONO_ASSEMBLIES variable.
19809
19810 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
19811
19812         * icall.c: added Assembly::GetNamespaces() icall.
19813
19814 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19815
19816         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
19817
19818 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
19819
19820         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
19821         * object.c: fixed bug in the construction of vtable for proxies
19822
19823 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * object.c (mono_array_new): Mark mono_array_new as an icall.
19826
19827 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19828
19829         * class.c: fixed test for public method when overriding interfaces.
19830         Closes bug #40970.
19831
19832 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
19833
19834         * appdomain.h, domain.c: added mono_domain_foreach() to
19835         be able to access the currently loaded appdomains.
19836         * object.c: make string interning work across sppdomains.
19837         Mark some functions for use as icalls.
19838
19839 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
19842
19843         * reflection.h reflection.c: Allocate long living data using 
19844         GC_MALLOC_ATOMIC so the collector does not need to scan it.
19845
19846         * reflection.c: Double the allocation size in streams instead of
19847         increasing it, to prevent unneccesary copying on large assemblies.
19848         
19849         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
19850         creation if the assembly does not have the Run flag set.
19851
19852 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
19853
19854         * class.h: avoid the C++ keywords in header files (Jerome Laban
19855         spotted and fixed this).
19856
19857 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19858
19859         * object.c:
19860         (mono_unhandled_exception): fill in the arguments for the
19861         UnhandledException event. Only trigger that event for the default
19862         domain (as MS does).
19863
19864 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * object.c: Improve typed allocation stuff based on suggestions from
19867         Paolo. Also turn it on if the GC library supports it.
19868
19869 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
19870
19871         * object.c object.h class.h: Added experimental typed allocation
19872         facility using the interfaces in gc_gcj.h.
19873
19874         * os/gc_wrapper.h: Added new include files.
19875         
19876 2003-04-03  Martin Baulig  <martin@ximian.com>
19877
19878         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
19879         which is not yet enabled by default.
19880
19881         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
19882         functions.
19883         (mono_gc_lock, mono_gc_unlock): New static functions.
19884
19885         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
19886         functions; stop/start the world for the garbage collector.  This
19887         is using the windows API; we need to complete the SuspendThread()/
19888         ResumeThread() implementation in the io-layer to make this work on Unix.
19889         (mono_gc_push_all_stacks): New public function; tells the garbage
19890         collector about the stack pointers from all managed threads.
19891
19892 2003-04-03  Martin Baulig  <martin@ximian.com>
19893
19894         * object.h (MonoThread): Added `gpointer stack_ptr'.
19895
19896         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
19897
19898 2003-04-03  Martin Baulig  <martin@ximian.com>
19899
19900         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
19901
19902 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * reflection.c (typebuilder_setup_fields): Initialize field.first and
19905         field.last.
19906
19907 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
19908
19909         * loader.c (mono_lookup_internal_call): Report the corlib that is
19910         out of sync.
19911
19912 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
19913
19914         * icall.c (ves_icall_type_GetTypeCode): fixed check for
19915         System.DBNull (it's class not valuetype).
19916
19917 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
19918
19919         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
19920         if the array method was already assigned a token (fixes bug#40646).
19921
19922 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * reflection.c (mono_reflection_get_type): Attempt type resolve even
19925         if no assembly is given.
19926
19927 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
19928
19929         * metadata.h: Added the new tables.
19930
19931         * row-indexes.h: Added definitions for new tables.
19932
19933         * metadata.c: Add schemas for new tables, and add support for
19934         computing the sizes of them.
19935
19936         * class.c: Update for handling the new type cases.
19937
19938 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
19939
19940         * metadata.h (MONO_TYPE_IS_VOID): new macro
19941
19942 2003-03-31  Martin Baulig  <martin@ximian.com>
19943
19944         * threads.h (MonoThreadCallbacks): Added `thread_created'.
19945
19946         * threads.c (mono_thread_new_init): Call `thread_created' in the
19947         mono_thread_callbacks.
19948
19949 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
19950
19951         * loader.h: added marshalbyrefobject_class to mono_defaults
19952         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
19953         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
19954           generation of output parameters.
19955           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
19956         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
19957           contextbound and the target object belongs to the context of the caller.
19958         * object.h: added context and unwrapped_server variables in MonoRealProxy.
19959         * object.c: Implemented support for interfaces and abstract classes
19960           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
19961           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
19962
19963 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * class.h class.c (mono_class_is_subclass_of): New function.
19966         
19967         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
19968         routines for most common case (calls from ArrayList::ToArray).
19969
19970         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
19971         routine so programs which call Environment::Exit() can be profiled.
19972
19973         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
19974         Added MONO_ARCH_SAVE_REGS.
19975
19976         * icall.c (ves_icall_type_is_subtype_of): Use new function.
19977
19978 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
19979
19980         * blob.h: Add a couple of new MonoType types definitions.
19981
19982         * tabledefs.h: Add a couple of new call convs.
19983
19984 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
19985
19986         * reflection.h (MonoReflectionDynamicAssembly): track changes in
19987         the layout of the class.
19988
19989         * reflection.c (alloc_table): double the size on overflow to avoid
19990         unnecessary copying.
19991
19992         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
19993         avoid filling out metadata tables and blobs. Also set mb->ilgen to
19994         null so it can be garbage collected.
19995         
19996 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * reflection.c (mono_reflection_get_type): Return the resolved type
19999         only if it is in the assembly we searched.
20000
20001         * reflection.c (ensure_runtime_vtable): Initialize method slots.
20002
20003         * class.c (mono_class_setup_vtable): Set the slot of the overriding
20004         method.
20005
20006 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20007
20008         * appdomain.c:
20009         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
20010         the right one is 'file:///blah', but MS allows it.
20011         * assembly.c:
20012         (mono_assembly_open): allow 'file://blah'
20013
20014         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
20015
20016 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
20017
20018         * socket-io.c: fixes bug #40310.
20019
20020 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * reflection.c (mono_reflection_parse_type): handle deeply nested
20023         types correctly.
20024
20025         * reflection.c (mono_image_create_token): Use unique token values
20026         since they will be put into a hash table.
20027
20028         * class.c (mono_class_setup_vtable): If a method occurs in more than
20029         one place in the vtable, and it gets overriden, then change the
20030         other occurances too.
20031
20032         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20033         object as return type.
20034
20035 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20036
20037         * icall.c: Deleted "ToString" implementation for double and float
20038         because they are full implemented in managed code.
20039
20040 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20041
20042         * reflection.c, reflection.h: implemented and exported functions
20043         to retrieve info about custom attributes.
20044
20045 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20046
20047         * appdomain.c: moved Uri handling to assembly.c
20048         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
20049         work when using a file Uri in *nix and windows.
20050
20051         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
20052         GetReferencedAssemblies.
20053
20054 2003-03-18  Dick Porter  <dick@ximian.com>
20055
20056         * icall.c: Rename a couple of internal calls
20057
20058         * threads.c: Set the thread state to Stopped when a thread exits.
20059         Fixes bug 39377.
20060
20061 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
20064         New icall.
20065
20066         * object.c (mono_class_vtable): fix warning.
20067
20068 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
20069
20070         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
20071
20072         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
20073         memory.
20074         (method_encode_clauses): Create exception info structures in the right
20075         order.
20076         (mono_reflection_setup_internal_class): Initialize supertypes field.
20077
20078         * class.c object.c: Handle interfaces which implement other interfaces 
20079         correctly.
20080
20081         * class.h class.c: Move the supertypes array initialization code into 
20082         a separate function so it can be used for dynamic types too. Also call
20083         it earlier, in mono_class_init(), since it can be used before the
20084         type is initialized.
20085
20086 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20087
20088         * Makefile.am:
20089         * assembly.c:
20090         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
20091
20092         * appdomain.c:
20093         * appdomain.h:
20094         * marshal.c:
20095         * object.c: remove warnings.
20096
20097 2003-03-13  Martin Baulig  <martin@ximian.com>
20098
20099         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
20100         (MonoDebugLexicalBlockEntry): New types.
20101
20102         * debug-mono-symfile.c
20103         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
20104
20105 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20106
20107         * process.c: ret can be any non-zero value accroding to MS doc.
20108
20109 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
20110
20111         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
20112         fixing a warning for a miss-used prototype, would have cause
20113         random memory corruption.
20114
20115 2003-03-07  Martin Baulig  <martin@ximian.com>
20116
20117         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
20118         getting really annoying ....
20119
20120 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
20121
20122         * reflection.c (fixup_method): added support for array methods.
20123
20124 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20125
20126         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
20127         (pointed out by Michael Adams).
20128
20129 2003-03-04  Dick Porter  <dick@ximian.com>
20130
20131         * icall.c: Temporarily reverted the Double and Single ToString()
20132         change, because it broke nunit.
20133
20134 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
20135
20136         * object.h, threads.h: make include files compatible with C++
20137         (patch by Jerome Laban <jlaban@wanadoo.fr>).
20138
20139 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20140
20141         * icall.c: Erased ToString helper functions for Double and Single.
20142         Now, that implementations ar all in managed code (Double and Single
20143         Formatters).
20144
20145 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
20146
20147         * appdomain.c: Added method for initializing the default context of
20148         a domain. Added internal call for getting the default context.
20149         * appdomain.h: Added context variable in MonoDomain struct.
20150         * domain.c: mono_domain_set also sets the default context of the domain
20151         * icall.c: Mapped internal method InternalGetDefaultContext.
20152         * object.c: mono_object_get_virtual_method returns always a remoting
20153         wrapper if the object is a transparent proxy.
20154         mono_runtime_invoke_array: when creating an object by calling the
20155         constructor, if the created object is a proxy, then the constructor should
20156         be called using the a remoting wrapper.
20157
20158 2003-03-03  Dick Porter  <dick@ximian.com>
20159
20160         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
20161         variable so it compiles on solaris.  Problem spotted by
20162         Christopher Taylor <ct@cs.clemson.edu>
20163
20164 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20165
20166         * appdomain.c:
20167         (get_info_from_assembly_name): don't leak value.
20168
20169         * icall.c:
20170         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
20171         result.
20172
20173 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20174
20175         * assembly.c: export mono_image_load_references ().
20176         * class.c: handle function pointers. mono_class_from_name() now
20177         supports nested type names directly.
20178
20179 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * reflection.h reflection.c: Encode already created dynamic methods 
20182         and fields correctly as a DEF instead of a REF.
20183
20184         * reflection.c: Get rid of the force_ref argument to 
20185         mono_image_typedef_or_ref since it was wrong in the first place.
20186
20187         * string-icalls.c: add error checking to string constructors according
20188         to the MSDN docs.
20189
20190         * reflection.c: Emit types in the order their TypeBuilders were 
20191         created. Previously, a new table index was assigned to each type before
20192         the tables were emitted. This was wrong because the signature blob
20193         might already refer to a type by its original table index.
20194
20195 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
20196
20197         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
20198         change.
20199         
20200 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20201
20202         * Makefile.am: make assemblies dir have \ instead of / on windows.
20203
20204 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
20205
20206         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
20207         iterate over the NESTEDCLASS table using a linear search since the
20208         table is not guaranteed to be sorted by the secondary key.
20209
20210         * class.c (mono_class_create_from_typedef): fixed up call to
20211         mono_metadata_nesting_typedef.
20212         
20213 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
20214
20215         * marshal.c (mono_string_to_byvalstr): clear the memory as
20216         suggested by Jerome Laban <jlaban@wanadoo.fr>
20217
20218 2003-02-26  Dick Porter  <dick@ximian.com>
20219
20220         * process.c: Cope with padding in .rsrc blocks
20221
20222 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20223
20224         * metadata.h: reverted the filter_len change, it breaks reflection
20225         
20226 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
20227
20228         * metadata.h: added a new field to store the filter_len
20229         
20230
20231 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20232
20233         * reflection.c: handle custom attributes for types and members
20234         created with Reflection.Emit (bug#38422).
20235
20236 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
20237
20238         * reflection.c: define RTSpecialName automatically for constructors for
20239         compatibility with MS.NET.
20240
20241         * reflection.c (mono_reflection_create_runtime_class): initialize
20242         nested_in field of dynamically created classes.
20243
20244 2003-02-22  Martin Baulig  <martin@ximian.com>
20245
20246         * debug-mono-symfile.h: Incremented version number.
20247
20248 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * object.h icall.c process.c: fix warnings.
20251
20252 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * appdomain.h appdomain.c:
20255         (mono_domain_try_type_resolve): split the 
20256         name_or_tb argument into a name and a tb argument.
20257         (mono_domain_has_type_resolve): new function to check whenever the
20258         application has registered a TypeResolve event handler.
20259         
20260         * icall.c reflection.h reflection.c: move the type resolve logic into
20261         mono_reflection_get_type () so it will be invoked when 
20262         Assembly::GetType () is called.
20263
20264         * reflection.c:
20265         (mono_reflection_get_type): renamed to get_type_internal.
20266         (mono_reflection_get_type): fixed type name generation so it works 
20267         for nested types too.
20268         (mono_reflection_get_type): call has_type_resolve () to avoid the 
20269         costly type name generation if there is no resolve event handler.
20270
20271 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20272
20273         * class.c, image.c: load exported types from file references.
20274
20275 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
20276
20277         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
20278           used to cache the managed methods used to create proxies and make 
20279           remote invocation of methods.
20280         * class.h: Added in MonoVTable a flag to indicate that a class needs 
20281           to be remotely created.
20282         * object.c: Modified the method mono_class_vtable(). It now initializes 
20283           the remote flag of the vtable. Modified mono_object_new_specific(), 
20284           so now it checks the remote flag.
20285         * icall.c: Added a couple of internal methods, one for enabling instance 
20286           creation interception for a type, and one for creating objects bypassing
20287           the remote check.
20288
20289 2003-02-18  Martin Baulig  <martin@ximian.com>
20290
20291         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
20292         New interncall to get a method's metadata token.
20293
20294         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
20295         New interncall for the debugger.
20296
20297 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
20298
20299         * class.c (mono_class_setup_vtable): allocate supertype array
20300
20301 2003-02-18  Martin Baulig  <martin@ximian.com>
20302
20303         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
20304
20305 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20306
20307         * reflection.c:
20308         (assembly_name_to_aname): jump over unknown properties (i've found
20309         something like: 'type, assembly, version=xxx, custom=null, public...',
20310         so now will ignore custom=null and still get the rest of the values).
20311
20312 2003-02-17  Dick Porter  <dick@ximian.com>
20313
20314         * threads.c: Have Thread.Start() wait for a semaphore to signal
20315         that the thread has set up all its local data.  This fixes bug
20316         34323, where Abort() raced the new thread's TLS data.
20317
20318         Also removes the handle_store() call from start_wrapper, because
20319         threads are now always created suspended and there is no longer a
20320         race between the parent and child threads to store the info.
20321
20322 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
20323
20324         * image.c: explain the #- heap issue in a message, hopefully
20325         avoiding FAQs on mono-list.
20326
20327 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20328
20329         * icall.c:
20330         (GetEntryAssembly): if the domain has not invoked
20331         AppDomain.ExecuteAssembly yet, return the assembly of the default
20332         AppDomain.
20333
20334 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * class.c (mono_ldtoken): make it work in dynamic assemblies.
20337
20338 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20339
20340         * metadata.c, reflection.c: simple speedup to type hash
20341         and equals code.
20342
20343 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
20344
20345         * image.c, image.h, class.c, assembly.c: move module loading
20346         to MonoImage. When loading metadata, consider alignemnet from
20347         the start of metadata, not from the metadata address in memory.
20348
20349 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
20350
20351         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
20352         AssemblyBuilder objects. Factored out custom attribute creation into
20353         a separate function.
20354         (create_custom_attr): new function to create custom attributes.
20355
20356 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
20357
20358         * Makefile.am: Got tired of typing the full pathname to pedump.
20359         Until there is another option, am installing this.
20360
20361 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
20362
20363         * class.c (class_compute_field_layout): always set field->parent 
20364         (mono_ldtoken): use mono_defaults.fieldhandle_class;
20365
20366 2003-02-11  Dick Porter  <dick@ximian.com>
20367
20368         * threads-types.h:
20369         * monitor.c: Rewrote Monitor, making lock much faster and
20370         Pulse/Wait work as specified.  Also uses much fewer handles, and only
20371         creates them as needed.
20372
20373         * exception.c: Added SynchronizationLockException
20374
20375         * threads.c: Deleted old Monitor implementation.  The new one is
20376         in a new file.
20377
20378 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20379
20380         * class.c: handled TypedReference type code. Set the correct size for
20381         class data. Setup interface_offsets for interface classes, too.
20382
20383 2003-02-09  Martin Baulig  <martin@ximian.com>
20384
20385         * debug-mono-symfile.h: Reflect latest symbol writer changes.
20386
20387 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
20388
20389         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
20390         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
20391         * object.c: fixed mono_object_get_virtual_method () for interfaces.
20392         * verify.c: check for code that runs after the end of the method.
20393
20394 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
20395
20396         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
20397         "System.Math::Round2".
20398         * sysmath.h: Added Floor, Round and Round2 definitions.
20399         * sysmath.c: Modified certain functions that were not 100% compliant
20400         with MS.NET (math precision) and added the implementation of Floor,
20401         Round and Round2.
20402
20403 2003-02-07  Martin Baulig  <martin@ximian.com>
20404
20405         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
20406
20407 2003-02-07  Martin Baulig  <martin@ximian.com>
20408
20409         * debug-mono-symfile.c: Reflected latest symwriter changes.
20410         (mono_debug_create_mono_symbol_file): Removed.
20411         (mono_debug_open_mono_symbol_file): Take an argument which
20412         specifies whether to create a dynamic symbol file.
20413
20414 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
20415
20416         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
20417
20418 2003-02-05  Martin Baulig  <martin@ximian.com>
20419
20420         * reflection.c (mono_image_build_metadata): Make this public,
20421         protect it against being called multiple times, don't create
20422         resources and don't build the compressed metadata here.
20423         (mono_image_create_pefile): Do this here.
20424
20425         * icall.c
20426         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
20427
20428 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20429
20430         * socket-io.c: fixed bug #36322.
20431
20432 2003-02-06  Piers Haken <piersh@friskit.com>
20433
20434         * appdomain.[ch]:
20435         * class.h:
20436         * debug-mono-symfile.c:
20437         * icall.c:
20438         * loader.c:
20439         * mono-config.c:
20440         * monosn.c:
20441         * reflection.c:
20442         * socket-io.c: warning cleanups
20443
20444 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
20445
20446         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
20447         function. works like remoting invoke, but does a check for the Proxy first.
20448
20449 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
20450
20451         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
20452
20453 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
20454
20455         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
20456         array of pointers.
20457         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
20458         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
20459
20460         * object.c (mono_store_remote_field_new): used by the new jit
20461         instead of mono_store_remote_field
20462         (mono_load_remote_field_new): used by the new jit
20463         instead of mono_load_remote_field
20464
20465 2003-02-05  Patrik Torstensson
20466
20467         * appdomain.c: changed unload to take the domain id instead
20468         of domain
20469         
20470         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
20471
20472
20473 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20474
20475         * appdomain.c: don't look for assemblies in ApplicationBase if
20476         PrivateBinPathProbe is set.
20477
20478 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20479
20480         * object.c: make the first argument in main_args contain the absolute
20481         path to the assembly. Fixes bug #37511.
20482
20483 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20484
20485         * icall.c: get correct UTC offset for countries not using daylight
20486         time saving. Fixes bug #30030.
20487
20488 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20489
20490         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
20491         and 1 are the family).
20492
20493 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
20494
20495         * icall.c (ves_icall_InternalExecute): removed wrong assertion
20496
20497         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
20498
20499 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * reflection.c: added support for SignatureHelper tokens, which is
20502         needed by the Calli opcode.
20503
20504         * reflection.h: track changes to SignatureHelper class.
20505
20506         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
20507
20508 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20509
20510         * appdomain.c: fixed loading assemblies from PrivateBinPath.
20511
20512 2003-02-03  Patrik Torstensson
20513         * appdomain.[c|h], domain.c : 
20514          - Added support for getting a domain via domain id
20515          - Support for setting and getting domain from System.AppDomain 
20516            (used in cross appdomain channel)
20517          - Added support for get/set for a MonoAppContext on a thread 
20518            (Context class in System.Runtime.Remoting.Contexts),
20519          - Removed hack in Get/SetData and ExecuteAssembly.
20520         
20521         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
20522         the managed world to get control when a proxy is created.
20523
20524         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
20525         
20526 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
20527
20528         * icall.c
20529         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
20530         Populate the codebase field as well.
20531
20532 2003-02-02  Martin Baulig  <martin@ximian.com>
20533
20534         * debug-mono-symfile.c
20535         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
20536         (mono_debug_symfile_add_method): Allow interncalls.
20537
20538 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20539
20540         * icall.c: throw parse exception if strtod fails or the string is empty.
20541
20542 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
20543
20544         * marshal.c: handle object type separately from defined
20545         class types.
20546
20547 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
20548
20549         * marshal.c: handle NATIVE_LPSTR for strings when it's
20550         explicitly specified.
20551
20552 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
20553
20554         * reflection.c, reflection.h, icall.c: setup the reflection
20555         handle cache for ModuleBuilders and AssemblyBuilders.
20556
20557 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
20558
20559         * reflection.c (reflection_methodbuilder_to_mono_method): set
20560         pinvoke flag
20561
20562 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20563
20564         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
20565
20566 2003-01-29  Dick Porter  <dick@ximian.com>
20567
20568         * threads.c: No need for the fake_thread kludge now that Thread
20569         doesn't run a class constructor
20570         
20571 2003-01-29  Dick Porter  <dick@ximian.com>
20572
20573         * threads.c: Use g_direct_hash instead of the rather bogus
20574         g_int_hash
20575
20576 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
20577
20578         * marshal.c (mono_marshal_get_native_wrapper): add check for null
20579         (fix pinvoke12.exe)
20580         (mono_marshal_get_struct_to_ptr): generate valid IL code
20581         (mono_marshal_get_ptr_to_struct): generate valid IL code
20582         (*): correctly set sig->pinvoke, we need to memdup the signature
20583         to do that
20584
20585 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20586
20587         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
20588         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
20589
20590 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
20591
20592         * profiler.c: provide more callers information.
20593
20594 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
20595
20596         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
20597
20598         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
20599
20600         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
20601
20602 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
20603
20604         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
20605         exception instead of going into an infinite loop on dates which it 
20606         can't yet handle.
20607
20608         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
20609         out-of-range exception if needed.
20610
20611         * class.c (mono_class_setup_vtable): allow a virtual method to provide
20612         an implementation for an interface method and to override an inherited
20613         method at the same time. 
20614         Imagine a scenario when a virtual method is used to override a
20615         virtual abstract method in a parent class, and this same method 
20616         provides an implementation for an method inherited from an interface. 
20617         In this case, the interface resolution code will set im->slot, which 
20618         means that the virtual method override pass will skip this method 
20619         which means a pointer to the abstract method inherited from the parent
20620         will remain in the vtable of this non-abstract class.
20621
20622         * class.c: (mono_class_setup_vtable): continue search for a real 
20623         method if only an abstract method is found.     
20624
20625 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
20626
20627         * reflection.c: add size to encoding for ByValStr and ByValArray
20628         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
20629
20630 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
20631
20632         * class.c (mono_class_setup_vtable): pass the override info as an
20633         argument.
20634
20635         * class.c (mono_class_setup_vtable): set the slot of overriding methods
20636         correctly.
20637         
20638         * reflection.c (ensure_runtime_vtable); add support for method 
20639         overrides.
20640         
20641 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * reflection.c (resolution_scope_from_image): Hack to work to work with
20644         dynamic assemblies.
20645
20646         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
20647         added a 'force_ref' argument to force this function to allways return 
20648         a TypeRef. This is needed by mono_image_get_memberref_token ().
20649         
20650 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
20651
20652         * reflection.c (mono_image_get_type_info): interfaces really don't have
20653         a parent.
20654
20655         * reflection.c (mono_image_basic_init): fill out missing fields of
20656         image structure.
20657
20658         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
20659         dynamic assemblies. This is required so dynamic assemblies show up in
20660         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
20661         Type::GetType() etc. This is consistent with MS behaviour.
20662
20663         * image.c image.h reflection.c: add newly created classes to the name 
20664         cache so mono_class_get () will find them.      
20665
20666 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
20667
20668         First part of changes to get IKVM.NET running under mono.
20669         
20670         * appdomain.h, appdomain.c: added new function 
20671         mono_domain_try_type_resolve() which will emit TypeResolve events. 
20672         This function will call AppDomain::DoTypeResolve to do the actual work.
20673
20674         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
20675         moved existing code dealing with dynamic tokens to a new function 
20676         called mono_reflection_lookup_dynamic_token (). This function will 
20677         raise TypeResolve events when appropriate. Since reflection.c is not 
20678         part of libmetadata, a new hook function called 
20679         mono_lookup_dynamic_token() is added to class.c which will call this.
20680
20681         * assembly.h assembly.c: make the invoke_load_hook function public,
20682         so it can be called for dynamic assemblies.
20683
20684         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
20685
20686         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
20687         type isn't found.
20688
20689         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
20690         MonoGHashTable, since it contains pointers to objects which the GC 
20691         needs to track.
20692
20693         * assembly.c (search_loaded): remove unused variable.
20694         
20695 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
20696
20697         * object.c: fixed issue exposed by gcc-generated IL programs
20698         that use RVA data for pointers.
20699
20700 2003-01-25  Martin Baulig  <martin@ximian.com>
20701
20702         * threads.c (start_wrapper): Moved the initialization of
20703         `start_func' above the mono_new_thread_init() call to which we
20704         pass it as argument.
20705
20706 2003-01-24  Martin Baulig  <martin@ximian.com>
20707
20708         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
20709         the MonoThread pointer.
20710
20711 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
20712
20713         * icall.c: Rename `PowImpl' to Pow.
20714
20715 2003-01-23  Dick Porter  <dick@ximian.com>
20716
20717         * threads.c (start_wrapper): Create a Thread object if needed, so
20718         the Main() thread can do the class initialisation in a subthread
20719         that has been set up to allow managed code execution.
20720
20721         Pass the thread ID instead of the MonoThread pointer to the thread
20722         start and attach callbacks.  This change is required, because the
20723         jit thread start callback must be called _before_ the Thread
20724         object can be created.
20725         
20726         (mono_thread_init): Removed much object creation code that is no
20727         longer needed.  No managed code is called from here now.
20728
20729         * object.c (mono_runtime_exec_managed_code): Create a subthread
20730         for Main, and call back to the runtime to use it.
20731         Set the exit code when Main exits.
20732
20733         * gc.c: Make sure domain finalisation happens in a subthread.
20734         Re-enable threaded GC, fixing bug 31333 (again).
20735
20736         * environment.c: System.Environment internall calls (so far just
20737         ExitCode is here, the others are still in icall.c)
20738
20739         * appdomain.c (mono_runtime_cleanup): All threads running managed
20740         code should have finished before mono_runtime_cleanup() is
20741         reached, so no need to clean up threads.
20742
20743 2003-01-22  Martin Baulig  <martin@ximian.com>
20744
20745         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
20746         `gpointer func' arguments.      
20747         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
20748         but added `MonoThread *thread' argument.
20749         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
20750
20751         * threads.c (mono_new_thread_init): Added `gpointer func' argument
20752         and pass it to the mono_thread_start_cb callback.
20753         (mono_install_thread_callbacks): New public function to install a
20754         set of callbacks which are set by the debugger.
20755         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
20756
20757 2003-01-22  Martin Baulig  <martin@ximian.com>
20758
20759         * Makefile.am: Install debug-mono-symfile.h.
20760
20761 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
20762
20763         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
20764
20765 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
20766
20767         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
20768         * class.c (mono_ptr_class_get): correctly set access levels of pointers
20769         (mono_array_class_get): correctly set access levels of arrays
20770
20771 2003-01-20      Patrik Torstensson
20772         * image.h (MonoAssemblyName): changed major, minor, build, revision
20773         from signed to unsigned.
20774
20775 2003-01-20  sean kasun <skasun@azstarnet.com>
20776
20777         * reflection.c (load_cattr_value): Now this handles
20778         MONO_TYPE_SZARRAY.  Fixes bug #35629
20779
20780 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
20781
20782         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
20783         integer value
20784
20785 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20786
20787         * decimal.c: fixed bug #26056.
20788
20789 2003-01-17  Martin Baulig  <martin@ximian.com>
20790
20791         * gc.c: Raise an ExecutionEngineException instead of using g_error().
20792
20793 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20794
20795         * exception.[ch]:
20796         (mono_get_exception_type_initialization): new function.
20797
20798         * object.c: throw a TypeInitializationException when an exception is
20799         thrown invoking the class constructor.
20800
20801 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20802
20803         * reflection.c: fixed attribute reading.
20804
20805 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20806
20807         * icall.c:
20808         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
20809         provided, look for the type in the calling assembly and then in
20810         mscorlib; if the assembly name is provided, only try that one.
20811
20812 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
20813
20814         * object.c: register the vtable before there is a chance it's
20815         queried again recursively.
20816
20817 2003-01-13  Duncan Mak  <duncan@ximian.com>
20818
20819         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
20820         gc-internal.h. 
20821         
20822 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
20823
20824         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
20825
20826 2003-01-11  Martin Baulig  <martin@ximian.com>
20827
20828         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
20829         this to 20 for the release.
20830
20831 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
20832
20833         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
20834
20835         * loader.c (mono_method_get_marshal_info): bug fix
20836
20837         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
20838         structures with explicit layout
20839
20840 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20841
20842         * profiler.c: made the output more readable (and sorted). 
20843         Added caller information for the allocation profiler.
20844
20845 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
20846
20847         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
20848
20849 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20850
20851         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
20852         to get value types.
20853         
20854 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
20855
20856         * object.c, profiler.h, profiler.c, profiler-private.h:
20857         Added object allocation profiler.
20858
20859 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
20860
20861         * reflection.h, reflection.c: handle global methods.
20862         Compress blob entries.
20863
20864 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
20865
20866         * marshal.c: fix compilation.
20867
20868 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
20869
20870         * loader.c (mono_method_get_marshal_info): impl.
20871
20872         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
20873
20874 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20875
20876         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
20877         for reference types.
20878
20879 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
20880
20881         * loader.c: fixed off by one error in loaded parameter names.
20882
20883 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
20884
20885         * marshal.c (mono_marshal_get_icall_wrapper): like
20886         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
20887         instead of a MonoMethod.
20888
20889 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20890
20891         * decimal.c: fixed bug #36537.
20892
20893 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
20894
20895         * marshal.c: throw a missing method exception if a
20896         P/Invoke method is not found.
20897
20898 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20899
20900         * icall.c: allow a null this for constructors.
20901
20902 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
20903
20904         * icall.c: raise the proper exceptions if the arguments to the
20905         internal Invoke are incorrect.
20906
20907 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
20908
20909         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
20910
20911 2003-01-03  Martin Baulig  <martin@ximian.com>
20912
20913         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
20914
20915 2002-12-31  Martin Baulig  <martin@ximian.com>
20916
20917         * debug-mono-symfile.c: Completely rewrote the type section.
20918         Instead of using individual malloc()ed fields, we use one big
20919         continuous memory area and offsets into this area.
20920         See the comments in the source code for details.
20921
20922 2002-12-30  Martin Baulig  <martin@ximian.com>
20923
20924         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
20925
20926 2002-12-30  Martin Baulig  <martin@ximian.com>
20927
20928         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
20929         line number table in this data blob instead of using an external
20930         pointer.
20931
20932 2002-12-28  Martin Baulig  <martin@ximian.com>
20933
20934         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
20935
20936 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
20937
20938         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
20939         as a boxed return type.
20940
20941 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
20942
20943         * appdomain.c
20944         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
20945         g_build_filename to properly get separators on the filename created.
20946
20947         * object.h: Small change, introduce MonoMarshalByRefObject to
20948         track the layout of that structure in the C# universe as we make
20949         changes there.
20950
20951 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
20952
20953         * object.c: removed assert to allow static fields on interfaces.
20954         * loader.c: a TypeSpec may be used for any type, not just arrays.
20955
20956 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
20957
20958         * class.c, class.h: added mono_class_array_element_size ().
20959         Ignore static methods in interfaces.
20960
20961 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20962
20963         * threads.c: fixed the build under cygwin.
20964
20965 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
20966
20967         * reflection.c: handle nullref constants. Allocate keys for
20968         reflection handles with the GC.
20969
20970 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
20971
20972         * threads.c, threads.h: added mono_thread_get_abort_signal()
20973         to get a suitable signal for thread abort.
20974
20975 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
20976
20977         * metadata.c: fix handling of ExportedType table.
20978
20979 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20980
20981         * icall.c: added WriteWindowsDebugString internal call.
20982
20983 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20984
20985         * reflection.h: added fields to match C# implementation.
20986
20987 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20988
20989         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
20990
20991 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
20992
20993         * gc.h, gc-internal.h: Rename header for GC internal calls to
20994         gc-internal.h from gc.h as to not clash with Boehm GC having its
20995         header installed as <gc.h> in outside include paths.
20996         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
20997         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
20998
20999 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21000
21001         * icall.c: assign minor, build and revision in FillName.
21002
21003 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
21004
21005         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
21006         Added support for running code generated by Reflection.Emit.
21007
21008 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21009
21010         * appdomain.c: check for NULL argument in LoadFrom.
21011
21012 2002-12-10  Dick Porter  <dick@ximian.com>
21013
21014         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
21015
21016 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21017
21018         * appdomain.c: fix buglet when building exe file name.  Handle full
21019         assembly name (needed after latest changes to AssemblyName).
21020         * image.c:
21021         (mono_image_close): free some hashtables.
21022
21023 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
21024
21025         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
21026         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
21027         on some systems (redhat 7.3) 
21028
21029 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
21030
21031         * threads.c: delete the critical section of a sync block,
21032         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
21033
21034 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
21035
21036         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
21037
21038 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21039
21040         * appdomain.[ch]: handle the assembly preload event to try loading the
21041         assemblies using the paths we have in the current domain.
21042
21043         * assembly.[ch]: created an assembly preload hook that is called to try
21044         loading the assembly by other means that the ones provided here.
21045
21046         * domain.c: initialize the domain search path.
21047
21048         From now on, assemblies (TODO: except corlib and System) are loaded
21049         according to these rules when using mono_assembly_load ():
21050
21051                 1. It tries to load the assembly from the ApplicationBase
21052                 of the current domain appending .dll and .exe (TODO: have to
21053                 try loading from name/name.dll and name/name.exe).
21054
21055                 2. It tries the search path specified in PrivateBinPath for the
21056                 current domain (if any).
21057
21058                 3. Previous behavior.
21059
21060 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
21061
21062         * icall.c: implemented GetInterfaceMap() related icall.
21063         * domain.c, loader.h: load MethodInfo in mono_defaults.
21064
21065 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
21066
21067         * gc.c: disable the finalizer thread for now, untill all the issues
21068         with it are resolved.
21069
21070 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
21071
21072         * string-icalls.c: handle embedded nulls in string ctor when the
21073         length is specified.
21074
21075 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
21076
21077         * class.c: look for explicit interface implementation in parent
21078         classes, too.
21079
21080 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
21081
21082         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
21083
21084 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
21085
21086         * gc.c: protect handles with a critical section.
21087
21088 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21089
21090         * icall.c:
21091         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
21092         parameters. If no assembly specified, try getting the type from all
21093         the assemblies in the current domain, else, load the assembly and get
21094         the type from it.
21095
21096 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21097
21098         * marshal.c: applied patch from Aleksey Demakov that fixes
21099         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
21100
21101 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21102
21103         * icall.c: fixed get_location.
21104
21105 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
21106
21107         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
21108         declarations to make it work with older gcc. 
21109
21110         * loader.c (mono_get_method): set signature->pinvoke for native calls
21111
21112 2002-11-20  Dick Porter  <dick@ximian.com>
21113
21114         * threads.c (mono_thread_init): Set the main thread's handle
21115
21116 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
21117
21118         * gc.c: allow compilation without GC support. Changed to match the
21119         mono coding style.
21120
21121 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
21122
21123         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
21124
21125 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
21126
21127         * reflection.c: set a public key token on the core assemblies.
21128
21129 2002-11-18  Dick Porter  <dick@ximian.com>
21130
21131         * threads.c: Split out some thread initialisation so that other
21132         files can set the start callback function.
21133
21134         * gc.c: Run finalisers in a separate thread, to avoid stack
21135         overflow.  Fixes bug 31333.
21136
21137         * appdomain.c: Set up GC finalisation thread.
21138
21139         * reflection.c: 
21140         * object.c: 
21141         * domain.c: Use gc.h macros for GC_malloc
21142         
21143 2002-11-15  Dick Porter  <dick@ximian.com>
21144
21145         * threadpool.c: 
21146         * threads.c:
21147         * appdomain.c: Removed mono_runtime_init_with_attach(),
21148         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
21149         merging the extra parameter with the existing function.  Removed
21150         unneeded code in mono_thread_attach().
21151
21152 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
21153
21154         * image.c (mono_image_loaded_by_guid): a method to get loaded
21155         images by guid. 
21156         (load_metadata_ptrs): we store the guid as string.
21157
21158 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
21159
21160         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
21161
21162         * metadata.c (mono_guid_to_string): imported method form Zoltan
21163         Varga (slightly modified)
21164
21165         * assembly.c (mono_assembly_open): load precompiled code
21166
21167         * loader.h (MonoMethod): we store the method token for use in the
21168         aot compiler. 
21169
21170 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21171
21172         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
21173         the hook function called when an assembly is loaded.
21174         
21175         * domain.c: Modified file.
21176         (mono_domain_assembly_load): removed hash table insertion of assemblies.
21177
21178         Fixes bug #33196.
21179
21180 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
21181
21182         * reflection.c: Map PEFileKind to the value expected by the WinNT
21183         image loader. 
21184
21185 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21186
21187         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
21188         Read until the buffer is filled completely.
21189
21190 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21191
21192         * icall.c: implemented MonoType.InternalGetEvent ().
21193
21194 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21195
21196         * appdomain.c: implemented InitAppDomainSetup. Delayed
21197         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
21198         the entry_assembly.
21199
21200         * assembly.c: base_dir is now an absolute path ending with
21201         G_DIR_SEPARATOR.
21202
21203         * icall.c: modified get_location according to the above changes.
21204
21205         * object.c: init AppDomain.SetupInformation for the default domain after
21206         we have the entry assembly.
21207
21208         * domain.c: when unloading a domain, setup = NULL.
21209
21210 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
21211
21212         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
21213
21214 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
21215
21216         * object.h, object.c: introduced mono_object_get_virtual_method ()
21217         to lookup the method invoked on an object when a callvirt is done on
21218         a method.
21219         * icall.c: make MethodInfo::Invoke() always do a virtual call.
21220
21221 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21222
21223         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
21224         current domain when loaded an assembly and failed to load it.
21225
21226         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
21227
21228 2002-10-31  Dick Porter  <dick@ximian.com>
21229
21230         * icall.c: 
21231         * file-io.h: 
21232         * file-io.c: Return the error status in a parameter, as the
21233         GetLastError() value has long since been blown away if we try and
21234         look it up in a subsequent internal call invocation.  Delete the
21235         GetLastError() internal call, because it's useless.
21236
21237 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
21238
21239         * class.[ch]: added cast_class to fix bug 29517
21240
21241 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
21242
21243         * marshal.c: create valid IL code in the filter clause:
21244         the new JIT is less forgiving:-)
21245
21246 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21247
21248         * icall.c: removed get_property internal call.
21249
21250 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
21251
21252         * appdomain.h domain.c: Added an ID to appdomains.
21253         
21254         * threads.c threads.h icall.c: Implement icall
21255         Thread:GetDomainID(), and remove unused icall 
21256         CurrentThreadDomain_internal.
21257
21258 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21259
21260         * icall.c: Don't recurse through the base types in GetConstructor.
21261         Fixes bug #32063. 
21262
21263 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
21264
21265         * mempool.h, mempool.c: added mono_mempool_empty() and
21266         mono_mempool_stats().
21267
21268 2002-10-23  Dick Porter  <dick@ximian.com>
21269
21270         * file-io.c: 
21271         * file-io.h: 
21272         * icall.c: Added MonoIO.GetFileType internal call
21273
21274 2002-10-17  Dick Porter  <dick@ximian.com>
21275
21276         * appdomain.c (mono_runtime_cleanup): Don't signal the async
21277         delegate semaphore before waiting for all threads to finish,
21278         because new threads can also call async delegates.  Fixes bug
21279         32004.
21280
21281         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
21282         of 3 seconds, in case another async job is queued.  (This part is
21283         needed because the bug fix reintroduced the 3s exit lag.)  This
21284         makes the mono_runtime_shutdown flag superfluous.
21285
21286 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
21287
21288         * reflection.c: include ehader size in method section headers.
21289         Really check for suplicated modules entries.
21290
21291 2002-10-17  Martin Baulig  <martin@gnome.org>
21292
21293         * debug-mono-symfile.c: Added back support for locals.
21294
21295 2002-10-14  Martin Baulig  <martin@gnome.org>
21296
21297         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
21298         MONO_TYPE_VOID.
21299
21300 2002-10-14  Martin Baulig  <martin@gnome.org>
21301
21302         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
21303         mono_class_get() instead of looking in the class cache. 
21304
21305 2002-10-13  Martin Baulig  <martin@gnome.org>
21306
21307         * debug-mono-symfile.c: Set version number to 28, include the
21308         signature in method names.
21309
21310 2002-10-13  Martin Baulig  <martin@gnome.org>
21311
21312         * debug-mono-symfile.h: Set version number to 27.
21313
21314 2002-10-11  Martin Baulig  <martin@gnome.org>
21315
21316         * gc.c: Don't register/unregister NULL pointers as disappearing links.
21317
21318 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
21319
21320         * metadata.c, metadata.h: added helper function to allocate signatures.
21321
21322 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21323
21324         * icall.c: added internal call to get the location of machine.config.
21325
21326 2002-10-08  Martin Baulig  <martin@gnome.org>
21327
21328         * debug-mono-symfile.c: Ignore classes with a pending init for the
21329         moment.
21330
21331 2002-10-03  Dick Porter  <dick@ximian.com>
21332
21333         * threads.c: Freebsd pthread_t is a pointer
21334
21335 2002-10-03  Dick Porter  <dick@ximian.com>
21336
21337         * socket-io.c: Implemented GetHostName_internal
21338
21339 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21340
21341         * mono-config.c:
21342         (mono_config_parse_file): don't leak the text.
21343
21344 2002-10-02  Martin Baulig  <martin@gnome.org>
21345
21346         * debug-mono-symfile.c: Added support for methods.
21347
21348 2002-10-01  Martin Baulig  <martin@gnome.org>
21349
21350         * debug-mono-symfile.c: Don't emit methods and line numbers for
21351         the dynamic symbol file, just write the type table.  We can easily
21352         have an external helper program which creates a symbol file for an
21353         IL file.        
21354
21355 2002-10-01  Dick Porter  <dick@ximian.com>
21356
21357         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
21358         Only add the handle to the cleanup array when we're about to
21359         launch the thread.  Bug 31425 deadlocked when the test was run on
21360         mono under w32.
21361
21362 2002-10-01  Martin Baulig  <martin@gnome.org>
21363
21364         * debug-mono-symfile.c: Added support for properties.
21365
21366 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
21367
21368         * reflection.c: unaligned store fix from Mark Crichton
21369         <crichton@gimp.org>.
21370
21371 2002-09-27  Martin Baulig  <martin@gnome.org>
21372
21373         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
21374         New interncall.
21375
21376 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
21377
21378         * assembly.h, assembly.c: use a sane API to hook into the assembly
21379         loading process instead of a useless special-purpouse hack
21380         (ngen needs a hook, too, for example).
21381
21382 2002-09-27  Dick Porter  <dick@ximian.com>
21383
21384         * threads.c (mono_thread_init): Call GetCurrentProcess() so
21385         io-layer can set up some process handle info.  Not needed on w32,
21386         but doesn't hurt either.
21387
21388         * process.c: Pass the program name in the second parameter to
21389         CreateProcess, so the path is searched.  Include the working
21390         directory. Implemented process name, process enumeration, and some
21391         process detail internal calls.
21392         
21393         * icall.c: Added internal calls for process lookup, and some
21394         process details
21395
21396 2002-09-26  Martin Baulig  <martin@gnome.org>
21397
21398         * assembly.c (mono_install_open_assembly_hook): New global
21399         function to install a function to be invoked each time a new
21400         assembly is loaded.
21401         (mono_assembly_open): Run this callback function if set.
21402
21403         * debug-mono-symfile.c: Put back line numbers for the dynamic
21404         symbol file and also record the .il file as source file.  This
21405         allows us to install the temporary symbol file as `file.dbg' just
21406         like a compiler-generated one.
21407
21408 2002-09-26  Nick Zigarovich <nick@chemlab.org>
21409
21410         * Corrected typo in gc.c (BOHEM vs BOEHM).
21411
21412 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21413
21414         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
21415         GetProperties. Also avoid calling g_slist_length in GetProperties and
21416         GetMethods.
21417
21418 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
21419
21420         * reflection.c: avoid unaligned stores (bug spotted by
21421         Mark Crichton  <crichton@gimp.org>).
21422
21423 2002-09-25  Martin Baulig  <martin@gnome.org>
21424
21425         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
21426         instead of guint64 for addresses and added prologue/epilogue info.
21427
21428 2002-09-25  Martin Baulig  <martin@gnome.org>
21429
21430         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
21431         store line number info.  For the dynamic symbol file, we only need
21432         to provide the JIT generated dynamic line number info for the dynamic
21433         symbol file.
21434
21435 2002-09-25  Martin Baulig  <martin@gnome.org>
21436
21437         * debug-mono-symfile.h: Incremented version number.
21438
21439 2002-09-24  Martin Baulig  <martin@gnome.org>
21440
21441         * class.c (mono_debugger_class_init_func): New global function
21442         pointer variable.
21443         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
21444         call it.
21445
21446         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
21447         function.  This is called via the mono_debugger_class_init_func
21448         hook to add all types to the dynamic type table.
21449         (ves_icall_MonoDebugger_GetType): New interncall to get a class
21450         from its metadata token.
21451
21452         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
21453         New interncall for the debugger.
21454
21455 2002-09-24  Nick Drochak <ndrochak@gol.com>
21456
21457         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
21458         before using it in case it is null.
21459         
21460 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
21461
21462         * metadata.c: allow custom modifiers in local var signatures
21463         (bug spotted by Zoltan Varga).
21464
21465 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
21466
21467         * class.c: deal with the <Module> class that may have a NULL vtable.
21468         Eliminate warnings.
21469
21470 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
21471
21472         * image.c, image.h: more strong name helpers.
21473         * monosn.c: more work: convert pem keys to cryptoapi format.
21474
21475 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
21476
21477         * string-icalls.c: speedup IndexOf.
21478
21479 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
21480
21481         * icall.c: updates from Zoltan.2.Varga@nokia.com.
21482
21483 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
21484
21485         * icall.c: cleanup: use mono_object_domain ().
21486
21487 2002-09-23  Martin Baulig  <martin@gnome.org>
21488
21489         * debug-mono-symfile.c: Improved type support.
21490
21491 2002-09-22  Martin Baulig  <martin@gnome.org>
21492
21493         * debug-mono-symfile.c: Added support for reference types and strings.
21494
21495 2002-09-22  Martin Baulig  <martin@gnome.org>
21496
21497         * debug-mono-symfile.c: Started to work on the type table.
21498
21499 2002-09-21  Martin Baulig  <martin@gnome.org>
21500
21501         * debug-mono-symfile.c: Largely reworked the symbol table format.
21502         The symbol table is now incrementally updated each time a new
21503         method is added.  We're now also using our own magic and version
21504         so that you don't need to recompile all your classes if the
21505         dynamic table changes.
21506         (mono_debug_update_mono_symbol_file): Removed.
21507         (mono_debug_symfile_add_method): New function to add a method.
21508
21509 2002-09-21  Martin Baulig  <martin@gnome.org>
21510
21511         * icall.c
21512         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
21513         New interncall.
21514
21515         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
21516         New interncall to get a method from its metadata token.
21517
21518 2002-09-21  Martin Baulig  <martin@gnome.org>
21519
21520         * debug-mono-symfile.c: Create type table.
21521
21522 2002-09-20  Martin Baulig  <martin@gnome.org>
21523
21524         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
21525
21526 2002-09-20  Martin Baulig  <martin@gnome.org>
21527
21528         * debug-mono-symfile.c: Provide information about params and locals.
21529
21530 2002-09-20  Martin Baulig  <martin@gnome.org>
21531
21532         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
21533         New interncall.
21534
21535         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
21536         interncall to get a method from its metadata token.
21537
21538 2002-09-20  Martin Baulig  <martin@gnome.org>
21539
21540         * debug-mono-symfile.c: Added a few checks for method->header
21541         being non-NULL.  This should never happen, but for the moment
21542         let's use a g_warning() rather than a g_assert().
21543
21544 2002-09-19  Mark Crichton  <crichton@gimp.org>
21545
21546         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
21547         even if support for it isn't present.  Added an #ifdef to fix this.
21548
21549         * socket-io.c: Added checks back for Solaris support.
21550
21551 2002-09-19  Martin Baulig  <martin@gnome.org>
21552
21553         * debug-mono-symfile.c (read_string, write_string): Reflect latest
21554         changes in the symbol file format.
21555
21556 2002-09-18  Martin Baulig  <martin@gnome.org>
21557
21558         * debug-mono-symfile.c: Set version number to 21.
21559
21560 2002-09-18  Dick Porter  <dick@ximian.com>
21561
21562         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
21563         on netbsd.  Fixes bug 30051.
21564
21565 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21566
21567         * reflection.c:
21568         (set_version_from_string): little fix.
21569
21570 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
21571
21572         * monosn.c, Makefile.am: added strong name utility.
21573         * reflection.h, reflection.c: implemented delayed signing,
21574         locale, version and hash id assembly attributes.
21575
21576 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
21577
21578         * loader.c, metadata.c: load param attributes in signatures.
21579
21580 2002-09-16  Martin Baulig  <martin@gnome.org>
21581
21582         * debug-mono-symfile.c: Added string table with all method names.
21583
21584 2002-09-14  Martin Baulig  <martin@gnome.org>
21585
21586         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
21587         fast method lookup.
21588
21589 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
21590
21591         * reflection.c: record the public key token of referenced assemblies.
21592
21593 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
21594
21595         * image.c, image.h: added functions to get the strong name and the
21596         public key of an assembly.
21597         * pedump.c: use them.
21598
21599 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
21600
21601         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
21602
21603 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
21604
21605         * marshal.c (mono_marshal_get_managed_wrapper): Added
21606         MONO_TYPE_BOOLEAN 
21607
21608 2002-09-11  Martin Baulig  <martin@gnome.org>
21609
21610         * gc.c: Call GC_unregister_disappearing_link() on all links when
21611         finalizing them, this is necessary to aviod a crash in boehm's
21612         finalize handler.
21613
21614 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
21615
21616         * gc.c: handle GetTarget for finalized objects spotted and fixed by
21617         nick@chemlab.org.
21618
21619 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
21620
21621         * icall.c: implemented MonoType::Module.
21622         * reflection.c, reflection.h: mono_module_get_object () from
21623         Tomi Pakarinen <tomi.pakarinen@welho.com>.
21624
21625 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
21626
21627         * icall.c: ignore overridden methods in GetMethods ().
21628         Fix for FieldInfo::SetValue().
21629         * object.c: handle float/double in runtime invoke.
21630
21631 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
21632
21633         * object.c: allow a constructor to be called again on an object.
21634
21635 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
21636
21637         * class.h, class.c: move field layout code to it's own function and
21638         export it. Get an interface id earlier. Move fields in MonoClass
21639         so they are more cache friendly and align the bitfields.
21640         * loader.c: temporary handle get_param_names() for a runtime method.
21641         * reflection.c, reflection.h: more code to handle runtime creation of
21642         types.
21643
21644 2002-09-09  Martin Baulig  <martin@gnome.org>
21645
21646         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
21647         signature with the pinvoke field being set for the actual call.
21648
21649 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
21650
21651         * icall.c: removed some unused icalls. Start of map of glib charsets
21652         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
21653
21654 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
21655
21656         * debug-helpers.c: break infinite loop (found and fixed by
21657         Holger Arnold <harnold@gmx.de>).
21658
21659 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
21660
21661         * icall.c: target may be null in create_delegate.
21662
21663 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
21664
21665         * marshal.c: handle a boolean return type.
21666
21667 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
21668
21669         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
21670
21671 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
21672
21673         * gc.c: fix weakreferences.
21674
21675 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
21676
21677         * icall.c: added icall to get default codepage.
21678
21679 2002-09-03  Dick Porter  <dick@ximian.com>
21680
21681         * threads.h: 
21682         * threads.c: Use MonoThread instead of MonoObject where
21683         apropriate.
21684
21685         Store running thread objects in a hash table, so that we have all
21686         the info to hand when waiting for them to finish
21687         (means we don't need OpenThread() any more, so mingw builds should
21688         be fully functional again.)
21689
21690         * verify.c:
21691         * object.h: Added thread ID to MonoThread
21692
21693 2002-09-03  Martin Baulig  <martin@gnome.org>
21694
21695         * icall.c (System.Reflection.Assembly::get_location): New interncall.
21696
21697 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21698
21699         * icall.c: fixed leak in get_temp_path. Thanks lupus.
21700
21701 2002-09-03  Martin Baulig  <martin@gnome.org>
21702
21703         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
21704         argument to store the end address of the disassembled instruction.
21705
21706         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
21707         here from debug-symfile.h.
21708         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
21709         JIT into this struct.
21710         (MonoSymbolFile): Added `char *image_file' field.
21711         (MonoDebugGetMethodFunc): Removed.
21712         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
21713         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
21714         (mono_debug_find_method): New method.
21715
21716         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
21717         create a full symbol file.
21718         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
21719         and static symbol files.
21720         (mono_debug_find_method): The symbol file keeps an internal method hash,
21721         call this to get a MonoDebugMethodInfo from a MonoMethod.
21722
21723         * debug-symfile.[ch]: Removed.
21724
21725 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
21726
21727         * image.c (do_mono_image_open): Remove linker version check.
21728
21729 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
21730
21731         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
21732         wrappers for instance methods.
21733         
21734 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21735
21736         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
21737
21738 2002-08-28  Dick Porter  <dick@ximian.com>
21739
21740         * Makefile.am: Export HOST_CC for w32 builds
21741
21742 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
21743
21744         * file-io.c process.c: MonoString are null terminated, no
21745         need for mono_string_to_utf16() anymore.
21746
21747 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
21748
21749         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
21750
21751 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
21752
21753         * icall.c, reflection.h: speedup System.MonoType.
21754
21755 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
21756
21757         * reflection.c: allow null as the value of a string argument in
21758         custom attributes constructors.
21759
21760 2002-08-27  Martin Baulig  <martin@gnome.org>
21761
21762         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
21763         `trampoline_address' field.
21764
21765 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
21766
21767         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
21768         check (fixes bug #29486) 
21769
21770 2002-08-27  Martin Baulig  <martin@gnome.org>
21771
21772         * debug-mono-symfile.c: Changed the file format in a way that allows us
21773         open it read-only and to use a specially malloced area for all the
21774         dynamic data.  We can now also generate a symbol file on-the-fly if we're
21775         debugging IL code and there is no MCS generated symbol file for it.
21776
21777 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
21778
21779         * object.c: added a define for a good string and array
21780         creation speedup (not enabled by default because we need to deal with
21781         the synch stuff).
21782
21783 2002-08-26  Martin Baulig  <martin@gnome.org>
21784
21785         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
21786         function to create a dynamic symbol file.  This is used by the
21787         debugger to create a symbol file for IL code on-the-fly.
21788
21789 2002-08-26  Martin Baulig  <martin@gnome.org>
21790
21791         * loader.c (mono_lookup_pinvoke_call): Include the error message
21792         from g_module_error() in the error message.
21793
21794 2002-08-24  Martin Baulig  <martin@gnome.org>
21795
21796         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
21797         function to update the symbol file.  The symbol file is mmap()ed
21798         writable, but private.  This allows us to install the symbol file
21799         together with the assembly.
21800
21801 2002-08-24  Martin Baulig  <martin@gnome.org>
21802
21803         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
21804         but they can read the new symbol file format which mcs is now creating.
21805
21806         * debug-symfile.c (mono_debug_find_source_location): Moved to
21807         debug-mono-symfile.c; this is now operating on the new symbol file.
21808
21809 2002-08-23  Martin Baulig  <martin@gnome.org>
21810
21811         * debug-helpers.c (mono_method_desc_from_method): New function to get
21812         a MonoMethodDesc from a MonoMethod.
21813
21814 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
21815
21816         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
21817         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
21818
21819 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
21820
21821         * string-icalls.[ch]: make helper methods static.
21822
21823 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21824
21825         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
21826         types to it and to SetValueInternal.
21827
21828         * object.c: Moved handle_enum label to its proper place. This was the
21829         f... bug! ;-)
21830
21831         This time i compiled mcs and gtk-sharp and they both work.
21832
21833 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21834
21835         * icall.c: reverted partially my previous patch until 
21836         object.c:set_value handles enums correcly.
21837
21838 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21839
21840         * icall.c:
21841         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
21842         (ves_icall_System_Environment_get_MachineName): removed warning when
21843         compiling under cygwin.
21844
21845 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
21846
21847         * object.c: fixed field_get_value() for reference types.
21848
21849 2002-08-22  Dick Porter  <dick@ximian.com>
21850
21851         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
21852         Don't free a buffer while it's still needed.  Patch from Jonathan
21853         Liger <Jonathan.liger@wanadoo.fr>
21854
21855 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
21856
21857         * icall.c (ves_icall_System_Environment_get_Platform): Add new
21858         internal call.
21859
21860 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
21861
21862         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
21863         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
21864
21865         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
21866         we call unmanaged code which throws exceptions.
21867
21868 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
21869
21870         * appdomain.h: added per-domain entry_assembly.
21871         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
21872         arguments.
21873         * icall.c: Assembly::GetEntryAssembly icall.
21874         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
21875         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
21876
21877 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
21878
21879         * appdomain.h, gc.c: added mono_domain_finalize ().
21880
21881 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21882
21883         * object.c:
21884         (mono_print_unhandled_exception): changed g_warning by g_printerr
21885         because g_log has a 1024 characters limit (yeah, i got a big stack
21886         trace). Don't print exception name, that should be in ToString 
21887         returned string.
21888
21889 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21890
21891         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
21892         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
21893
21894 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21895
21896         * object.c:
21897         (mono_print_unhandled_exception): after previous commit, i realized
21898         that MS calls ToString on the exception. I changed this function to
21899         do that. This way we get stack_trace for free.
21900
21901 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21902
21903         * object.c:
21904         (mono_print_unhandled_exception): invoke Message property instead of
21905         getting 'message' field from Exception. Don't allocate memory for
21906         'trace' and 'message' if not needed.
21907
21908 2002-08-18  Dick Porter  <dick@ximian.com>
21909
21910         * unicode.c: Fix asserts to match Encoder.cs checks
21911
21912 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
21913
21914         * marshal.c: fix unaligned store issue and a few wrong
21915         opcode argument types.
21916
21917 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21918
21919         * icall.c: added GetUninitializedObjectInternal internal call.
21920
21921 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
21922
21923         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
21924         to the right domain.
21925
21926 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
21927
21928         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
21929
21930         * class.c (class_compute_field_layout): set blittable to false for Strings
21931
21932         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
21933
21934 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
21935
21936         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
21937         first chunk of code to create types at runtime. Code to
21938         handle ReflectedType/DeclaringType. Make reflection handles
21939         domain specific.
21940
21941 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
21942
21943         * class.c: set correct name in arrays.
21944
21945 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
21946
21947         * appdomain.c (mono_domain_transfer_object): make it work with
21948         valuetypes. bug fixes.
21949
21950 2002-08-12  Dick Porter  <dick@ximian.com>
21951
21952         * object.h: Rename some parameters to avoid c++ keywords (Patch
21953         from Joseph Wenninger <kde@jowenn.at>)
21954
21955 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
21956
21957         * icall.c: added icall to implement Assembly.GetFile*.
21958
21959 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
21960
21961         * reflection.h, reflection.c: code to embed managed resources.
21962
21963 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
21964
21965         * class.c: move all the type size stuff into
21966         class_compute_field_layout().
21967
21968 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
21969
21970         * class.c: ensure enums have always the correct instance size.
21971         * unicode.c: remove wrong assert.
21972
21973 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
21974
21975         * assembly.c: fix mem corruption issue.
21976         * image.h, image.c: added mono_image_get_resource () to access
21977         managed resources.
21978         * icall.c: implemented Assembly.EntryPoint property and some
21979         Managed Resources related internalcalls.
21980
21981
21982 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
21983
21984         * image.c, image.h: impemented mono_image_get_entry_point ().
21985         * appdomain.c: use mono_image_get_entry_point.
21986
21987 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
21988
21989         * reflection.c: support the object type argument when loading
21990         custom attributes.
21991
21992 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
21993
21994         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
21995         String as return type.
21996
21997 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
21998
21999         * reflection.c: fix encoding of named args for custom attrs to match
22000         the ms implementation. Read them back when instantiating custom
22001         attributes.
22002
22003 2002-08-02  Radek Doulik  <rodo@ximian.com>
22004
22005         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
22006         by Dietmar as quick fix
22007         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
22008         16 as stack size, used on more places as quick fix before Dietmar
22009         will fix it properly
22010
22011 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
22012
22013         * object.h, object.c: added accessors for fields and properties.
22014
22015 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
22016
22017         * class.c, class.h: made mono_class_get_field_from_name ()
22018         loop on parent types.
22019         Added mono_class_get_property_from_name ().
22020
22021 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
22022
22023         * class.c, class.h: move the code to setup the type vtable in its own
22024         function so that it can be reused also for types created at runtime.
22025         Eliminate the "class" identifier from the header file.
22026         * reflection.c: setup the vtable for enums so that we can create
22027         objects for use in SetConstant ().
22028
22029 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
22030
22031         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
22032         instead of the delegate itself as this pointer (bug #28383)
22033
22034 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
22035
22036         * marshal.c (mono_marshal_get_managed_wrapper): added return type
22037         conversions.
22038
22039 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22040
22041         * loader.c: don't set the pinvoke bit on icalls.
22042
22043 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
22044
22045         * debug-helpers.c (mono_method_full_name): only print a number to
22046         indicate wrapper type (so that the output is more readable in traces).
22047
22048 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
22049
22050         * class.c (mono_class_init): include method override patch from Paolo
22051
22052 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
22053
22054         * icall.c: fixed GetTypeCode().
22055
22056 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
22057
22058         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
22059         use real delegate invoke function to make it work with multicast
22060         delegates (fix bug# 28291).
22061
22062 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
22063
22064         * object.c: load constant strings.
22065
22066 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
22067
22068         * reflection.c: no magic numbers.
22069         * tabledefs.h: security action enum.
22070
22071 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22072
22073         * assembly.c: fix possible memory corruption.
22074
22075 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22076
22077         * reflection.h, reflection.c: added support for linking resources.
22078         * verify.c: check we have an updated corlib.
22079
22080 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
22081
22082         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
22083         string arrays.
22084         (mono_marshal_string_array): null terminate unmanaged string arrays.
22085         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
22086
22087 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22088
22089         * icall.c: Type.GetType () can now return also types from the
22090         calling assembly.
22091
22092 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22093
22094         * loader.h, loader.c: stack walking support.
22095         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
22096         GetCallingAssembly.
22097
22098 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
22099
22100         * marshal.c: added optimisations for blittable types 
22101
22102         * class.c (mono_array_class_get): do not set blittable attribute on arrays
22103         (mono_class_setup_mono_type): set blittable attribute for single
22104         and double.
22105
22106         * marshal.c (mono_string_utf8_to_builder): impl.
22107         (mono_string_builder_to_utf8): impl.
22108         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
22109
22110 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
22111
22112         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
22113         (mono_marshal_get_managed_wrapper): impl. byref types
22114
22115 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22116
22117         * icall.c:
22118         (search_method): don't display debug message. 
22119
22120 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22121
22122         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
22123
22124 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
22125
22126         * appdomain.c: set the missing filename when throwing exception.
22127
22128 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
22129
22130         * metadata.c (mono_type_size): code cleanup
22131         (mono_type_stack_size): removed some test code
22132
22133 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
22134
22135         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
22136         mono_get_exception_file_not_found now.
22137
22138         * exception.c (mono_exception_from_name_two_strings): New version
22139         that will call a constructor with two string arguments. 
22140         (mono_get_exception_file_not_found): New helper routine, used to
22141         report file-not-found errors.
22142
22143 2002-07-20  Dick Porter  <dick@ximian.com>
22144
22145         * process.h:
22146         * process.c: Pass file handles to CreateProcess
22147         
22148         * icall.c:
22149         * file-io.h:
22150         * file-io.c: Implemented CreatePipe
22151
22152 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22153
22154         * metadata.c (mono_get_param_info): set alignment for value types
22155
22156 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22157
22158         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
22159         Constify mono_domain_assembly_open().
22160         * loader.c: handle null namespace in icalls.
22161
22162 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
22163
22164         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
22165         (emit_str_to_ptr_conv): marshal object as structs
22166
22167         * metadata.c (mono_type_to_unmanaged): marshal object as structs
22168
22169         * marshal.c (mono_marshal_get_runtime_invoke): support value types
22170
22171 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
22172
22173         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
22174         (mono_marshal_get_native_wrapper): we an now return value types
22175
22176 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22177
22178         * verify.c: more checks implemented.
22179
22180 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
22181
22182         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
22183         (fix bug #27695)
22184         (mono_marshal_get_native_wrapper): allow byref arguments
22185         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
22186         impl. PtrToStringXXX methods
22187         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
22188         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
22189         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
22190         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
22191         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
22192
22193 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22194
22195         * reflection.c: fix buglet in parsing an assembly name.
22196
22197 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22198
22199         * marshal.c (emit_ptr_to_str_conv): first impl.
22200
22201 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
22202
22203         * object.c, class.h: cache the vtable in the class as suggested by
22204         vargaz@freemail.hu (Zoltan Varga).
22205
22206 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22207
22208         * class.h, loader.c: added mono_field_from_token().
22209         * verify.c: first cut of type checking code.
22210
22211 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
22212
22213         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
22214
22215 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
22216
22217         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
22218         (fix bug #27782)
22219         (mono_marshal_get_remoting_invoke): impl.
22220         (mono_delegate_begin_invoke): impl.
22221         (mono_mb_emit_save_args): impl.
22222         (mono_delegate_end_invoke): impl.
22223         (mono_marshal_get_delegate_begin_invoke):
22224         (mono_marshal_get_delegate_end_invoke):
22225         (mono_marshal_get_delegate_invoke): generate a special name for
22226         those methods (including the signature) and associate them whith
22227         the delegate class. 
22228
22229 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
22230
22231         * reflection.[ch]: 
22232         (mono_reflection_type_from_name): now it has a MonoImage parameter
22233         which is used as the default image to search the type in. If the image
22234         is NULL or getting the type from it fails, it defaults to corlib.
22235
22236         * icall.c: changed 1 call to mono_reflection_type_from_name to match
22237         new parameter.
22238
22239 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22240
22241         * reflection.c: update the parameter table index.
22242
22243 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22244
22245         * domain.c: don't include the mark byte in the string hash.
22246
22247 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22248
22249         * icall.cs: icall for Type.GetTypeCode ().
22250         * verify: a couple of fixes and disabled local initialization checks.
22251
22252 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
22253
22254         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
22255
22256         * debug-helpers.c (mono_method_full_name): print the type of the
22257         runtime wrapper
22258
22259         * metadata.c (mono_signature_hash): a hash function for signatures
22260         (mono_signature_hash): better hash algorithm
22261
22262         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
22263
22264         * debug-helpers.c (mono_method_full_name): this can now generate
22265         method names with signatures
22266
22267         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
22268         method dont have this pointers.
22269
22270 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
22271
22272         * reflection.c: fixup typebuilder tokens.
22273         * image.c: fix buglet.
22274         * marshal.h: remove whitespace.
22275         * metadata.h, metadata.c: reinstate code that was removed.
22276         * verify.c: handle catch directives and fix another couple of bugs.
22277
22278 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
22279
22280         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
22281         (mono_marshal_get_native_wrapper): make it comp. with the old code
22282         (mono_marshal_get_native_wrapper): support boolean
22283         (mono_marshal_get_managed_wrapper): support more types
22284
22285 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
22286
22287         * class.c (class_compute_field_layout): compute class->blittable attribute.
22288
22289 2002-07-09  Dick Porter  <dick@ximian.com>
22290
22291         * threads.c: Make the thread cleaning up cope with threads that
22292         call ExitThread()
22293
22294 2002-07-08  Radek Doulik  <rodo@ximian.com>
22295
22296         * reflection.c (method_encode_code): use non-translated values to
22297         compute finally_start, this fixes exception handling on ppc, yay!
22298
22299         * decimal.h (struct signscale): fix endianess
22300
22301 2002-07-07  Radek Doulik  <rodo@ximian.com>
22302
22303         * reflection.c: swap box_val and not val
22304
22305 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
22306
22307         * reflection.c, reflection.h: handle full assembly info in type name.
22308         Handle Type arguments when loading custom attributes.
22309         * icall.c: updated to use new mono_reflection_type_from_name () method.
22310
22311 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22312
22313         * loader.c:
22314         (method_from_memberref): also print assembly name when method not found.
22315
22316 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22317
22318         * icall.c:
22319         (ves_icall_TypeGetProperties): fixed bug #27473. 
22320
22321 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22322
22323         * reflection.c: display image name and token when cannot find the
22324         .ctor for an attribute.
22325
22326 2002-07-05  Martin Baulig  <martin@gnome.org>
22327
22328         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
22329
22330 2002-07-04  Dick Porter  <dick@ximian.com>
22331
22332         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
22333         compile on mingw.  This will cause mingw builds to not wait for
22334         subthreads to terminate after the main thread does.  I've lodged a
22335         bug with the mingw developers for them to wrap OpenThread().
22336
22337 2002-07-03  Dick Porter  <dick@ximian.com>
22338
22339         * threads.c: Store thread IDs instead of handles, because
22340         GetCurrentThread() returns a pseudohandle and therefore stores
22341         useless values.  mono_thread_cleanup() continues checking the
22342         array of threads until it is empty, to cope with subthreads
22343         spawning new threads after the main thread has finished.
22344
22345         * profiler.h:
22346         * profiler.c:
22347         * profiler-private.h: Pass the thread ID to thread profiler
22348         functions, instead of a handle
22349
22350 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22351
22352         * verify.c: fixes to make it more usable.
22353         * pedump.c: added --verify code to verify IL code in an assembly.
22354
22355 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22356
22357         * reflection.c: turn errors into warnings to allow compiling corlib.
22358
22359 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
22360
22361         * reflection.c: add special cases to compile corlib.
22362
22363 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22364
22365         * reflection.c: handle properties with only a set method.
22366
22367 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22368
22369         * opcodes.h: add enum with opcodes in opval order.
22370
22371 2002-07-01  Dick Porter  <dick@ximian.com>
22372         
22373         * object.h:
22374         * object.c (mono_runtime_run_main): Removed unneeded argument
22375
22376 2002-06-28  Martin Baulig  <martin@gnome.org>
22377
22378         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
22379
22380 2002-06-27  Dick Porter  <dick@ximian.com>
22381
22382         * threads.c: Store the handle in both the parent thread and in the
22383         subthread, to minimise the time between starting a new thread and
22384         storing its ID.
22385
22386 2002-06-26  Dick Porter  <dick@ximian.com>
22387
22388         * appdomain.c (mono_runtime_cleanup): Close the socket library
22389         after all the threads have finished, not before
22390
22391 2002-06-26  Martin Baulig  <martin@gnome.org>
22392
22393         * debug-symfile.c (mono_debug_find_source_location): Added
22394         `guint32 *line_number' argument.  If it's not NULL, store the line number
22395         there and return the file name without the line number.
22396
22397 2002-06-25  Dick Porter  <dick@ximian.com>
22398
22399         * icall.c:
22400         * process.h:
22401         * process.c: Process forking and other support functions
22402
22403 2002-06-25  Dick Porter  <dick@ximian.com>
22404
22405         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
22406         things dont happen when the image is closed.
22407         (mono_image_lookup_resource): Walk the resource section looking
22408         for a particular entry
22409
22410         * cil-coff.h: PE resource section decoding
22411
22412 2002-06-25  Dick Porter  <dick@ximian.com>
22413         
22414         * assembly.h:
22415         * assembly.c: 
22416         (mono_assembly_foreach): Accessor functions to walk the list of
22417         loaded assemblies
22418         (mono_assembly_set_main):
22419         (mono_assembly_get_main): Process methods need to know which
22420         assembly is the "main" one
22421
22422         * object.c (mono_runtime_run_main): Record the main assembly
22423
22424         * debug-helpers.c: Fix typo
22425
22426 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
22427
22428         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
22429         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
22430
22431 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
22432
22433         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
22434
22435 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
22436
22437         * image.c (do_mono_image_open): Initialize reference count,
22438         otherwise we leak the MonoImage.
22439
22440 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
22441
22442         * reflection.c: small tweak to handle self-hosting.
22443
22444 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
22445
22446         * reflection.c: fix type name parse code.
22447
22448 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
22449
22450         * reflection.c: break out of the loop.
22451         * image.c: special case corlib.
22452
22453 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22454
22455         * reflection.c: add all the custom attrs at the end to ensure the
22456         ctors have been properly initialized when the attributes are defined
22457         in the current assembly.
22458
22459 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22460
22461         * reflection.c: handle correctly multiple-nested types.
22462
22463 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
22464
22465         * row-indexes.h: fix typos.
22466         * reflection.c: adjust for typos and fix method_def_or_ref
22467         encoding in MethodImpl table.
22468
22469 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
22470
22471         * reflection.c: fix entry point patching (thanks Serge!).
22472
22473 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
22474
22475         * verify.c: add check for System.Exception
22476
22477 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
22478
22479         * image.c, class.c: minifix for code just c&p'ed.
22480         * reflection.c: warning fix.
22481         * object.h, loader.h, domain.c: load also StringBuilder.
22482
22483 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
22484
22485         * marshal.h, marshal.c: some support code to handle complex marshaling.
22486
22487 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22488
22489         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
22490         Better signatures with vtable error dump.
22491
22492 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
22493
22494         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
22495
22496 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
22497
22498         * icall.c (ves_icall_Type_GetField): impl.
22499
22500 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22501
22502         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
22503         to retrieve a marshal description blob for a field or param.
22504
22505 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
22506
22507         * reflection.h, reflection.c: change order of nested type emission
22508         to avoid table corruption. The NestedTypes table is sorted.
22509         * icall.c: change order of GetConstructor results to workaround mcs bug.
22510
22511 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
22512
22513         * reflection.h, reflection.c: handle field and param marshal
22514         information.
22515
22516 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22517
22518         * icall.c, marshal.c marshal.h: more Marshal class implementation.
22519
22520 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22521
22522         * reflection.c: fix call convention.
22523
22524 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22525
22526         * reflection.h, reflection.c: mono_image_get_memberref_token()
22527         takes a type instead of a class, now. Added
22528         mono_image_get_array_token() to create tokens for the special
22529         multi-dim array methods.
22530
22531 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
22532
22533         * assembly.c: handle modules (no assembly table). Split
22534         loading references in its own function.
22535         * class.c: handle moduleref resolution scope.
22536         * image.c, image.h: cache module name in image.
22537
22538 2002-06-07  Martin Baulig  <martin@gnome.org>
22539
22540         * reflection.c (mono_image_get_type_info): Only add a class layout entry
22541         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
22542
22543 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
22544
22545         * icall.c: more signature fixes that used uint instead of int.
22546
22547 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22548
22549         * reflection.c: fixed signature of field refs.
22550
22551 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
22552
22553         * class.c, reflection.c: handle typerefs of nested types
22554         (both on read and when writing files).
22555
22556 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
22557
22558         * icall.c: fix method signatures that tried to workaround the previous
22559         typo, d'oh!
22560
22561 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
22562
22563         * debug-helpers.c: fix typo.
22564
22565 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
22566
22567         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
22568         rewrote the PE/COFF writing code (our programs are understood by the
22569         ms runtime, now).
22570
22571 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
22572
22573         * gc.c, gc.h, icall.c: weakreference support.
22574
22575 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
22576
22577         * Makefile.am, mono-config.c: use $(sysconfdir).
22578
22579 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
22580
22581         * icall.c: changed default precision of Double.ToString() to 15.
22582         Fixed memory leak. Unified with Single.ToString.
22583
22584 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
22585
22586         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
22587
22588 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
22589
22590         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
22591         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
22592         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
22593         and myself.
22594
22595 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22596
22597         * debug-symfile.c, sysmath.c: yet more compilation fixes.
22598
22599 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
22600
22601         * reflection.c, socket-io.c: more compilation fixes.
22602
22603 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
22604
22605         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
22606         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
22607         unicode.c: warning and compiler compatibility fixes.
22608
22609 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
22610
22611         * class.h, metadata.c: fixed warnings/compilation errors.
22612
22613 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
22614
22615         * Makefile.am, mono-config.c, mono-config.h: configuration file
22616         support routines.
22617         * loader.c, loader.h: make Dll mapping configurable at runtime in the
22618         config file. Export methods to insert and lookup mappings.
22619
22620 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
22621
22622         * reflection.c: handle types and boxed objects in custom attr
22623         constructors.
22624
22625 2002-05-30  Martin Baulig  <martin@gnome.org>
22626
22627         * debug-symfile.c
22628         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
22629
22630 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
22631
22632         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
22633         to lookup the implmap row for a P/Invoke method.
22634         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
22635         P/Invoke method from the runtime on an as needed basis.
22636
22637 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
22638
22639         * metadata.c (mono_metadata_parse_signature): impl.
22640
22641 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22642
22643         * class.c: handle .pack directive.
22644
22645 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
22646
22647         * object.c: initialize static fields with RVA data.
22648
22649 2002-05-25  Martin Baulig  <martin@gnome.org>
22650
22651         * debug-symfile.c
22652         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
22653
22654 2002-05-24  Martin Baulig  <martin@gnome.org>
22655
22656         * debug-symfile.c
22657         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
22658         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
22659         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
22660
22661 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
22662
22663         * object.c: special case string ctros in invoke.
22664         * gc.c: silly whitespace changes.
22665
22666 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
22667
22668         * threadpool.[ch]: impl. a threadpool that can
22669         be used by mint and mono.
22670
22671 2002-05-22  Martin Baulig  <martin@gnome.org>
22672
22673         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
22674         The first argument is now a `MonoReflectionModuleBuilder *', the return
22675         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
22676         `methods' field to get the method builder.  The `token' argument is the
22677         unfixed token.
22678
22679         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
22680         invalid characters instead of g_assert_not_reached()ing.  This seems
22681         to be the behaviour of mscorlib.
22682
22683 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
22684
22685         * object.c (mono_runtime_invoke_array): applied patch from Rachel
22686         Hestilow to fix bug #25104
22687
22688 2002-05-21  Martin Baulig  <martin@gnome.org>
22689
22690         * debug-symfile.c (mono_debug_find_source_location): New function.
22691         Looks up an IL offset in the line number table and returns the source
22692         location as a string.
22693
22694 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22695
22696         * icall.c:
22697         (mono_double_ToStringImpl): changed %f by %g until we have something
22698         better.
22699
22700 2002-05-21  Nick Drochak  <ndrochak@gol.com>
22701
22702         * icall.c : Use different name for Math.Pow's icall.  Needed to check
22703         parameters first in C#.
22704
22705 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22706
22707         * icall.c, reflection.h: added icall to get info about an event.
22708
22709 2002-05-20  Radek Doulik  <rodo@ximian.com>
22710
22711         * object.c (mono_value_box): don't use memcpy for boxing on BIG
22712         endian
22713         (mono_value_box): don't use memcpy for small sizes on
22714         architectures with unaligned access
22715
22716 2002-05-20  Martin Baulig  <martin@gnome.org>
22717
22718         * reflection.c (mono_reflection_setup_internal_class): Don't crash
22719         if `tb->parent == NULL'.
22720         (mono_reflection_create_internal_class): New function.  This is
22721         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
22722         for enum types.
22723
22724         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
22725         New interncall.
22726
22727 2002-05-19  Martin Baulig  <martin@gnome.org>
22728
22729         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
22730         argument to get the length, don't default to the array length.
22731
22732 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
22733
22734         * assembly.c (mono_assembly_setrootdir): New function used to
22735         override the MONO_ASSEMBLIES directory.
22736
22737 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
22738
22739         * icall.c: ValueType_GetHashCode() initialize local var.
22740
22741 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
22742
22743         * reflection.c: sort custom attributes table.
22744
22745 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
22746
22747         * reflection.c: support named args in custom attributes (write support).
22748
22749 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
22750
22751         * reflection.c: fix finally position calculation.
22752
22753 2002-05-15  Radek Doulik  <rodo@ximian.com>
22754
22755         * reflection.c: fixed endianess at many places
22756
22757         * icall.c (ves_icall_InitializeArray): comment out debug msg
22758
22759 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
22760
22761         * object.c (mono_unhandled_exception): new function to handle
22762         unhandled exceptions.
22763         (mono_unhandled_exception): call the UnhandledException event.
22764         (mono_runtime_delegate_invoke): impl.
22765
22766 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
22767
22768         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
22769         returns the RVA, not the direct pointer to the data. Handle the case
22770         when the class size is fixed.
22771
22772 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
22773
22774         * reflection.c: fix some endianess issues.
22775
22776 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
22777
22778         * object.c (mono_runtime_invoke): is now able to catch exceptions.
22779
22780         * threads.c (mono_thread_init): added a callback which is invoked
22781         at thread start.
22782
22783 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
22784         
22785         * icall.c: make GetHashCode return non-negative values.
22786
22787 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
22788
22789         * object.c, icall.c, gc.c: revert to address-based hashcode.
22790
22791 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
22792
22793         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
22794
22795 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
22796
22797         * icall.c, class.c: special case <Module>.
22798
22799 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
22800
22801         * icall.c: fix bug in GetNow().
22802
22803 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
22804
22805         * object.c (mono_runtime_class_init): make sure that we call all
22806         static class constructors.
22807
22808 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
22809
22810         * reflection.c: sort methodsemantics table.
22811
22812 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
22813
22814         * reflection.h, reflection.c: honour init locals setting.
22815
22816 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
22817
22818         * icall.c: copied Double ToStringImpl for Single ToStringImpl
22819
22820 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
22821
22822         * reflection.c: support ContructorBuilders in attribute blob creation.
22823
22824 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
22825
22826         * reflection.c: some changes to build a binary that can be run
22827         directly in windows.
22828
22829 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
22830
22831         * loader.c: print a big message when an icall can't be found.
22832
22833 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22834
22835         * string-icalls.c: fix bug 24248.
22836
22837 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
22838
22839         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
22840         icall.c, reflection.h: separate assembly loading by pathname and by
22841         assembly name. Use the MONO_PATH env var to search for assemblies.
22842
22843 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
22844
22845         * assembly.c, image.h: add some support for assemblies
22846         with multiple modules.
22847         * class.c, class.h: export mono_class_from_typeref().
22848         * loader.c: remove duplicated code and use mono_class_from_typeref(),
22849         instead.
22850
22851 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22852
22853         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
22854         documentation says (the ECMA one is correct).
22855
22856 2002-05-02  Dick Porter  <dick@ximian.com>
22857
22858         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
22859         Don't name the synchronisation mutex.
22860
22861 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
22862
22863         * rand.c
22864         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
22865         Make the prototypes match.
22866         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
22867         Same.
22868
22869         * icall.c
22870         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
22871         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
22872         all systems have tm.tm_zone, so use strftime() with %Z to print
22873         the timezone abreviation into a temp string.
22874
22875         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
22876         rather than mono_array_addr() on a MonoString on Big Endian
22877         machines.
22878
22879 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
22880
22881         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
22882         fix bug 24041
22883
22884 2002-04-30  Dick Porter  <dick@ximian.com>
22885
22886         * socket-io.c: Cope with SOCKET being an integer rather than a
22887         pointer now.
22888
22889         * threads.c: Added Thread_free_internal, to deal with thread
22890         handle cleanup.  Moved calls to handle_store() and handle_remove()
22891         to start_wrapper(), so each can only be called once.  Allocate
22892         synchronisation blocks with GC_malloc(), and use GC finalisation
22893         to close the handles.
22894
22895         * icall.c: added System.Threading.Thread::Thread_free_internal
22896
22897 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22898
22899         * icall.c: support Environment.Exit, CommandLineArgs().
22900
22901 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
22902
22903         * object.c, object.h: added mono_runtime_run_main () and
22904         mono_runtime_get_main_args () for use in System.Environment.
22905
22906 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
22907
22908         * gc.c: fix thinko, enable actual finalization since the jit is now
22909         fixed.
22910
22911 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
22912
22913         * gc.c, object.c: take into account that an object may be offset wrt the address
22914         returned by GC_malloc().
22915
22916 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
22917
22918         * image.c: handle files without entries in the assembly table (modules).
22919
22920 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
22921
22922         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
22923         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
22924         allowed to be null when it's System.Object class setup.
22925
22926 2002-04-27  Martin Baulig  <martin@gnome.org>
22927
22928         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
22929         if `tb->parent == NULL' rather than crashing.
22930
22931 2002-04-28  Nick Drochak  <ndrochak@gol.com>
22932
22933         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
22934         calling acos() where asin() should have been called.
22935
22936 2002-04-26  Martin Baulig  <martin@gnome.org>
22937
22938         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
22939         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
22940         there's a subdirectory called `System', but we don't want to read that
22941         subdirectory as an assembly.
22942
22943 2002-04-25  Martin Baulig  <martin@gnome.org>
22944
22945         * debug-symfile.c: Reflect latest MonoString changes.
22946
22947 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
22948
22949         * rand.c, rand.h: instance method icalls need to have an explicit
22950         this pointer as first argument in the C implementation.
22951
22952 2002-04-25  Nick Drochak <ndrochak@gol.com>
22953
22954         * icall.c: Fix typo in map for GetNonZeroBytes
22955
22956 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
22957
22958         * string-icalls.c : String does now passes unit tests without any 
22959         errors, the following changes has been made:
22960         
22961         Implemented replace methods.
22962         Renaming of methods to (try) follow the standard.
22963         Fixed compare ordinal
22964         Made all memory allocated directly to function instead of via icall function.
22965         Small performance fix in is_in_array function
22966                         
22967  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
22968
22969         c (mono_string_Internal_ctor_charp_int_int):
22970         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
22971         sindex < 0, throw ArgumentOutOfRangeException instead of
22972         ArgumentNullException.
22973
22974         Added new check for length == 0, however
22975         I need to make it return String.Empty from the C code.
22976         
22977         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
22978         that calculate the length for us here.
22979         
22980         (mono_string_Internal_ctor_sbytep_int_int): Replaced
22981         mono_string_new_utf16 with mono_string_new, since value is utf8.
22982
22983 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
22984
22985         * object.c: register the object for finalization if needed.
22986         Allocate one more char in the string for the terminating 0 char.
22987
22988 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
22989
22990         * class.c, class.h, image.c: check if a type implemenst a destructor.
22991         Use the proper key for array class lookups.
22992         * icall.c: register the icalls in the System.GC class.
22993         * gc.c, gc.h: GC-related functions and icalls.
22994
22995 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22996
22997         * icall.c:
22998         * socket-io.c:
22999         * unicode.c: free some strings gotten from mono_string_to_utf8 and
23000         changed a couple of free () by g_free ().
23001
23002         * decimal.c: one-liner in the comments for decimal2string ().
23003
23004 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23005
23006         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
23007
23008 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
23009
23010         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
23011         * object.c (mono_runtime_invoke_array) : handle null in params
23012
23013 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23014
23015         * string-icalls.c: fixed bug in split (one off bug)
23016
23017 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23018
23019         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
23020         * icalls.c: added String::Equals as internal method
23021
23022 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
23023
23024         * threads.c: fixed bug in the double interlocked functions
23025
23026 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
23027
23028         * threads.c: implemented all of the new interlocked icalls.
23029         * string-icalls.c: fix a bug in insert.
23030         * icalls.c: added the icalls for interlocked, removed old string functions.
23031         
23032 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23033
23034         * loader.c: fix off-by-one error when reading argument names.
23035
23036 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23037
23038         * profiler.c: win32 counter implementation (untested).
23039         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
23040         (the latter needs testing and more complete impl. from win32 folks).
23041
23042 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
23043
23044         * object.c: mono_array_new_full workaround mono_array_class_get
23045         problem.
23046
23047 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23048
23049         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
23050         * object.h (mono_string_chars): Changed casting type.
23051
23052 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23053
23054         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
23055                            method signatures to use gunichar2 instead of gint16.
23056
23057 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
23058
23059         * object.h, object.c: domain-specific versions of mono_object_new and
23060         mono_array_new.
23061
23062 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
23063
23064         * object.c: changed String layout
23065
23066         * string-icalls.c (mono_string_Internal_ctor_chara): added
23067         internal string constructors.
23068
23069 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
23070
23071         * threads.c: pass 'this' to the thread start routine.
23072
23073 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23074
23075         * string-icalls.c: fix IndexOf and LastIndexOf. Now
23076         InternalCompareStr don't call twice mono_string_cmp_char for the last
23077         character. Improved performance in mono_string_cmp_char.
23078
23079 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
23080
23081         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
23082         code into its own library: libmonoruntime.
23083
23084 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
23085
23086         * object.h, object.c: changed array format so that szarrays do not
23087         require a bounds structure.
23088         * icall.c, appdomain.c: support for new szarray format.
23089
23090 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
23091
23092         * metadata.c: compare also the retuns type when comparing signatures:
23093         we didn't do this as an optimization since really overloaded methods
23094         must differ also in the arguments, but this doesn't work with
23095         low-level IL code (or when using explicit conversion operators: see
23096         bug#23498 for an example).
23097
23098 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
23099
23100         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
23101
23102 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
23103
23104         * icall.c: make MonoType::GetElementType its own icall.
23105
23106 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
23107
23108         * icall.c: remove MonoMethod_get_Name().
23109         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
23110         object.
23111
23112 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23113
23114         * string-icalls.c: optimized a few methods.
23115
23116 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
23117
23118         * icall.c: added all new string internal calls
23119         * string-icalls.c: added, new string internal call implementation.
23120         * object.c: added mono_string_new_size for allocating a string a size
23121
23122 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
23123
23124         * object.c (mono_object_isinst): use the same code as in the
23125         optimized x86 version.
23126
23127 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
23128
23129         * profiler.c: TSC-based timer code (faster and more accurate).
23130         Not hooked up in configure, yet (set USE_X86TSC to 1).
23131
23132 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
23133
23134         * profiler.c, profiler.h: track time spent compiling methods.
23135         * threads.c: track thread creation/destruction.
23136
23137 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
23138
23139         * profiler.c, profiler.h, profiler-private.h: profiling interface
23140         and sample implementation. Moved here so that it can be used also by
23141         the jit.
23142
23143 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
23144
23145         * reflection.c, reflection.h: keep types and other handles separate in
23146         the hash tables for referred tokens. Add guid for modules.
23147
23148 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
23149
23150         * assembly.c: fix bugs found with valgrind.
23151         * metadata.h, metadata.c: added mono_metadata_guid_heap().
23152
23153 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
23154
23155         * threads: added icall support for getting current domain for
23156                    the thread.
23157  
23158 2002-04-13  Martin Baulig  <martin@gnome.org>
23159
23160         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
23161         (MonoDebugVarInfo): Added `index' field for register based addresses.
23162         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
23163         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
23164         `MonoDebugVarInfo *params' and `guint32 this_offset' with
23165         `MonoDebugVarInfo *this_var'.
23166
23167         * debug-symfile.c (relocate_variable): New static function to write
23168         a location description for a local variable or method parameter.
23169
23170 2002-04-12  Martin Baulig  <martin@gnome.org>
23171
23172         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
23173         stack offset and begin/end scope address of a local variable.
23174         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
23175         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
23176         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
23177
23178         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
23179         Added new relocation types for start/end scope of a local variable.
23180
23181 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
23182
23183         * object.h: add mono_object_domain() macro.
23184         * reflection.c: handle typespecs.
23185         * icall.c: MonoMethod::get_Name() implementation.
23186
23187 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23188
23189         * icall.c: String::GetHashCode() icall implementation.
23190
23191 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23192
23193         * icall.c: String::IndexOfAny icall.
23194         * object.c, object.h: make array->max_length more useful.
23195         Intrduced mono_object_class() and mono_string_length() macros.
23196
23197 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23198
23199         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
23200         instead of g_unichar_isdigit.
23201
23202 2002-04-11  Nick Drochak  <ndrochak@gol.com>
23203
23204         * icall.c: Implement a simple Double.ToString().
23205
23206 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
23207
23208         * appdomain.h: only io-layer.h is supposed to be included.
23209         * icall.c: explicitly import environ. Fix warning.
23210
23211 2002-04-10  Nick Drochak  <ndrochak@gol.com>
23212
23213         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
23214                 return true even if it's not Daylight Savings time.
23215                 Only return false for the case where the function isn't
23216                 implemented for a plaform (read Windows).
23217
23218 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
23219
23220         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
23221         data with a mutex.
23222
23223 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
23224
23225         * mempool.c (mono_mempool_alloc): only use g_malloc when
23226         absolutely necessary.
23227
23228 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23229
23230         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
23231
23232         * class.c (mono_class_vtable): use domain mempool to allocate vtable
23233         (mono_class_proxy_vtable): use domain mempool
23234
23235 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
23236
23237         * appdomain.h, appdomain.c: split initialization that requires the
23238         execution engine support into mono_runtime_init().
23239
23240 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
23241
23242         * class.c (mono_class_init): don't include vtable inside MonoClass
23243         to save some memory, gather some statistics.
23244         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
23245
23246 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23247
23248         * icall.c: internalcall implementation for ValueType.Equals().
23249
23250 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
23251
23252         * object.c (mono_message_init): moved 
23253         (mono_runtime_exec_main): new arch. independent impl.
23254         (mono_runtime_invoke_array): new method - like
23255         mono_runtime_invoke, but you can pass an array of objects.
23256         (mono_remoting_invoke): new arch. independent impl.
23257         (mono_message_invoke): new arch. independent impl.
23258         (mono_runtime_class_init): new arch. independent impl.
23259         (mono_runtime_object_init): new arch. independent impl.
23260
23261 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
23262
23263         * metadata.c, object.c, reflection.c: documented the exported
23264         functions.
23265
23266 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
23267
23268         * icall.c: simpler code to pass the assembly builder data to corlib.
23269         Implement GetNestedTypes() internalcall.
23270
23271 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
23272
23273         * class.c: warn if a type can't be loaded.
23274
23275 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
23276
23277         * image.h: typedef MonoImageOpenStatus
23278         * types.h: removed unused file
23279         
23280 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
23281
23282         * icall.c: Enum_ToObject accepts enum value arguments.
23283
23284 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
23285
23286         * class.c: move initialization of properties, events and nested
23287         classes, so that they happen for interfaces, too.
23288
23289 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
23290
23291         * icall.c: cleanup some ugly casts in Array_SetValue*.
23292
23293 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
23294
23295         * icall.c: the values array fro enums is of the correct type, now.
23296         Implement (correctly) getFullName instead of assQualifiedName for
23297         MonoType.
23298         * reflection.h, reflection.c: added mono_type_get_name ().
23299
23300 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
23301
23302         * assembly.c, image.h: for each MonoImage, record from wich assembly
23303         it was loaded.
23304         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
23305         Make Type.Assembly work.
23306
23307 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
23308
23309         * debug-symfile.h: use char* instead of gpointer to avoid
23310         unnecessary casts.
23311
23312         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
23313
23314         * icall.c (ves_icall_InternalExecute): impl. FielSetter
23315         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
23316
23317 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
23318
23319         * icall.c (mono_message_init): impl. (code cleanup)
23320         (ves_icall_InternalExecute): impl. FieldGetter
23321
23322         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
23323         defined we call all (non-static)methods through the vtable. 
23324
23325 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
23326
23327         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
23328         finalizer even though the memory is still referenced (and the chunk of
23329         memory is not freed).
23330
23331 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
23332
23333         * assembly.c: fix brokeness.
23334
23335 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
23336
23337         * class.c: kill some warnings. Check explicit interface method
23338         implementation also without considering the namespace.
23339         Load also literal strings in static class data.
23340
23341 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
23342
23343         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
23344         (default_assembly_name_resolver): Make the resolver take the
23345         "base" directory where the assembly was originally defined, so we
23346         can load DLLs that are in the same directory as the assembly that
23347         is being referenced.
23348
23349 2002-03-28  Dick Porter  <dick@ximian.com>
23350
23351         * file-io.h: 
23352         * file-io.c:
23353         * socket-io.c: 
23354         * unicode.h: 
23355         * unicode.c: Warning cleanups
23356
23357 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
23358
23359         * object.h, reflection.h: use the correct type instead of MonoObject.
23360
23361 2002-03-28  Martin Baulig  <martin@gnome.org>
23362
23363         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
23364         (mono_debug_update_symbol_file): Initialize classes if necessary.
23365
23366 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
23367
23368         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
23369         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
23370
23371 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
23372
23373         * assembly.h: fix function prototype.
23374         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
23375         * mono-endian.h: use const cast.
23376
23377 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
23378
23379         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
23380
23381 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
23382
23383         * loader.c: don't assert when a typeref can't be loaded, give
23384         a chance to the runtime to trow an exception instead.
23385         * loader.h: fix warning.
23386
23387 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
23388
23389         * class.c (mono_class_proxy_vtable): added proxy support
23390
23391 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
23392
23393         * icall.c: removed last of PAL calls, added System.Environment
23394         * file-io.h, file-io.c: MonoIO implementation
23395         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
23396
23397 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
23398
23399         * appdomain.c: do not use the byte marker in ldstr table lookup.
23400         * debug-helpers.c: allow two ':' to separate class and method name.
23401         * object.c: allocate arrays bounds with the GC, too.
23402         * verify: add a few more checks.
23403
23404 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
23405
23406         * reflection.c: output also literal strings. Allocate parameter data
23407         with GC_malloc() (thanks, Martin, for catching this!).
23408
23409 2002-03-26  Martin Baulig  <martin@gnome.org>
23410
23411         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
23412         include the `this' offset in the `param_offsets'.
23413
23414 2002-03-25  Martin Baulig  <martin@gnome.org>
23415
23416         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
23417         mono_debug_get_class() function to get the classes. Added new
23418         relocation types for arrays and strings.
23419         (mono_debug_get_class): New static function to search in all
23420         referenced assemblies for a metadata token.
23421
23422         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
23423
23424 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23425
23426         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
23427         hold gc-allocated objects. Make the string heap a stream like the
23428         others. Removed duplicated code when writing stream info.
23429         Added asserts to catch possible buffer overflows. Set the sorted map
23430         for tables that need sorting. Added some documentation.
23431
23432 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
23433
23434         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
23435         for interned strings and vtables.
23436
23437 2002-03-24  Martin Baulig  <martin@gnome.org>
23438
23439         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
23440         it in the array since it was created with g_slist_prepend().
23441
23442 2002-03-24  Martin Baulig  <martin@gnome.org>
23443
23444         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
23445         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
23446         (mono_debug_method_from_token): Renamed to
23447         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
23448         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
23449
23450         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
23451         relocation types.
23452
23453         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
23454
23455 2002-03-24  Martin Baulig  <martin@gnome.org>
23456
23457         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
23458         (mono_debug_method_from_token): New func.
23459
23460         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
23461         New interncall, calls mono_debug_local_type_from_signature().
23462         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
23463         calls mono_debug_method_from_token().
23464
23465 2002-03-23  Martin Baulig  <martin@gnome.org>
23466
23467         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
23468         specifies the number of bytes to be converted, not the array size.
23469         Return the number of chars, not the number of bytes.
23470         (ves_icall_iconv_get_chars): The `byteCount' argument
23471         specifies the number of bytes to be converted, not the array size.
23472
23473 2002-03-23  Martin Baulig  <martin@gnome.org>
23474
23475         * reflection.h (MonoReflectionSigHelper): New type.
23476
23477         * reflection.c (mono_reflection_sighelper_get_signature_local),
23478         (mono_reflection_sighelper_get_signature_local): New functions.
23479
23480         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
23481         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
23482         interncalls.
23483
23484 2002-03-23  Martin Baulig  <martin@gnome.org>
23485
23486         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
23487         is_writeable is set.
23488         (mono_raw_buffer_update): New function to write the modified map
23489         back to disk.
23490
23491         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
23492
23493         * debug-symfile.c (mono_debug_update_symbol_file): Call
23494         mono_raw_buffer_update() when done writing.
23495
23496 2002-03-23  Martin Baulig  <martin@gnome.org>
23497
23498         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
23499
23500         * debug-symfile.c: Added support for arguments and local variables.
23501
23502 2002-03-23  Dick Porter  <dick@ximian.com>
23503
23504         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
23505         protected by ifdefs, hence breaking the w32 build.
23506
23507 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23508
23509         * object.c: implement is_interned() the right way.
23510
23511 2002-03-21  Martin Baulig  <martin@gnome.org>
23512
23513         * debug-symfile.[ch]: New files to handle debugging information
23514         files. There's also support to dynamically update these symbol
23515         files to include machine dependent information.
23516
23517 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
23518
23519         * threads.c (mono_thread_create): new function to create thread
23520         from C
23521
23522 2002-03-20  Martin Baulig  <martin@gnome.org>
23523
23524         * icall.c (ves_icall_InternalInvoke): Create a new object if the
23525         method is a constructor.
23526         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
23527         points to ves_icall_InternalInvoke().
23528
23529 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
23530
23531         * file-io.c: Flush shouldn't throw exceptions.
23532
23533 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
23534
23535         * file-io.c: FileStream flush support; FileSetLength now
23536         restores file pointer.
23537
23538 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
23539
23540         * class.c: set image for pointer classes.
23541
23542 2002/03/19  Nick Drochak <ndrochak@gol.com>
23543
23544         * sysmath.c: Forgot one.
23545
23546 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
23547
23548         * sysmath.c: Avoid redefining existing names.
23549
23550 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
23551
23552         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
23553         handled by runtime as icall rather than dllimport from libm.so
23554         * file-io.c, file-io.h: fixed handle argument type.
23555
23556 2002-03-18  Dick Porter  <dick@ximian.com>
23557
23558         * reflection.c (mono_image_get_type_info): rename interface to
23559         iface, because of "#define interface struct" on windows.
23560
23561 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
23562
23563         * class.c, class.h: rename and export mono_ptr_class_get().
23564         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
23565         * reflection.c, reflection.h, icall.c: better/saner type name
23566         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
23567         method signatures.
23568
23569 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
23570
23571         * class.c (mono_class_init): removed hardcoded GHC_SLOT
23572
23573         * icall.c (ves_icall_InternalInvoke): impl.
23574
23575 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
23576
23577         * reflection.c: output the interface map table, too.
23578
23579 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
23580
23581         * class.c (class_compute_field_layout): separate computation of 
23582         static field layout
23583
23584 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
23585
23586         * icall.c: added System.Buffer support.
23587         * file-io.c: moved file icalls from PAL to FileStream.
23588
23589 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
23590
23591         * icall.c (ves_icall_System_Object_GetHashCode): impl.
23592
23593 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
23594
23595         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
23596
23597 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
23598
23599         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
23600
23601 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
23602
23603         * debug-helpers.{c,h}: moved here from monograph some useful functions
23604         to locate a method by name/signature in a class or image. Included
23605         also a small and flexible IL disassembler.
23606
23607 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
23608
23609         * reflection.c: fixup tokens in methods with small header size, too.
23610
23611 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
23612
23613         * object.c (mono_string_to_utf8): remove assert(!error), instead
23614         print a warning. 
23615
23616 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
23617
23618         * icall.c: update to the new mono_Array_class_get interface.
23619
23620 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
23621
23622         * appdomain.c, object.c: Boehm-GC enable.
23623         * icall.c: make get_data_chunk() support split data requests.
23624         Ensure a class is initialized in more cases. Return only the first
23625         property found in GetProperties() or the compiler gets confused. 
23626         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
23627         * reflection.h, reflection.c: add fixup mechanism for field and method
23628         tokens. Initialize assembly->typeref in a single place. Output
23629         properties after events. Support custom attributes for events, too.
23630         Typo fix for paramter custom attrs.
23631
23632 2002-03-07  Martin Baulig  <martin@gnome.org>
23633
23634         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
23635
23636 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
23637
23638         * class.c (mono_array_class_get): fix. for multi. dim. arrays
23639
23640 2002-03-06  Martin Baulig  <martin@gnome.org>
23641
23642         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
23643         non-zero lower bounds. See testcases #F10-#F13.
23644
23645 2002-03-05  Martin Baulig  <martin@gnome.org>
23646
23647         * exception.c (mono_get_exception_argument_out_of_range): New exception.
23648
23649         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
23650         ves_icall_System_Array_GetValue(), only calculate the absolute array position
23651         here.
23652         (ves_icall_System_Array_SetValue): Likewise.
23653         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
23654         as argument and does the actual work. This function is used when copying a
23655         multi-dimensional array.
23656         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
23657         now do all the widening conversions of value types.
23658         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
23659
23660 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23661
23662         * class.c: remove some magic numbers and use the smbolic names,
23663         instead. Added init_events() to load event info at class init time.
23664         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
23665         and mono_metadata_methods_from_event().
23666         * reflection.h, reflection.c: added support for writing out the evnets
23667         related information.
23668
23669 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
23670
23671         * reflection.h, icall.c: use a different method (GetInterfaces)
23672         to gather interface info and add isbyref, isprimitive and
23673         ispointer to the ves_icall_get_type_info() return value.
23674
23675 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
23676
23677         * class.h: stared adding support for events.
23678         * icall.c: split find_members implementation. Added debug icall to get
23679         the address of an object.
23680         * reflection.c: handle TypeBuilders in mono_type_get_object().
23681
23682 2002-03-01  Martin Baulig  <martin@gnome.org>
23683
23684         * icall.c (ves_icall_System_Array_GetLength): This must throw an
23685         ArgumentOutOfRangeException(), not an ArgumentException().
23686         (ves_icall_System_Array_GetLowerBound): Likewise.
23687         (ves_icall_System_Array_GetValue): Improved argument checking.
23688         (ves_icall_System_Array_SetValue): Improved argument checking.
23689
23690 2002-03-01  Martin Baulig  <martin@gnome.org>
23691
23692         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
23693         called with invalid arguments rather than just dying with g_assert().
23694         (ves_icall_System_Array_SetValue): Likewise.
23695         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
23696         raise a NotImplementedException instead.
23697         (ves_icall_System_Array_GetLength): Added argument checking.
23698         (ves_icall_System_Array_GetLowerBound): Added argument checking.
23699
23700 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
23701
23702         * object.h (mono_assert): new macros mono_assert and
23703         mono_assert_not_reached
23704
23705 2002-02-28  Martin Baulig  <martin@gnome.org>
23706
23707         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
23708         and "System::String::IsInterned" to "System::String::_IsInterned".
23709
23710 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
23711
23712         * icall.c: remove hacks for typebuilder. Added icall to create a
23713         modified type from a tybebuilder.
23714         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
23715         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
23716         to create a backing MonoClass for a TypeBuilder.
23717
23718 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
23719
23720         * class.c, class.h: more refactoring of class init.
23721         Export mono_class_setup_mono_type() and mono_class_setup_parent().
23722
23723 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
23724
23725         * marshal.c, marshal.h: start of marshaling interface.
23726
23727 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
23728
23729         * icall.c: fix order in assembly qualified name icall.
23730
23731 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
23732
23733         * class.c: do not free str, since we store it in the hash table.
23734         * reflection.h: add label field to MonoILExceptionInfo.
23735         * reflection.c: handle references to more than one assembly. Handle
23736         case when there isn't a module created in the assembly.
23737
23738 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
23739
23740         * class.c: Fix typo. Start refactoring of class init code.
23741
23742 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
23743
23744         * appdomain.c: exit with 1 on error.
23745         * class.c: we already have the name in MonoClassField.
23746         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
23747         MonoStreamHeader instead of an offset of image->raw_metadata.
23748
23749 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
23750
23751         * appdomain.c (mono_init): Be even more descriptive about the error.
23752
23753 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
23754
23755         * appdomain.c: give the user an informative message when corlib can't
23756         be loaded.
23757
23758 2002-02-26  Martin Baulig  <martin@gnome.org>
23759
23760         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
23761         New icall to get the time zone data.
23762
23763 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
23764
23765         * reflection.c: set virtual and raw size of section correctly.
23766         * threads.c: transfer domain information to newly created threads.
23767
23768 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
23769
23770         * class.c: when instancing a class in a domain, load the default
23771         vaules for static fields from the constant table. Fix System.Enum to
23772         not be an enum.
23773         * icall.c: implement Object::GetType() internalcall. Implemented
23774         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
23775         Fixed checking of binding flags in find_members().
23776         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
23777         * reflection.c: handle enumerations when writing to the constant
23778         table. Use a different object cache for types.
23779
23780
23781 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
23782
23783         * object.c (mono_object_isinst): fix for arrays
23784
23785         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
23786
23787 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
23788
23789         * object.c: don't use mprotect ()  and fix intern pool hash table
23790         lookup for big endian systems.
23791
23792 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
23793
23794         * icall.c: change type_is_subtype_of () signature.
23795
23796 2002-02-21  Mark Crichton  <crichton@gimp.org>
23797
23798         * rand.c, rand.h: Added random number generator for
23799         System.Security.Cryptography classes.
23800
23801         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
23802
23803         * icall.c: Added System.Security.Cryptography calls.
23804
23805 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
23806
23807         * class.c, icall.c, metadata.c: better support for pointer types.
23808         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
23809         * reflection.c: Add support for getting custom attrs for properties
23810         and simplify some code.
23811
23812 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
23813
23814         * icall.c: change getToken () and add custom attribute GetBlob()helper
23815         method.
23816         * reflection.h: add custom attrs array to the reflection builder structures.
23817         * reflection.c: encode and emit custom attributes for all the relevant
23818         reflection objects. Cache fieldref and methodref tokens. Change
23819         mono_image_create_token() interface to take a MonoDynamicAssembly.
23820         More complete custom attributes decoder. Load custom attributes for
23821         Assembly, Field, Method and Constructor objects, too. Make the
23822         returned array an Attribute[] one, not object[]. Added
23823         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
23824         custom attribute constructor.
23825
23826 2002-02-20  Dick Porter  <dick@ximian.com>
23827
23828         * icall.c:
23829         * rawbuffer.c:
23830         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
23831         problem code out for now).
23832
23833 2002-02-19  Radek Doulik  <rodo@ximian.com>
23834
23835         * object.c (mono_ldstr): use hash table to avoid multiple swapping
23836
23837 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
23838
23839         * icall.c: register the GetCustomAttributes method.
23840         * object.c, object.h: add mono_string_new_len ().
23841         * reflection.h, reflection.c: added mono_runtime_invoke(),
23842         mono_install_runtime_invoke(). Added
23843         mono_reflection_get_custom_attrs () to load custom attributes and
23844         create the attribute objects.
23845
23846 2002-02-19  Dick Porter  <dick@ximian.com>
23847         * threads-dummy-types.c:
23848         * threads-dummy-types.h:
23849         * threads-dummy.c:
23850         * threads-dummy.h:
23851         * threads-pthread-types.c:
23852         * threads-pthread-types.h:
23853         * threads-pthread.c:
23854         * threads-pthread.h:  Deleted obsolete files
23855
23856 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
23857
23858         * class.c (mono_class_vtable): runtime init the class when we
23859         allocate static class data.
23860
23861         * icall.c (ves_icall_System_Array_SetValue): check for null values.
23862
23863         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
23864         and String - but we will need generic marshalling support in the
23865         future. 
23866         (mono_init): set the domain name in a ms compatible way
23867
23868         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
23869         String[].
23870
23871 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
23872
23873         * object.c (mono_array_clone): use alloca() instead of g_malloc  
23874         for sizes
23875
23876         * appdomain.c (mono_domain_unload): impl.
23877
23878 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
23879
23880         * appdomain.c, object.c: fix intern pool implementation.
23881         * class.c: fix alignment code.
23882
23883 2002-02-16  Radek Doulik  <rodo@ximian.com>
23884
23885         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
23886         and s2 > s1, just copy lower bytes to be compatible with little
23887         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
23888         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
23889
23890         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
23891         force big_endian to be 1 for big endian machines 
23892         (ves_icall_iconv_new_decoder): ditto
23893
23894 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
23895
23896         * socket-io.c (convert_sockopt_level_and_name): If the system
23897         doesn't define SOL_IP or SOL_TCP, get them by hand using
23898         getprotobyname() and caching the values (because this could be a
23899         slow operation).
23900         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
23901         Use the appropriate struct when the system does support it. Ie,
23902         not all systems have struct ip_mreqn so use struct ip_mreq when
23903         appropriate.
23904
23905 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
23906
23907         * reflection.c: handle finally clauses.
23908
23909 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
23910
23911         * socket-io.c: use g_snprintf() instead of snprintf.
23912
23913 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
23914
23915         * reflection.c (mono_param_get_objects): Cast second argument to
23916         mono_method_get_param_names to a const char** to silence the
23917         compiler warning.
23918
23919         * appdomain.c (mono_domain_assembly_open): Put parens around the
23920         truth statement in the for-loop.
23921
23922         * unicode.c (iconv_convert): Got rid of a compiler warning about
23923         int i being unused when the system has a new iconv.
23924         (iconv_get_length): Same.
23925
23926         * image.c (load_class_names): Cast the second argument to
23927         g_hash_table_insert() to char* to hush compiler warnings about the
23928         arg being a const.
23929         (mono_image_open): Same here.
23930
23931         * socket-io.c: Don't conditionally include sys/filio.h or
23932         sys/sockio.h here anymore since we now get them from
23933         io-layer/io-layer.h
23934         (inet_pton): If the system doesn't support inet_aton, implement
23935         using inet_addr and also #define INADDR_NONE if it isn't defined
23936         by the system.
23937
23938 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
23939
23940         * metadata.c, metadata.h: added function to get packing and size info
23941         of a typedef.
23942         * reflection.h, reflection.c: handle field RVA data. Save info about
23943         the table layout if needed. Assign typedef indexes to all the types
23944         before dumping the info about them to avoid forward reference problems.
23945
23946 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
23947
23948         * socket-io.c (convert_sockopt_level_and_name): ifdef
23949         SO_ACCEPTCONN because it is not defined on my system (old debian)
23950
23951 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
23952
23953         * opcode.c: use stddef.h to get NULL.
23954
23955 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
23956
23957         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
23958         for FIONBIO, FIONREAD and SIOCATMARK.
23959         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
23960         define INADDR_NONE and besides, inet_addr() is deprecated and
23961         should not be used. Use inet_pton() instead - it also has the
23962         added bonus that it can easily handle IPv6 addresses as well.
23963         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
23964
23965 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
23966
23967         * decimal.c: remove _MSC_VER conditional.
23968
23969 2002-02-13  Dick Porter  <dick@ximian.com>
23970
23971         * socket-io.c: 
23972         * icall.c: Internal calls for Blocking, Select, Shutdown,
23973         GetSocketOption and SetSocketOption
23974
23975 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23976
23977         * assembly.cs: better resolver: use it instead of some kludgy
23978         code.
23979
23980 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
23981
23982         * reflection.c: the best way to speed-up the compiler is to avoid
23983         infinite loops.
23984
23985 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
23986
23987         * class.c (mono_class_vtable): changed the object layout
23988         (obj->vtable->class). 
23989         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
23990
23991 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23992
23993         * assembly.c: look for assemblies in the assembly dir, too.
23994
23995 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
23996
23997         * class.c: fix thinko in mono_class_from_type().
23998
23999 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
24000
24001         * exception.h, exception.c: added TypeLoadException.
24002         * object.h, object.c: added mono_array_clone ().
24003         * icall.c: handle throwOnError in AssemblyGetType().
24004         Added Array.Clone().
24005         * opcode.h, opcode.c: use a single value for the opcode val.
24006         Compile fix for non-gcc compilers.
24007
24008 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
24009
24010         * opcodes.c, opcodes.h: export interesting info about opcodes.
24011
24012 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
24013
24014         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
24015         icalls. 
24016
24017         * class.c (class_compute_field_layout): set element_class for enums
24018         (mono_class_create_from_typedef): set element_class for normal classes
24019
24020         * icall.c (ves_icall_System_Enum_get_value): impl.
24021
24022         * class.c (mono_class_create_from_typedef): do not set valuetype
24023         flag for System.ValueType and System.Enum
24024
24025 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
24026
24027         * unicode.c (iconv_convert): fix big endian problem.
24028
24029 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
24030
24031         * class.c: add asserts if we are ever going to scribble over memory.
24032         * socket-io.c: not all systems have AF_IRDA defined.
24033
24034 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
24035
24036         * class.c (class_compute_field_layout): do not consider static
24037         fields to compute alignment
24038
24039 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
24040
24041         * appdomain.c (mono_appdomain_get): impl.
24042         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
24043
24044 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
24045
24046         * icall.c: ignore "file://" prefix when loading an assembly.
24047
24048 2002-01-23  Dick Porter  <dick@ximian.com>
24049
24050         * socket-io.c:
24051         * icall.c:
24052         * Makefile.am: Added socket support
24053
24054 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24055
24056         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
24057         code back.  This should return the assemblies that are loaded by
24058         the runtime on behalf of an application domain. 
24059
24060         The current implementation is still broken, it just returns every
24061         assembly loaded, but until we get real applications domain this
24062         will do.
24063
24064 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
24065
24066         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
24067         AppDomain object.
24068
24069 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
24070
24071         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
24072         the mono_class_from_name lookup.
24073         (ves_icall_get_parameter_info): ditto.
24074         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
24075         method.
24076         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
24077
24078 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
24079
24080         * class.c: load also nested classes on class init.
24081         System.ValueType instance methods gets passed boxed
24082         values, unless methods in derived classed that get a pointer to the
24083         data.
24084         * icall.c: use better name parsing code in GetType().
24085         * image.c, image.h: add mono_image_loaded ().
24086         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
24087         * reflection.c, reflection.h: added mono_reflection_parse_type().
24088
24089 2002-01-22  Veronica De Santis <veron78@interfree.it>
24090
24091         * icall.c : Added mapping of internal calls for Manual and Auto reset events
24092         * threads.c : Added the implementation of internal calls for events
24093         * threads.h : Added prototypes of internal calls for events
24094         
24095 2002-01-21  Radek Doulik  <rodo@ximian.com>
24096
24097         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
24098
24099 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
24100
24101         * class.c (mono_class_init): set min_align to 1 (instead of 0)
24102         (mono_class_value_size): use min_align
24103
24104 2002-01-20  Dick Porter  <dick@ximian.com>
24105
24106         * threads.h:
24107         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
24108         so it compiles on w32.
24109
24110 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
24111
24112         * metadata.c (mono_type_stack_size): impl.
24113
24114         * class.c (mono_class_get_field): impl. memberref token
24115
24116 2002-01-16 Veronica De Santis <veron78@@interfree.it>
24117
24118         * icall.h : Added the internal calls mapping for CreateMutex_internal
24119                     and ReleaseMutex_internal.
24120         * threads.h : Added the prototype of mutexes internal calls.
24121         * threads.c : Added the implementations of mutexes internal calls.
24122
24123 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
24124
24125         * metaparse.h: removed unused file.
24126         * reflection.c, reflection.h: added stream_data_align () function 
24127         to align data in streams and keep stream aligned. Add support for
24128         exception support in method headers.
24129
24130 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
24131
24132         * unicode.c: make iconv_convert () return the number of bytess written
24133         in the output buffer.
24134
24135 2002-01-15  Dick Porter  <dick@ximian.com>
24136         * threads.c: Make the runtime's idea of infinite timeouts coincide
24137         with the class library's
24138
24139         Fix a particularly egregious bug in mono_thread_cleanup(). That
24140         code was so utterly bogus it must have been written on a Monday.
24141
24142 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
24143
24144         * reflection.h: add subtypes field to TypeBuilder.
24145         * reflection.c: encode constants for literal fields.
24146         Handle subtypes. Fix user string token (and add a zero byte)
24147         at the end.
24148         
24149 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
24150
24151         * class.c (mono_class_init): bug fix: assign slot numbers for
24152         abstract methods.
24153
24154 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
24155
24156         * reflection.c: don't try to output a code RVA for abstract methods.
24157         Small fixes for method header format. Output parameter info to the
24158         ParamDef table. Save method overriding info to MethodImpl table.
24159         Fix property support. Allow typedef.extends to be a type in the
24160         building assembly.
24161         * verify.c: fix off-by-one error.
24162
24163 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
24164
24165         * class.c: fix mono_class_from_mono_type () for szarray types.
24166         Remove unused cache check in mono_class_from_type_spec().
24167         * icall.c: *type_from_name () functions handle simple arrays and byref.
24168         * reflection.c: handle byref and szarray types. Handle methods without
24169         body (gets P/Invoke compilation working). Handle types and fields in
24170         get_token ().
24171         * reflection.h: add rank to MonoTypeInfo.
24172
24173 2002-01-10  Dick Porter  <dick@ximian.com>
24174
24175         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
24176         internal calls
24177
24178 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
24179
24180         * icall.c: initialize class in type_from_handle ().
24181         Loop also in parent classes for get_method ().
24182         * reflection.c: properly encode class and valuetype types.
24183         Start on encoding TypeBuilder types. Handle fieldrefs.
24184         Use correct length when registering a user string.
24185         Handle ConstructorBuilder and MonoMethod in get_token ().
24186         Make mono_type_get_object () aware of cached types.
24187         * object.c: back out change to mono_string_new ().
24188
24189 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
24190         * object.c: mono_string_new should return a NULL when the string 
24191         passed in is NULL -- not try to deference it.
24192         
24193 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
24194
24195         * icall.c: hack to make IsSubType work for TypeBuilders.
24196         * reflection.c: emit constructors before methods.
24197         Retrieve param names in mono_param_get_objects().
24198
24199 2002/01/05  Nick Drochak  <ndrochak@gol.com>
24200
24201         * Makefile.am: fix list of headers and sources so automake 1.5
24202         doesn't complain. Removed \# at end of list.
24203
24204 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
24205
24206         * reflection.c: get token for a method ref. Set return type of
24207         constructor to void.
24208         * loader.c: debug message.
24209         * class.c: typo fix.
24210
24211 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
24212
24213         * icall.c: fix array init with rank > 1. FindMembers
24214         loops in parent class as well.
24215         * image.c: do not insert nested types in name cache.
24216         * reflection.c: warning fix.
24217         * reflection.h: add override method (for interface impl).
24218
24219 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
24220
24221         * metadata.c: fix customattr decoding.
24222
24223 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
24224
24225         * rawbuffer.cs: Added native Win32 implementation, avoids using
24226         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
24227
24228 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
24229
24230         * class.c: make the low-level routines handle the cache.
24231
24232 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
24233
24234         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
24235
24236 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
24237
24238         * class.c: fix mono_array_element_size() for objects.
24239         * class.h, class.c: add properties to MonoClass and load them
24240         at init time.
24241         * icall.c: check with isinst() when assigning a value to an array
24242         instead of requiring the classes to match exactly.
24243         Implemented icall for System.Type::GetType().
24244         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
24245         enums. Handle bindingflags when looking for methods and fields.
24246         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
24247         and mono_metadata_methods_from_property().
24248         * reflection.h, reflection.c: added structures for propreties,
24249         parameters and enums. Implemented mono_property_get_object() and
24250         mono_param_get_objects().
24251
24252 2001-12-18  Dick Porter  <dick@ximian.com>
24253
24254         * file-io.c: Use mono_string_to_utf16() instead of
24255         mono_string_chars()
24256
24257         * object.c: Added mono_string_to_utf16(), which copies the non
24258         NULL-terminated MonoString into a new double-null-terminated
24259         buffer.
24260
24261 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
24262
24263         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
24264
24265 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
24266
24267         * file-io.c: raise exceptions if handle is invalid.
24268
24269 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
24270
24271         * assembly.c: yet another check for mscorlib.
24272         * class.c, class.h: load nesting info for classes.
24273         * icall.c: many new functions to support the Reflection classes.
24274         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
24275         * reflection.h, reflection.c: mono_image_create_token(),
24276         mono_assembly_get_object(), mono_type_get_object(),
24277         mono_method_get_object(), mono_field_get_object(): methods to return
24278         objects that parallel the C representation of assemblies, types,
24279         methods, fields.
24280
24281 2001-12-11  Dick Porter  <dick@ximian.com>
24282
24283         * icall.c:
24284         * file-io.c: Internal calls for file IO.
24285
24286 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
24287
24288         * tabledefs.h: missing FileAttributes.
24289         * verify.h, verify.c: use is_valid_string () to simplify and check for
24290         valid strings more correctly. Fix warnings and speeling.
24291         Check more tables: Filed, File, ModuleRef, StandAloneSig.
24292         Check code: branches, maxstack, method calls.
24293
24294 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
24295
24296         * object.c (mono_object_allocate): removed static, so that the jit
24297         can allocate value types.
24298
24299         * icall.c (ves_icall_System_DateTime_GetNow): impl.
24300
24301 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24302
24303         * class.c: init enum types right away and register the
24304         token->MonoClass map in mono_class_create_from_typedef ().
24305         * verify.h, verify.c: first cut of the verifier.
24306         * pedump.c: add --verify switch to verify metadata tables.
24307         * tabledefs.h: add some missing enums.
24308
24309 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
24310
24311         * class.c (mono_install_runtime_class_init): impl.
24312         (mono_class_init): renamed mono_class_metadata_init to
24313         mono_class_init, also removed the metadata_inited flag
24314
24315         * object.c (mono_object_isinst): use faster algorithm
24316
24317 2001-11-30  Radek Doulik  <rodo@ximian.com>
24318
24319         * mono-endian.h: reverted last change
24320         added function prototypes
24321
24322         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
24323         add mono-endian.c back
24324
24325         * mono-endian.c: returned back, as Paolo pointed out, it's needed
24326         for unaligned access, I've mistaked it with endianess. I am
24327         sorry.
24328         (mono_read16): fix reverted endianess
24329         (mono_read64): ditto
24330         (mono_read32): ditto
24331
24332 2001-11-30  Dick Porter  <dick@ximian.com>
24333
24334         * exception.c: Implement mono_exception_from_name()
24335
24336 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
24337
24338         * metadata.h, metadata.c: remove params_size and locals_size and their
24339         calculation from the metadata code: they are only usefult to the
24340         interp.
24341
24342 2001-11-29  Radek Doulik  <rodo@ximian.com>
24343
24344         * object.c (mono_ldstr): swap bytes here, it's probably not the
24345         best place, but works for me now, I'll redo it once I know mono
24346         better, also note that I add PROT_WRITE and don't reset back, also
24347         note that it's only affects big endians, so x86 should be OK
24348
24349         * mono-endian.h (read16): use just glib macros for both endians
24350
24351         * mono-endian.c: removed as glib macros are used in in
24352         mono-endian.h so we don't need to care about endianess for read
24353         macros as glib does that for us already
24354
24355 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
24356
24357         * class.h, class.h: take minimum alignment into consideration so
24358         that the fields of a class remain aligned also when in an array.
24359
24360 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24361
24362         * loader.h, loader.c: add mono_method_get_param_names().
24363         * class.c: 0-init class fields.
24364
24365 2001-11-26  Dick Porter  <dick@ximian.com>
24366
24367         * icall.c:
24368         * threads-types.h:
24369         * threads.c: New file that handles System.Threading on all platforms
24370
24371         * object.c: 
24372         * object.h: Remove the synchronisation struct from MonoObject,
24373         replace it with a pointer that gets initialised on demand
24374
24375         * Makefile.am: Replace all the system-specific threading code with
24376         a single file that uses the new wrapper library
24377
24378 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
24379
24380         * class.c, class.h: add mono_install_trampoline() so that the runtime
24381         can register a function to create a trampoline: removes the ugly
24382         requirement that a runtime needed to export arch_create_jit_trampoline.
24383         * object.h, object.c: added mono_install_handler() so that the runtime
24384         can install an handler for exceptions generated in C code (with
24385         mono_raise_exception()). Added C struct for System.Delegate.
24386         * pedump.c: removed arch_create_jit_trampoline.
24387         * reflection.c: some cleanups to allow registering user strings and
24388         later getting a token for methodrefs and fieldrefs before the assembly
24389         is built.
24390         * row-indexes.h: updates and fixes from the new ECMA specs.
24391
24392 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
24393
24394         * class.h, class.c: add enum_basetype field to MonoClass.
24395         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
24396         to get index in the constant table reated to a field, param or
24397         property.
24398         * reflection.h, reflection.c: handle constructors. Set public-key and
24399         version number of the built assembly to 0.
24400         * row-indexes.h: update from new ECMA spec.
24401
24402 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
24403
24404         * class.h, class.c: add a max_interface_id to MonoClass.
24405         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
24406         since it's used to do that. Added mono_type_type_from_obj().
24407         Make GetType() return NULL instead of segfaulting if the type was not
24408         found. Handle simple arrays in assQualifiedName.
24409         * object.h: add a struct to represent an Exception.
24410         * reflection.c: output call convention in method signature.
24411         Add code to support P/Invoke methods and fixed offsets for fields.
24412
24413 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
24414
24415         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
24416         the value.
24417         * icall.c: use mono_array_addr instead of array->vector: fixes the
24418         reflection image writing.
24419         * reflection.c: init call convention byte to 0 in method signature.
24420         Encode the property signature. Don't output property-related methods
24421         twice. Really process the properties for a type (don't cast a field to
24422         a property, my mom always told me that).
24423         Fix 64 bit issues in pointer alignment in a different and more
24424         readable way.
24425
24426 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
24427
24428         * loader.h: Removed type class from MonoDefaults, added monotype
24429
24430         * loader.c: Loaded MonoType, removed loading of Type
24431
24432         * icall.c (my_mono_new_object): Now returns a System.MonoType,
24433         and fills in System.Type._impl with a RuntimeTypeHandle rather
24434         than the actual MonoClass *
24435
24436         (ves_icall_type_from_handle): change from type_class to
24437         monotype_class
24438
24439         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
24440         implemented
24441
24442         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
24443         implemented
24444
24445         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
24446
24447         (ves_icall_System_Reflection_Assembly_GetType): implemented
24448
24449         (ves_icall_System_MonoType_assQualifiedName): implemented
24450
24451         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
24452
24453 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
24454
24455         * assembly.c (mono_assembly_open): Implement a cache for the
24456         assemblies. 
24457
24458         (mono_assembly_close): only destroy the assembly when the last
24459         reference is gone.
24460         
24461 2001-11-09  Dick Porter  <dick@ximian.com>
24462
24463         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
24464
24465 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
24466
24467         * class.c (mono_class_metadata_init): bug fix: compute the right slot
24468
24469 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
24470
24471         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
24472         from Martin Weindel.
24473         * object.h: add mono_string_chars ().
24474
24475 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
24476
24477         * reflection.c (build_compressed_metadata): Eliminates warnings
24478         and uses 64-bit clean code.
24479
24480         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
24481         (mono_type_equal): Change signature to eliminate warnings.
24482
24483 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
24484
24485         * icall.c, loader.c: remove the internalcall array constructors.
24486         Changes to match the new MonoArray structure.
24487         * object.h, object.c: an array object doesn't allocate an extra
24488         vector. Add mono_array_new_full () to create jagged arrays easily.
24489
24490 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
24491
24492         * metadata.h, metadata.c: add mono_metadata_field_info () to
24493         retreive all the info about a field from vairous tables.
24494         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
24495         * class.h, class.c: augment MonoClassField with more info.
24496         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
24497         policy and load a field's RVA if needed.
24498
24499 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
24500
24501         * class.c (mono_class_metadata_init): create a trampoline for all
24502         virtual functions instead of actually compiling them.
24503
24504 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
24505
24506         * class.h, class.c: include name in MonoClassField.
24507         * class.c: fix fundamental type of System.Object and System.String.
24508         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
24509         tokens in ldtoken.
24510         * icall.c: remove internalcalls for the Reflection stuff that is now
24511         done in C# code.
24512         * loader.c: mono_field_from_memberref () implementation.
24513         * mono-endian.c: thinko (s/struct/union/g).
24514         * object.c, object.h: make the mono_string_* prototypes actually use
24515         MonoString instead of MonoObject.
24516         * reflection.c, reflection.h: updates for changes in the reflection
24517         code in corlib: we use C structures that map to the actual C# classes.
24518         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
24519         fat method header if needed and use the info from the ILGenerator for
24520         methods. Handle fields in types. Misc fixes.
24521
24522 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
24523
24524         * class.c (mono_class_metadata_init): bug fix: always allocate
24525         space for static class data
24526
24527 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
24528
24529         * class.c (mono_compute_relative_numbering): use relative
24530         numbering to support fast runtime type checks.
24531
24532 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
24533
24534         * class.c (mono_class_create_from_typeref): added debugging output
24535         to print class name when MonoDummy is returned instead of real class
24536
24537 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
24538
24539         * class.c (mono_class_metadata_init): interface offset table now
24540         contains pointers into the vtable - this is more efficient for the jit
24541
24542 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
24543
24544         * class.c (mono_class_metadata_init): use a temporary vtable (the
24545         old algorithm only worked for the interpreter, but not for the jit)
24546
24547 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
24548
24549         * loader.c (method_from_memberref): use mono_class_get to get the
24550         class of an array instead of using System.Array directly.
24551         (mono_get_method): also add MEMBERREF methods to the method cache
24552         which usefull for arrays.
24553
24554 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
24555
24556         * pedump.c (arch_compile_method): added to compute vtable entry
24557
24558         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
24559         number of interfaces.
24560         
24561         * class.h: merged MonoArrayClass into MonoClass
24562
24563         * class.c (mono_class_create_from_typedef): compute the vtable size and
24564         allocate space to include the vtable inside MonoClass
24565         (mono_class_metadata_init): initialize the vtable
24566
24567 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
24568
24569         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
24570         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
24571         * image.c: endian fixes by Laurent Rioux.
24572         * object.h, object.c: rename MonoStringObject to MonoString and
24573         MonoArrayObject to MonoArray. Change some function names to conform to
24574         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
24575         guint16* as first argument, so don't use char*.
24576         Provide macros to do the interesting things on arrays in a portable way.
24577         * threads-pthread.c: updates for the API changes and #include <sched.h>
24578         (required for sched_yield()).
24579         * icall.c: updates for the API changes above.
24580         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
24581         platforms that need them.
24582
24583 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
24584
24585         * class.c: set the correct type for all the fundamental
24586         type when loading the class.
24587
24588 2001-10-05  Dick Porter  <dick@ximian.com>
24589
24590         * threads-pthread.c (pthread_mutex_timedlock): Simple
24591         compatibility version for C libraries that lack this call.
24592
24593 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
24594
24595         * class.c: MonoTypes stored in MonoClass are stored as
24596         fundamental MonoTypes when the class represents a
24597         fundamental type (System.Int32, ...).
24598         The TypeHandle return by ldtoken is a MonoType*.
24599         * icall.c: ves_icall_get_data_chunk () write out all the
24600         PE/COFF stuff. Implement ves_icall_define_method (),
24601         ves_icall_set_method_body (), ves_icall_type_from_handle ().
24602         * image.c: properly skip unknown streams.
24603         * loader.h, loader.c: add type_class to mono_defaults.
24604         * metadata.c, metadata.h: export compute_size () as
24605         mono_metadata_compute_size () with a better interface.
24606         Typo and C&P fixes.
24607         * pedump.c: don't try to print the entry point RVA if there is no entry point.
24608         * reflection.c, reflection.h: many cleanups, fixes, output method
24609         signatures and headers, typedef and typeref info, compress the metadata
24610         tables, output all the heap streams, cli header etc.
24611         * row-indexes.h: typo fixes.
24612
24613 2001-10-04  Dick Porter  <dick@ximian.com>
24614
24615         * object.h: Add a synchronisation mutex struct to MonoObject
24616
24617         * object.c (mono_new_object): Initialise the object
24618         synchronisation mutexes
24619
24620         * icall.c: System.Threading.Monitor internal calls
24621         
24622         * threads-pthread.h:
24623         * threads-pthread.c: System.Threading.Monitor internal calls
24624
24625         * threads-types.h: New file, includes the system-specific thread
24626         structures
24627         
24628         * threads-pthread-types.h:
24629         * threads-pthread-types.c: New files, handle pthread-specific
24630         synchronisation types
24631
24632         * threads-dummy-types.h: 
24633         * threads-dummy-types.c: New files of dummy support for
24634         thread-specific types
24635
24636         * metadata.c:
24637         * image.c:
24638         * pedump.c: include mono-endian.h not endian.h
24639         
24640         * Makefile.am: More threads files.
24641         Name mono-endian.h not endian.h
24642
24643 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
24644
24645         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
24646         stuff and implement a few more bits.
24647         * icall.c: a field needs to be dereferenced twice. Do not use the same
24648         name for two variables in the same scope.
24649         * image.c, image.h: cleanups.
24650
24651 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
24652
24653         * class.c (mono_class_metadata_init): bug fix: compute the right size
24654
24655 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
24656
24657         * icall.c: implemented some of the Reflection internalcalls.
24658         * image.c, image.h: start writing out the PE/COFF image.
24659         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
24660         that does the reverse than decode_blob_size ().
24661         * object.c: use mono_metadata_encode_value (). Move here
24662         temporary implementation of mono_string_to_utf8 ().
24663         * rawbuffer.c: make malloc_map static.
24664
24665 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
24666
24667         * metadata.c: fix type comparison for arrays.
24668         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
24669         Added a couple of new classes to monodefaults.
24670         * icall.c: added a couple of Reflection-related internalcalls.
24671         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
24672         Added a byval_arg MonoType to MonoClass.
24673
24674 2001-09-28  Dick Porter  <dick@ximian.com>
24675
24676         * icall.c:
24677         * threads-pthread.h: 
24678         * threads-pthread.c: Implemented internal calls for
24679         LocalDataStoreSlot operations.  Applied mutexes around all shared
24680         data.  Reworked the thread creation and Start() operations to
24681         avoid a race condition.
24682         
24683         * threads-dummy.h:
24684         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
24685
24686 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
24687
24688         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
24689
24690 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
24691
24692         * class.c, loader.c: warn and return NULL instead of erroring out.
24693         * icall.c: added System.AppDomain::getCurDomain().
24694         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
24695
24696 2001-09-25  Dick Porter  <dick@ximian.com>
24697
24698         * threads-pthread.h:
24699         * threads-pthread.c: Implemented timed thread joining and added
24700         System.Threading.Thread::Join_internal internal call
24701
24702         * icall.c: Added System.Threading.Thread::Join_internal internal call
24703
24704         * threads-dummy.h:
24705         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
24706
24707 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
24708
24709         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
24710         mono_string_intern () to implement the semantics of the ldstr opcode
24711         and the interning of System.Strings.
24712         * icall.c: provide hooks to make String::IsIntern and String::Intern
24713         internalcalls.
24714
24715 2001-09-23  Dick Porter  <dick@ximian.com>
24716
24717         * threads-dummy.c: 
24718         * threads-dummy.h: New files of dummy threading routines
24719
24720         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
24721         support code based on system specifics
24722
24723         Rename PTHREAD_LIBS to THREAD_LIBS
24724         
24725 2001-09-23  Dick Porter  <dick@ximian.com>
24726
24727         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
24728         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
24729         internal calls.
24730         (mono_thread_init): Set up a Thread object instance to return when
24731         the main thread calls Thread.CurrentThread
24732         (mono_thread_cleanup): Wait for all subthreads to exit
24733
24734         * icall.c: New internal calls for System.Threading.Thread::Sleep
24735         (including Schedule) and CurrentThread
24736
24737         * threads.h: New file, to insulate thread-specific stuff from the
24738         rest of the code
24739
24740 2001-09-21  Dick Porter  <dick@ximian.com>
24741
24742         * threads-pthread.h: 
24743         * threads-pthread.c: New file, for handling pthreads-style
24744         threading support.  Start() now starts a new thread and executes
24745         the ThreadStart delegate instance.
24746
24747         * icall.c: Added the internalcall for
24748         System.Threading.Thread::Start_internal
24749
24750         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
24751
24752 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
24753
24754         * loader.c: work around the different signatures for delegates
24755         constructors csc generates in compiled code vs the ones compiled in mscorlib.
24756
24757 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
24758
24759         * class.h, class.c: add mono_class_get_field_from_name ().
24760         * *: Fix C comments and other ANSI C issues.
24761
24762 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
24763
24764         * endian.h, assembly.c: fix some endianness issues.
24765
24766 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
24767
24768         * loader.h, load.c: add delegate_class to mono_defaults.
24769         Handle runtime provided methods in mono_get_method ().
24770
24771 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
24772
24773         * loader.c (mono_get_method): use pinvoke for internal call
24774
24775         * icall.c: use pinvoke for internal call
24776
24777         * loader.c (method_from_memberref): set the method name
24778
24779 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
24780
24781         * metadata.c: help the compiler generate better code for
24782         mono_class_from_mono_type ().
24783
24784 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
24785
24786         * class.c (mono_class_metadata_init): delayed computing of the
24787         class size to mono_class_metadata_init ()
24788
24789 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
24790
24791         * class.c, class.h: add an interfaces member to MonoClass.
24792         * image.c, image.h: add assembly_name field to MonoImage
24793         from the assembly table.
24794         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
24795
24796 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
24797
24798         * class.c: Handle Array in mono_class_from_mono_type ().
24799         * metadata.c, pedump.c: some endian fixes.
24800
24801 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
24802
24803         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
24804         * metadata.c: fix small problem introduced with the latest commit.
24805
24806 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
24807
24808         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
24809         We don't need a MonoMetadata pointer anymore to compare signatures in
24810         mono_metadata_signature_equal (), update callers.
24811         Reduced memory usage an number of allocations for MonoMethodHeader and
24812         MonoMethodSignature.
24813
24814 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
24815
24816         * metadata.c: added compare for szarray.
24817
24818 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
24819
24820         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
24821         and add a couple more types to it and mono_defaults. Give an hint on
24822         classes that need implementing in our corlib and are referenced
24823         in mscorlib.
24824
24825 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
24826
24827         * class.h, class.c: keep track if a class is also an Enum.
24828         * loader.c: Implement a couple more types for use in libffi
24829         marshalling. Gives better diagnostics when failing to dlopen
24830         a library. Set method->klass for P/Invoke methods, too.
24831
24832 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
24833
24834         * class.c, class.h: add a MonoType this_arg to MonoClass that
24835         represents a pointer to an object of the class' type that
24836         can be used by the interpreter and later the type cache.
24837         Add best guess alignment info for valuetype objects.
24838
24839 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
24840
24841         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
24842         into MonoType: one less level of indirection and allocation and
24843         simplifies quite a bit of code. Added cache for MonoTypes that are
24844         used frequently, so that we don't need to allocate them all the time.
24845
24846 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
24847
24848         * class.c (mono_class_create_from_typedef): System.Enum is also a
24849         value type, although it does not derive from System.ValueType
24850         (maybe a bug in the ms compiler?)
24851
24852         * metadata.c (mono_type_size): return the right size for value types
24853
24854         * loader.c (mono_get_method): only initialize method header if not abstract
24855
24856         * class.c (mono_class_from_mono_type): use mono_default values. 
24857
24858 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
24859
24860         * *: use MonoClass pointers instead of <type_tokens>
24861         
24862         * class.h: new flag: metadata_inited.
24863
24864         * class.c (mono_class_metadata_init): impl.
24865         (mono_class_instance_size): impl.
24866         (mono_class_data_size): impl.
24867
24868 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
24869
24870         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
24871         MonoClass now has the name and name_space fields. 
24872         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
24873         mono_get_method () takes and optional MonoClass as argument.
24874         Removed mono_typedef_from_name() and added mono_class_token_from_name()
24875         instead that takes advantage of a map from class names to typedef
24876         tokens in MonoImage.
24877
24878 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
24879
24880         * metadata.c: zero is not a valid alignment boundary.
24881         Merge MONO_TYPE_VOID in default decoding code.
24882
24883 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
24884
24885         * image.h: merged MonoMetadata into MonoImage
24886
24887         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
24888         identify the type of elements.
24889
24890 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
24891
24892         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
24893         * cil-coff.h: split MonoMSDOSHeader and add size info.
24894         * image.c: add some consistency checks.
24895         * metadata.c: fix row size computation: one programmer
24896         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
24897         add explanation for the locator routine.
24898         Fix decoding of size in method header.
24899         
24900 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
24901
24902         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
24903         (g_concat_dir_and_file): Bring g_concat_dir_and_file
24904         function from gnome-libs.  This uses the right path separator
24905         based on the OS, and also works around a bug in some systems where
24906         a double slash is not allowed. 
24907         (default_assembly_name_resolver): Use g_concat_dir_and_file
24908         (mono_assembly_open): ditto.
24909
24910 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
24911
24912         * metadata.c (mono_metadata_signature_equal): impl.
24913
24914         * *: void is now a realy MonoType (instead of using NULL)
24915         
24916         * metadata.c (do_mono_metadata_parse_type): use
24917         mono_metadata_parse_type to parse void value.
24918
24919 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
24920
24921         * metadata.c, metadata.h: in the signature and method header store
24922         only the space required for holding the loca vars and incoming arguments.
24923
24924 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
24925
24926         * metadata.c (do_mono_metadata_parse_type): treat void like any
24927         other type (instead of assigning NULL);
24928
24929 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
24930
24931         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
24932
24933 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
24934
24935         * image.c (do_mono_image_open): added a cache for arrays.
24936
24937 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
24938
24939         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
24940         decode a single column from a row in a metadata table and changes
24941         to take advantage of it in the typedef locator (gives a nice speed up).
24942         Store offset info for function params.
24943
24944 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
24945
24946         * image.h (MONO_IMAGE_IS_CORLIB): removed 
24947
24948 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
24949
24950         * assembly.c: how could mono_assembly_close () had ever worked?
24951         * metadata.c, metadata.h: provide offset info for local vars.
24952         Implement mono_type_size () to take care of alignment as well
24953         as size (it was mono_field_type_size in cli/class.c before).
24954
24955 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
24956
24957         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
24958
24959         * assembly.h (CORLIB_NAME): set to corlib.dll
24960
24961         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
24962
24963 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
24964
24965         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
24966         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
24967         tokentype.h: massive namespace cleanup.
24968
24969 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
24970
24971         * metadata.h, metadata.c: decode exception clauses when parsing method header.
24972
24973 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
24974
24975         * metadata.c (mono_metadata_free_type): added check for type !=
24976         NULL (void) before calling mono_metadata_free_type()
24977
24978 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
24979
24980         * metadata.h, row_indexes.h: added header with enumerations to use
24981         to index in the columns from tables in metadata and to decode coded
24982         tokens: we should start using this instead of embedding magic numbers
24983         all over the code.
24984
24985 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
24986
24987         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
24988         Move metadata_t info from cli_image_info_t to MonoImage, where
24989         it's easily accessible. Changed all the uses accordingly.
24990         Added the method and class caches to MonoImage.
24991         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
24992         and mono_metadata_decode_value () signature to be more consistent
24993         with the other parse functions (and simplify code). Taken advantage
24994         of zero-length array allocation with GCC. Removed reduntant (and
24995         wrong) MonoFieldType struct and use MonoParam instead. Changed
24996         mono_metadata_parse_field_type () to use common code for parsing.
24997         Added mono_metadata_typedef_from_field () and
24998         mono_metadata_typedef_from_method () to lookup a typedef index from a
24999         field or method token.
25000         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
25001
25002 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
25003
25004         * metadata.c (mono_metadata_parse_field_type): Implement. 
25005         (do_mono_metadata_parse_type): Split engine from
25006         mono_metadata_parse_type, so that we can create smaller structures
25007         for things that just have one pointer to the MonoType (look at
25008         the MonoFieldType)
25009
25010 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
25011
25012         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
25013         as Jan Gray found out, it is incorrect. 
25014
25015 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
25016
25017         * assembly.c: Implement asssembly loading.  This loads an image
25018         and loads all the referenced assemblies.  Come to think of it, we
25019         could always do lazy loading of the assemblies. 
25020
25021         * image.c (mono_image_open): Keep loaded images in a hashtable.
25022
25023         * image.h (MonoImage): Add reference count.
25024
25025 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
25026
25027         * assembly.c (mono_assembly_open): Keep track of the file name in
25028         case the assembly has no ASSEMBLY table.
25029
25030         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
25031         from get.c here.
25032
25033 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
25034
25035         * metadata.c, metadata.h: decode local vars in method header
25036         parse function. Change callers accordingly.
25037
25038 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
25039
25040         * metadata.h, cil-coff.h: protect against multiple inclusion.
25041         Added some new structures to hold information decoded from metadata:
25042         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
25043         and relevant decoding/free functions.
25044         * metadata.c: implement decoding functions. Add warning for out of bounds
25045         index in mono_metadata_locate(). Implement mono_get_method () to retreive
25046         all the info about a method signature and invocation. Remove check on
25047         uninitialized local var in parse_mh() and fix memory leak.
25048
25049 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
25050
25051         * metadata.h: More macros.
25052
25053         * tokentype.h: New file.
25054
25055 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
25056
25057         * assembly.c: added a consistency check and initialize
25058         some structures with g_new0().
25059         * metadata.c: fixed a couple more bugs in table size computation
25060         and add other checks for out-of bound access to metadata.
25061
25062 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
25063
25064         * metatada.c: fix bugs computing table sizes. Spew a
25065         warning when index in string heap is out of bounds.
25066
25067 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
25068
25069         * metadata.h: Add a couple of macros to manipulate tokens. 
25070
25071 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
25072
25073         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
25074         cli_section_tables).
25075
25076 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
25077
25078         * metadata.c (mono_metadata_user_string): New function, provides
25079         access to the UserString heap. 
25080
25081 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
25082
25083         * metadata.c: Add inline documentation.
25084
25085 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
25086
25087         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
25088         files. 
25089
25090 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
25091
25092         * typeattr.h: New file, TypeAttribute flags. 
25093
25094 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
25095
25096         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
25097         mono_assembly_ensure_section): Section loading code.
25098         (load_section_tables): Load the sections.
25099
25100         * mono/metadata/metadata.c (mono_metadata_locate_token,
25101         mono_metadata_locate): Functions to locate the information
25102         definition given a token or a table and an index.
25103         (mono_metadata_compute_table_bases): New.
25104         (compute_size): New function to compute the sizes of the various
25105         tables.
25106
25107         * mono/metadata/metadata.h: Finish listing the different index
25108         types. 
25109
25110         * mono/metadata/pedump.c: Improve to dump new information.
25111
25112 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
25113
25114         * mono/metadata/metadata.c: Entered all the tables matching
25115         Beta2. 
25116
25117         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
25118
25119
25120